RHCS集群構(gòu)架及其安裝配置

2017年2月28日22:51:40 發(fā)表評(píng)論 7,389 ℃

RHCS構(gòu)架

corosync(cman)

1.4.5

2.3.0 (needle)

votequorum(投票功能)

pacemaker(rgmanager)

gfs:Global File System

gfs2:Global File System

ocfs2:Oracle Cluster File System

dlm:Distributed Lock Manager 分布式鎖管理器

gfs : google file system

LVM: Logical Volume Manager

cLVM:Cluster LVM

借助于HA的功能,將某節(jié)點(diǎn)對(duì)LVM操作通知給其它節(jié)點(diǎn)

CCS :Cluster configuration System

CMAN:/etc/cluster/cluster.conf

RHCS: Failover Domain

服務(wù):故障轉(zhuǎn)移域:Service

HA Server: VIP, httpd, Filesystem

配置文件管理、軟件分發(fā):puppet

批量管理工具

RHCS:luci/ricci

pcs

RHCS集群配置

HA:

node1 node1.magedu.com  172.16.100.6

steppingstone.magedu.com 172.16.100.100

前提:

1、時(shí)間同步;

2、名稱解析,且每個(gè)主機(jī)的主機(jī)名與其'uname -n'保持一致;

3、配置好每個(gè)節(jié)點(diǎn)的Yum;

RHCS: 

cman, rgmanager, system-config-cluster

RHCS: 

1、每個(gè)集群都有惟一集群名稱;

2、至少有一個(gè)fence設(shè)備;

3、至少應(yīng)該有三個(gè)節(jié)點(diǎn);兩個(gè)節(jié)點(diǎn)的場(chǎng)景中要使用qdisk;

兩個(gè)資源:

VIP

httpd

clusvcadm 命令

clusvcadm -r <grop> -m <member>

cman_tool 命令

cman_tool nodes 查看節(jié)點(diǎn)

ccs_tool lsnode

clustat命令

system-config-cluster 圖形配置

#ccs_tool create tcluster

#ccs_tool addfence meatware fence_manual

#ccs_tool addnode -v 1 -n 1 -f meatware node1.amd5.cn

#ccs_tool addnode -v 1 -n 2 -f meatware node2.amd5.cn

#ccs_tool addnode -v 1 -n 3 -f meatware node3.amd5.cn

#service cman start

RHCS集群配置

前提:

1)本配置共有三個(gè)測(cè)試節(jié)點(diǎn),分別node1.amd5.cn、node2.amd5.cn和node3.amd5.cn,相的IP地址分別為172.16.100.6、172.16.100.7和172.16.100.8;系統(tǒng)為rhel5.8 32bit;

2)集群服務(wù)為apache的httpd服務(wù);

3)提供web服務(wù)的地址為172.16.100.1;

4)為集群中的每個(gè)節(jié)點(diǎn)事先配置好yum源;

5) 額外提供了主機(jī)172.16.100.100做為跳板機(jī),以其為平臺(tái)實(shí)現(xiàn)對(duì)集群中各節(jié)點(diǎn)的管理;其主機(jī)名稱為stepping.amd5.cn;

一、準(zhǔn)備工作

為了配置一臺(tái)Linux主機(jī)成為HA的節(jié)點(diǎn),通常需要做出如下的準(zhǔn)備工作:

1.1 設(shè)定主機(jī)名稱解析

所有節(jié)點(diǎn)的主機(jī)名稱和對(duì)應(yīng)的IP地址解析服務(wù)可以正常工作,且每個(gè)節(jié)點(diǎn)的主機(jī)名稱需要跟"uname -n“命令的結(jié)果保持一致;因此,需要保證三個(gè)節(jié)點(diǎn)上的/etc/hosts文件均為下面的內(nèi)容:

172.16.100.6   node1.amd5.cn node1

172.16.100.7   node2.amd5.cn node2

172.16.100.8   node3.amd5.cn node3

