Centos7构建HA集群教学内容Word文件下载.docx
《Centos7构建HA集群教学内容Word文件下载.docx》由会员分享,可在线阅读,更多相关《Centos7构建HA集群教学内容Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
二、集群环境准备
两台机器启动PCSD
systemctlstartpcsd.service
systemctlenablepcsd.service
两台机器passwdhacluster
输入同一个密码hacluster
配置节点之间的相互认证
pcsclusterauthnode01node02
[root@node01~]#pcsclusterauthnode01node02
Username:
hacluster
Password:
node01:
Authorized
node02:
出现以下显示表示认证成功。
[root@node02~]#pcsclusterauthnode01node02
Alreadyauthorized
各节点之间时间同步
在node1和node2分别进行时间同步,可以使用ntp实现。
[root@node1~]#ntpdate172.16.0.1//172.16.0.1为时间服务器(若无时间服务器手动调整时间也可以)
三、集群创建
以nascluster为本集群的名称。
[root@node01~]#pcsclustersetup--namenasclusternode01node02
Shuttingdownpacemaker/corosyncservices...
Redirectingto/bin/systemctlstoppacemaker.service
Redirectingto/bin/systemctlstopcorosync.service
Killinganyremainingservices...
Removingallclusterconfigurationfiles...
Succeeded
pcs在执行以上命令时会生产corosync.conf及修改cib.xml文件,corosync.conf问corosync的配置文件,cib.xml为pacemaker的配置文件。
这两个配置文件是集群的核心配置,重装系统时建议做好这两个配置文件的备份。
开启集群
pcsclusterstart--all开启集群
pcsclusterenable--all设置集群自动启动
pcsclusterstatus查看集群状态
当有半数以上的节点在线时,这个集群就认为自己拥有法定人数了,是“合法”的,换而言之就是下面的公式:
total_nodes<
2*active_nodes,也就是说假设集群中有4个节点,但是活动节点有3个,4<
2*3,即是合法的集群,如果活动节点有2个,4=2*2不能满足total_nodes<
2*active_nodes了,这个集群就非法了。
因此在双节点的集群中只有当两者都在线时才是合法的的这个规则会让“双节点集群”毫无意义,但是我们可以控制Pacemaker发现集群达不到法定人数时候的行为。
简单来说,我们告诉集群忽略它。
在两个节点的情况下设置以下值
pcspropertysetno-quorum-policy=ignore
集群故障时候服务迁移
pcsresourcedefaultsmigration-threshold=1
查看集群状态
[root@node01~]#pcsclusterstatus
ClusterStatus:
Lastupdated:
TueSep1606:
35:
312014
Lastchange:
242014viacrmdonnode02
Stack:
corosync
CurrentDC:
node02
(2)-partitionwithquorum
Version:
1.1.10-29.el7-368c726
2Nodesconfigured
0Resourcesconfigured
PCSDStatus:
node01:
Online
node02:
查看集群成员
[root@node01~]#corosync-cmapctl|grepmembers
runtime.totem.pg.mrp.srp.members.1.config_version(u64)=0
runtime.totem.pg.mrp.srp.members.1.ip(str)=r(0)ip(192.168.102.1)
runtime.totem.pg.mrp.srp.members.1.join_count(u32)=1
runtime.totem.pg.mrp.srp.members.1.status(str)=joined
runtime.totem.pg.mrp.srp.members.2.config_version(u64)=0
runtime.totem.pg.mrp.srp.members.2.ip(str)=r(0)ip(192.168.102.2)
runtime.totem.pg.mrp.srp.members.2.join_count(u32)=1
runtime.totem.pg.mrp.srp.members.2.status(str)=joined
查看成员信息
[root@node01~]#pcsstatuscorosync
Membershipinformation
----------------------
NodeidVotesName
11node01(local)
21node02
查看XML
[root@node01~]#pcsclustercib
检查配置文件,发现提示没有STONITH设备。
[root@node01~]#crm_verify-L-V
error:
unpack_resources:
Resourcestart-updisabledsincenoSTONITHresourceshavebeendefined
EitherconfiguresomeordisableSTONITHwiththestonith-enabledoption
NOTE:
ClusterswithshareddataneedSTONITHtoensuredataintegrity
Errorsfoundduringcheck:
confignotvalid
暂时关闭stonish,后面再详细讲讲stonish的配置。
pcspropertysetstonith-enabled=false
配置集群IP
pcsresourcecreatevipocf:
heartbeat:
IPaddr2ip=192.168.102.10cidr_netmask=24opmonitorinterval=30s
vip为自定义的一个集群IP的名称,监控时间为30S。
测试浮动IP地址在集群中能否正常切换:
停node01的集群服务pcsclusterstopnode01
在node02上查看状态
[root@node02~]#pcsstatus
Clustername:
nascluster
Lastupdated:
TueSep1607:
28:
332014
Lastchange:
26:
412014viacibadminonnode01
Stack:
CurrentDC:
Version:
2Nodesconfigured
1Resourcesconfigured
Online:
[node02]
OFFLINE:
[node01]
Fulllistofresources:
vip(ocf:
:
IPaddr2):
Startednode02##此条表示vip在node02上执行了
DaemonStatus:
corosync:
active/enabled
pacemaker:
pcsd:
active/disabled
在node01恢复后,为防止node02资源迁回node01(迁来迁去对还是会对业务有一定影响)
pcsresourcedefaultsresource-stickiness=100
pcsresourcedefaults
四、创建GFS2文件系统
mkfs.gfs2-plock_dlm-j2-tnascluster:
nas/dev/my_vg/gfsdata
配置dlm锁监控时间
pcsclustercibdlm_cfg##由于cib.xml非常重要,为避免出错不建议直接修改,故生产一个dlm_cfg文件,将配置写入dlm_cfg文件后,再将dlm_cfg写入cib.xml中。
pcs-fdlm_cfgresourcecreatedlmocf:
pacemaker:
controldopmonitorinterval=60s
pcs-fdlm_cfgresourceclonedlmclone-max=2clone-node-max=1
pcs-fdlm_cfgresourceshow
pcsclustercib-pushdlm_cfg
普及一下dlm锁的知识:
DistributedLockManager,简称DLM,是一个分布式锁管理器,它是RHCS的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制。
DLM运行在每个节点上,GFS通过锁管理器的机制来同步访问文件系统的元数据。
CLVM通过锁管理器来同步更新数据到LVM卷和卷组。
DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大提高了处理性能。
同时,DLM避免了单个节点失败需要整体恢复的性能瓶颈。
另外,DLM的请求是本地的,不需要网络请求,因此请求会立即生效。
最后,DLM通过分层机制,可以实现多个锁空间的并行锁模式。
查看状态
[root@node01nas]#pcsstatus
48:
092014
44:
082014viacibadminonnode01
3Resourcesconfigured
[node01node02]
Startednode02
CloneSet:
dlm-clone[dlm]
Started:
[node01node02]##DLM的状态
五、stonith配置
查看本系统支持的fence设备
pcsstonithlist
查看即将要使用的fence设备相关信息
pcsstonithdescribefence_ilo4
由于服务器是HPDL380GEN8的,支持ILO4,但是在实际配置中采用fence_ilo4却发现怎么也不通,manfence_ilo4发现fence_ipmilan也可以配置ilo4的FENCE设备,但是必须要加lanplus="
true"
参数。
pcsclustercibstonith_cfg##生产初始配置文件stonith_cfg
pcs-fstonith_cfgstonithcreateipmi-fence-node01fence_ipmilanparmslanplus="
pcmk_host_list="
node01"
pcmk_host_check="
static-list"
action="
reboot"
ipaddr="
192.168.103.1"
login=USERIDpasswd=passwordopmonitorinterval=60s
pcs-fstonith_cfgstonithcreateipmi-fence-node02fence_ipmilanparmslanplus="
node02"
192.168.103.2"
解释:
创建一个名为ipmi-fence-node01的fence设备名称用于建node01的fence,pcmk_host_check="
的功能是将node01与192.168.103.1对应,后面login=USERIDpasswd=passwordopmonitorinterval=60s不再解释。
pcs-fstonith_cfgstonith
检查stonith_cfg中stonith配置信息
pcs-fstonith_cfgpropertysetstonith-enabled=true上文关闭了stonish,现在开启stonish
pcs-fstonith_cfgproperty
检查stonith_cfg中stonith是否已经开启
pcsclustercib-pushstonith_cfg将stonith_cfg写入cib.xml
node02上测试FENCE是否成功stonith_admin--rebootnode01
node01上测试FENCE是否成功stonith_admin--rebootnode02
pcsclusterstandbynode01将node01业务VIP迁移到node02上测试集群是否正常。
在集群所有节点重启后发现gfs的文件系统无法自动挂载,定义了fstab也不行,经过分析发现系统开机时候执行了pcsclusterstart,而且很快就返回启动成功的结果,但是系统日志里面显示仍然还启动完成,考虑到系统进入系统之后集群有可能还没启动完成,所有自然无法挂载gfs的文件系统。
如果无法自动挂载,我自己编写了一个循环挂载的脚本。
供参考。
编辑脚本
mountnas.sh
#!
/bin/bash
i=1
while(($i<
50))
do
mount|grepnas
if[$?
=1];
thenmount/dev/my_vg/gfsdata/nas
elseexit
fi
sleep3
done
chmod777/etc/rc.localcentos7还需要给rc.local加个权限,要不然开机不会执行rc.local
在/etc/rc.local
加入bash/mountnas.sh
六、配置多路心跳
在rhcs中,可以配置多路心跳,一路将fence作为心跳,一路将网络作为心跳,在corosyncpacemaker的集群中,找了国内外很多技术文章,均未做相关描述的。
主要是因为corosyncpacemaker的集群相对来说已经很可靠,在未配置多路心跳之前将业务网卡DOWN后,发现
node02的集群马上失效,集群IP立即切换至node01上,未出现脑裂的情况。
作为自己研究,尝试了再配置了一个心跳。
在/etc/corosync.conf中,毕竟corosync管理心跳,所以只有在它里面想办法了,在centos7之前的corosync.conf配置中,会定义interface{}作为多个网络,但是在centos7中经过PCS统一管理后,经过测试发现pacemaker只认nodelist{}作为网络,难道这又是一个变动?
在totem{}
定义:
rrp_mode:
passive#默认为none,修改为passive才可以支持两个网段
nodelist{
node{
ring0_addr:
node01
test01-test01为第二个心跳
}
node02
test02-test02为第二个心跳
记得修改host表。
重启集群即可生效,目前node01,node02对应192.168.102.0网段,test01test02对应192.168.103.0网段,同时可以在192.168.103.0网段上再新建一个业务IP,
在配置集群IP之前需要对test01test02配置认证。
[root@node01~]#pcsclusterauthtest01test02
test01:
test02:
[root@node02~]#pcsclusterauthtest01test02
pcsresourcecreatetestipocf:
IPaddr2ip=192.168.103.10cidr_netmask=24opmonitorinterval=30s注意testip与上文的vip已经名字不一样,两个集群IP的名字不能一致。
七、配置集群应用
以apache为例:
apache安装过程略。
pcsresourcecreateWebocf:
apacheconfigfile=/etc/httpd/conf/httpd.confstatusurl="
http:
//localhost/server-status"
opmonitorinterval=1min
pcsstatus查看apache状态,
pcsconstraintcolocationaddWebvipINFINITY将apache与vip绑定在同一个节点上。
pcsconstraintordervipthenWeb,指定集群IP先启动,然后再启动apache
pcsconstraintlocationWebprefersnode01=200指定node01优先启动apache
crm_simulate-sL查看资源黏性值,集群业务优先在资源黏性值高的节点上运行。
Currentclusterstatus:
vip(ocf:
Startednode01
Web(ocf:
apache):
Allocationscores:
native_color:
vipallocationscoreonnode01:
200
vipallocationscoreonnode02:
50