為了使得重新啟動(dòng)系統(tǒng)后仍能保持如上的主機(jī)名稱,還分別需要在各節(jié)點(diǎn)執(zhí)行類似如下的命令:

Node1:

# sed -i 's@\(HOSTNAME=\).*@\1node1.amd5.cn@g'  /etc/sysconfig/network

# hostname node1.amd5.cn

Node2:

# sed -i 's@\(HOSTNAME=\).*@\1node2.amd5.cn@g' /etc/sysconfig/network

# hostname node2.amd5.cn

Node3:

# sed -i 's@\(HOSTNAME=\).*@\1node3.amd5.cn@g' /etc/sysconfig/network

# hostname node3.amd5.cn

1.2 管理機(jī)設(shè)定

后續(xù)的諸多設(shè)定,如rpm包安裝、配置文件修改等都需要在三個(gè)節(jié)點(diǎn)上同時(shí)進(jìn)行;為了便于實(shí)現(xiàn)此過程,我們這里提供了一臺(tái)跳板機(jī)172.16.100.100,其可以以基于密鑰認(rèn)證的方式分別與三個(gè)節(jié)點(diǎn)進(jìn)行通信。實(shí)際使用中,如果沒有專用的跳板機(jī),也可以以三個(gè)節(jié)點(diǎn)中的某節(jié)點(diǎn)來替代。

首先讓跳板機(jī)能以主機(jī)名稱與各節(jié)點(diǎn)進(jìn)行通信,此為非必須,僅為使用方便。在跳板機(jī)上建立/etc/hosts文件,內(nèi)容如下:

172.16.100.6   node1.amd5.cn node1

172.16.100.7   node2.amd5.cn node2

172.16.100.8   node3.amd5.cn node3

接著在跳板機(jī)上為ssh生成密鑰:

# ssh-keygen -t rsa -P '' 

其次生成的密鑰的公鑰傳輸至集群中的每個(gè)節(jié)點(diǎn):

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3

說明:如果不想使用跳板機(jī),后面演示過程中,但凡在跳板機(jī)上以循環(huán)方式執(zhí)行的命令均可以分別在各節(jié)點(diǎn)執(zhí)行的方式進(jìn)行。

二、集群安裝

RHCS的核心組件為cman和rgmanager,其中cman為基于openais的“集群基礎(chǔ)架構(gòu)層”,rgmanager為資源管理器。RHCS的集群中資源的配置需要修改其主配置文件/etc/cluster/cluster.xml實(shí)現(xiàn),這對(duì)于很多用戶來說是比較有挑戰(zhàn)性的,因此,RHEL提供了system-config-cluster這個(gè)GUI工具,其僅安裝在集群中的某一節(jié)點(diǎn)上即可,而cman和rgmanager需要分別安裝在集群中的每個(gè)節(jié)點(diǎn)上。這里選擇將此三個(gè)rpm包分別安裝在了集群中的每個(gè)節(jié)點(diǎn)上,這可以在跳板機(jī)上執(zhí)行如下命令實(shí)現(xiàn):

# for I in {1..3}; do ssh node$I 'yum -y install cman rgmanager system-config-cluster'; done

三、集群配置及其啟動(dòng)

3.1 為集群創(chuàng)建配置文件

RHCS的配置文件/etc/cluster/cluster.conf,其在每個(gè)節(jié)點(diǎn)上都必須有一份,且內(nèi)容均相同,其默認(rèn)不存在,因此需要事先創(chuàng)建,ccs_tool命令可以完成此任務(wù)。另外,每個(gè)集群通過集群ID來標(biāo)識(shí)自身,因此,在創(chuàng)建集群配置文件時(shí)需要為其選定一個(gè)集群名稱,這里假設(shè)其為tcluster。此命令需要在集群中的某個(gè)節(jié)點(diǎn)上執(zhí)行。

# ccs_tool create tcluster

查看生成的配置文件的內(nèi)容:

# cat /etc/cluster/cluster.conf

<?xml versi>

<cluster name="tcluster" config_versi>

  <clusternodes/>

  <fencedevices/>

  <rm>

    <failoverdomains/>

    <resources/>

  </rm>

</cluster>

ccs_tool命令用于在線更新CCS的配置文件,其有許多子命令,可以使用-h獲取其使用幫助及每個(gè)子命令的使用幫助。

3.2 為集群添加fence設(shè)備

一個(gè)RHCS集群至少需要一個(gè)fence設(shè)備,正常環(huán)境中,可以選擇將其配置到集群中來。這里為演示環(huán)境,沒有可用的fence設(shè)備,因此,選擇使用“manual fence”,即手動(dòng)fence。創(chuàng)建fence設(shè)備也需要使用ccs_tool命令進(jìn)行,其需要在集群中的某節(jié)點(diǎn)上執(zhí)行,而且需要與前面創(chuàng)建集群配置文件時(shí)所執(zhí)行的命令在同一個(gè)節(jié)點(diǎn)上進(jìn)行。

查看fence代理的名稱,可以通過查看cman安裝生成文件來實(shí)現(xiàn)。

# rpm -ql cman | grep /sbin/fence

/sbin/fence_ack_manual

/sbin/fence_apc

/sbin/fence_apc_snmp

/sbin/fence_bladecenter

/sbin/fence_brocade

/sbin/fence_bullpap

/sbin/fence_cisco_mds

/sbin/fence_cisco_ucs

/sbin/fence_drac

/sbin/fence_drac5

/sbin/fence_egenera

/sbin/fence_ifmib

/sbin/fence_ilo

/sbin/fence_ilo_mp

/sbin/fence_ipmilan

/sbin/fence_lpar

/sbin/fence_manual

/sbin/fence_mcdata

/sbin/fence_node

/sbin/fence_rhevm

/sbin/fence_rps10

/sbin/fence_rsa

/sbin/fence_rsb

/sbin/fence_sanbox2

/sbin/fence_scsi

/sbin/fence_scsi_test

/sbin/fence_tool

/sbin/fence_virsh

/sbin/fence_vixel

/sbin/fence_vmware

/sbin/fence_vmware_helper

/sbin/fence_vmware_soap

/sbin/fence_wti

/sbin/fence_xvm

/sbin/fence_xvmd

/sbin/fenced

這里為tcluster添加名為meatware的fence設(shè)備,其fence代理為fence-manual。

# ccs_tool addfence meatware fence-manaual

接著可以使用ccs_tool lsfence查看fence設(shè)備:

# ccs_tool lsfence

Name             Agent

meatware         fence-manaual

 

3.3 為集群添加節(jié)點(diǎn)

RHCS集群需要配置好各節(jié)點(diǎn)及相關(guān)的fence設(shè)備后才能啟動(dòng),因此,這里需要事先將各節(jié)點(diǎn)添加進(jìn)集群配置文件。每個(gè)節(jié)點(diǎn)在添加進(jìn)集群時(shí),需要至少為其配置node id(每個(gè)節(jié)點(diǎn)的id必須惟一)及相關(guān)的fence設(shè)備兩個(gè)屬性。ccs_tool的addnode子命令可以完成節(jié)點(diǎn)添加。例如將前面規(guī)劃的三個(gè)集群節(jié)點(diǎn)添加至集群中,可以使用如下命令實(shí)現(xiàn)。

 

# ccs_tool addnode -n 1 -f meatware node1.amd5.cn  

# ccs_tool addnode -n 2 -f meatware node2.amd5.cn 

# ccs_tool addnode -n 3 -f meatware node3.amd5.cn 

查看已經(jīng)添加完成的節(jié)點(diǎn)及相關(guān)信息:

# ccs_tool lsnode

 

Cluster name: tcluster, config_version: 5

 

Nodename                        Votes Nodeid Fencetype

node1.amd5.cn                   1    1    meatware

node2.amd5.cn                   1    2    meatware

node3.amd5.cn                   1    3    meatware

 

3.4 啟動(dòng)集群

RHCS集群會(huì)等待各節(jié)點(diǎn)都啟動(dòng)后方才進(jìn)入正常工作狀態(tài),因此,需要把集群各節(jié)點(diǎn)上的cman服務(wù)同時(shí)啟動(dòng)起來。這分別需要在各節(jié)點(diǎn)上執(zhí)行如下命令。

 

# /etc/rc.d/init.d/cman start

查看服務(wù)監(jiān)聽的端口,以驗(yàn)正服務(wù)啟動(dòng)狀況:

# netstat -tunlp | grep -E "ccsd|aisexec"

tcp        0      0 127.0.0.1:50006             0.0.0.0:*                   LISTEN      14544/ccsd          

tcp        0      0 0.0.0.0:50008               0.0.0.0:*                   LISTEN      14544/ccsd          

udp        0      0 172.16.100.6:5405           0.0.0.0:*                               14552/aisexec       

udp        0      0 172.16.100.6:5149           0.0.0.0:*                               14552/aisexec       

udp        0      0 239.192.110.162:5405        0.0.0.0:*                               14552/aisexec       

udp        0      0 0.0.0.0:50007               0.0.0.0:*                               14544/ccsd 

而后在各節(jié)點(diǎn)啟動(dòng)rgmanager服務(wù),這可以在跳板機(jī)上執(zhí)行如下命令實(shí)現(xiàn):

# for I in {1..3}; do ssh node$I '/etc/init.d/rgmanager start'; done

3.5 查看集群狀態(tài)信息

clustat命令可用于顯示集群成員信息、法定票數(shù)信息及服務(wù)相關(guān)信息。

# clustat 

Cluster Status for tcluster @ Mon May 13 12:06:53 2013

Member Status: Quorate

 Member Name                                                     ID   Status

 ------ ----                                                     ---- ------

 node1.amd5.cn                                                    1 Online, Local

 node2.amd5.cn                                                    2 Online

 node3.amd5.cn                                                    3 Online

cman_tool的status子命令則以當(dāng)前節(jié)點(diǎn)為視角來顯示集群的相關(guān)信息。

# cman_tool status

Version: 6.2.0

Config Version: 5

Cluster Name: tcluster

Cluster Id: 28212

Cluster Member: Yes

Cluster Generation: 12

Membership state: Cluster-Member

Nodes: 3

Expected votes: 3

Total votes: 3

Node votes: 1

Quorum: 2  

Active subsystems: 8

Flags: Dirty 

Ports Bound: 0 177  

Node name: node1.amd5.cn

Node ID: 1

Multicast addresses: 239.192.110.162 

Node addresses: 172.16.100.6 

cman_tool的nodes子命令則可以列出集群中每個(gè)節(jié)點(diǎn)的相關(guān)信息。

# cman_tool nodes

Node  Sts   Inc   Joined               Name

   1   M      4   2013-05-13 12:00:09  node1.amd5.cn

   2   M      8   2013-05-13 12:00:28  node2.amd5.cn

   3   M     12   2013-05-13 12:00:39  node3.amd5.cn

cman_tool的nodes子命令則可以列出集群中每個(gè)服務(wù)的相關(guān)信息。 

# cman_tool services

type             level name       id       state       

fence            0     default    00010001 none        

[1 2 3]

dlm              1     rgmanager  00020001 none        

[1 2 3]

四、配置集群服務(wù)

配置集群服務(wù)涉及到配置故障轉(zhuǎn)移域、服務(wù)及資源,這些需要手動(dòng)修改集群配置文件,或使用system-config-cluster這個(gè)GUI程序完成。

五、配置使用gfs2文件系統(tǒng)

這里假設(shè)集群節(jié)點(diǎn)均已經(jīng)正常登錄某iscsi target,本地正常映射了磁盤/dev/sdb,且創(chuàng)建分區(qū)/dev/sdb1和/dev/sdb2。

5.1 在集群節(jié)點(diǎn)上安裝gfs2-utils

以下命令在跳板機(jī)上執(zhí)行,實(shí)現(xiàn)在集群所有節(jié)點(diǎn)上統(tǒng)一部署安裝gfs2-utils并啟動(dòng)gfs2的服務(wù)

# for I in {1..3}; do ssh node$I 'yum -y install gfs2-utils; service gfs2 start'; done

在集群中的某節(jié)點(diǎn)上執(zhí)行如下命令,查看gfs2模塊的裝載情況:

# lsmod  | grep gfs

gfs2                  354825  1 lock_dlm

configfs               28625  2 dlm

5.2 gfs2相關(guān)命令行工具的使用

mkfs.gfs2為gfs2文件系統(tǒng)創(chuàng)建工具,其一般常用的選項(xiàng)有:

-b BlockSize:指定文件系統(tǒng)塊大小,最小為512,默認(rèn)為4096;

-J MegaBytes:指定gfs2日志區(qū)域大小,默認(rèn)為128MB,最小值為8MB;

-j Number:指定創(chuàng)建gfs2文件系統(tǒng)時(shí)所創(chuàng)建的日志區(qū)域個(gè)數(shù),一般需要為每個(gè)掛載的客戶端指定一個(gè)日志區(qū)域;

-p LockProtoName:所使用的鎖協(xié)議名稱,通常為lock_dlm或lock_nolock之一;

-t LockTableName:鎖表名稱,一般來說一個(gè)集群文件系統(tǒng)需一個(gè)鎖表名以便讓集群節(jié)點(diǎn)在施加文件鎖時(shí)得悉其所關(guān)聯(lián)到的集群文件系統(tǒng),鎖表名稱為clustername:fsname,其中的clustername必須跟集群配置文件中的集群名稱保持一致,因此,也僅有此集群內(nèi)的節(jié)點(diǎn)可訪問此集群文件系統(tǒng);此外,同一個(gè)集群內(nèi),每個(gè)文件系統(tǒng)的名稱必須惟一;

因此,若要在前面的/dev/sdb1上創(chuàng)建集群文件系統(tǒng)gfs2,可以使用如下命令:

# mkfs.gfs2 -j 3 -p lock_dlm -t tcluster:sdb1 /dev/sdb1

六、配置使用cLVM(集群邏輯卷)

在RHCS集群節(jié)點(diǎn)上安裝lvm2-cluster:

# for I in {1..3}; do ssh node$I 'yum -y install lvm2-cluster;'; done

在RHCS的各節(jié)點(diǎn)上,為lvm啟用集群功能:

# for I in {1..3}; do ssh node$I 'lvmconf --enable-cluster'; done

而后,為RHCS各節(jié)點(diǎn)啟動(dòng)clvmd服務(wù):

# for I in {1..3}; do ssh node$I 'service clvmd start'; done

如果需要?jiǎng)?chuàng)建物理卷、卷組和邏輯卷,使用管理單機(jī)邏輯卷的相關(guān)命令即可;比如,將/dev/sdb2創(chuàng)建為物理卷:

# pvcreate /dev/sdb2

# pvs

此時(shí),在另外的其它節(jié)點(diǎn)上也能夠看到剛剛創(chuàng)建的物理卷。

創(chuàng)建卷組和邏輯卷:

# vgcreate clustervg /dev/sdb2

# lvcreate -L 2G -n clusterlv clustervg

七、gfs2的其它管理工具

7.1 gfs2-tool

查看掛載至/mydata目錄上的某gfs2文件系統(tǒng)上的日志相關(guān)信息:

# gfs2-tool journals /mydata

7.2 gfs2-jadd

為掛載至/mydata的gfs2文件系統(tǒng)添加新的日志區(qū)域:

# gfs2_jadd -j 1 /mydata

7.3 gfs2-grow

如果需要擴(kuò)展邏輯卷,其方式與普通邏輯卷相同,只是gfs2文件系統(tǒng)的擴(kuò)展,則需要gfs2_grow進(jìn)行,其需要以掛載點(diǎn)為參數(shù):

# gfs2-grow /mydata

7.4 gfs2-tool gettune

附:

Red Hat Resource Group Manager provides high availability of critical server applications in the event of planned or unplanned system downtime.

創(chuàng)建一個(gè)GFS文件系統(tǒng):

需要提供的信息:

1、鎖類型:

 lock_nolock

 lock_dlm

2、鎖文件的名字,通常即文件系統(tǒng)名

 cluster_name:fs_name

3、日志的個(gè)數(shù),通常一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)日志文件,但建議提供比節(jié)點(diǎn)數(shù)更多的日志數(shù)目,以提供冗余;

4、日志文件大小

5、文件系統(tǒng)大小

Syntax: gfs_mkfs -p lock_dlm -t ClusterName:FSName -j Number -b block_size -J journal_size BlockDevice

如:

# gfs_mkfs -p lock_dlm -t gfscluster:gfslv -j 5 /dev/vg0/gfslv

 

可以通過其對(duì)應(yīng)掛載點(diǎn)查看gfs文件系統(tǒng)屬性信息;

# gfs_tool df /mount_point

掛載GFS文件系統(tǒng):

mount -o StdMountOpts,GFSOptions -t gfs DEVICE MOUNTPOINT

前提:掛載GFS文件的主機(jī)必須是對(duì)應(yīng)集群中的節(jié)點(diǎn);

掛載GFS文件時(shí)有如下常用選項(xiàng)可用:

lockproto=[locl_dlm,lock_nolock]

locktable=clustername:fsname

upgrade # GFS版本升級(jí)時(shí)有用

acl

如果不想每一次啟用GFS時(shí)都得指定某選項(xiàng),也可以通過類似如下命令為其一次性指定:

# gfs_tool margs "lockproto=lock_dlm,acl"

載入相應(yīng)的gfs模塊,并查看lv是否成功

 

# modprobe gfs

# modprobe gfs2

# chkconfig gfs on

# chkconfig gfs2 on

 

# chkconfig clvmd on

# /etc/init.d/gfs restart

# /etc/init.d/gfs2 restart

# /etc/init.d/clvmd restart

 

# lvscan

lvmconf --enale-cluster

配置故障切換域

故障切換域是一個(gè)命名的集群節(jié)點(diǎn)子集,它可在節(jié)點(diǎn)失敗事件中運(yùn)行集群服務(wù)。故障切換域有以下特征:

無限制 — 允許您為在子集指定首選成員子集,但分配給這個(gè)域名的集群服務(wù)可在任意可用成員中運(yùn)行。

限制 — 允許您限制可運(yùn)行具體集群服務(wù)的成員。如果在限制故障切換域中沒有可用成員,則無法啟動(dòng)集群服務(wù)(手動(dòng)或者使用集群軟件均不可行)。

無序 — 當(dāng)將一個(gè)集群服務(wù)分配給一個(gè)無序故障切換域時(shí),則可從可用故障切換域成員中隨機(jī)選擇運(yùn)行集群服務(wù)的成員,沒有優(yōu)先順序。

有序的 — 可讓您在故障切換域的成員間指定順序。該列表頂端的成員是首選成員,接下來是列表中的第二個(gè)成員,依此類推。

故障恢復(fù) — 允許您指定在故障切換域中的服務(wù)是否應(yīng)該恢復(fù)到節(jié)點(diǎn)失敗前最初運(yùn)行的節(jié)點(diǎn)。配置這個(gè)特性在作為有序故障切換域一部分節(jié)點(diǎn)重復(fù)失敗的環(huán)境中很有幫助。在那種情況下,如果某個(gè)節(jié)點(diǎn)是故障切換域中的首選節(jié)點(diǎn),在可能在首選節(jié)點(diǎn)和其它節(jié)點(diǎn)間重復(fù)切換和恢復(fù)某個(gè)服務(wù),從而不會(huì)對(duì)性能產(chǎn)生嚴(yán)重影響。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: