CENTOS 7构建HA集群
更新时间:2024-05-07 18:46:01 阅读量: 综合文库 文档下载
- centos7推荐度:
- 相关推荐
CENTOS7 构建HA集群
作者:linjiang2718
2014-11-10
CENTOS6 上支持的RHCS组件包主要有cman(心跳管理)、luci+ricci(配置工具)、rgmanager(资源管理),通过图形化配置相当简单,但是自CENTOS7开始,系统已经不再集成RHCS套件,并且在rpmfind上找不到支持centos7的RHCS组件包,在CENTOS7中默认采用corosync(心跳管理)、pacemaker(资源管理)、pcs(配置工具)同样可以构建HA集群,配置方法较之前有很大区别,但是原理相似。
一、系统环境配置
1.1、修改名称
hostnamectl set-hostname node01
1.2两台机器修改关闭防火墙、SELINUX、配置IP、修改HOSTS 禁止防火墙和selinux
# systemctl disable firewalld # systemctl stop firewalld 修改/etc/sysconfig/selinux
确保SELINUX=disabled,然后执行setenforce 0 或者reboot服务器以生效
设置防火墙规则(如果关闭防火墙则不用配置)
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability 配置IP地址及网关、DNS
vi /etc/sysconfig/network-scripts/ifcfg-eth0 #编辑配置文件,添加修改以下内容 BOOTPROTO=static #启用静态IP地址 ONBOOT=yes #开启自动启用网络连接 IPADDR=192.168.102.1 #设置IP地址 NETMASK=255.255.255.0 #设置子网掩码 GATEWAY=192.168.102.250 #设置网关 DNS1=8.8.8.8 #设置主DNS DNS2=8.8.4.4 #设置备DNS IPV6INIT=no #禁止IPV6 配置HOSTS,两边一样。
[root@node01 ~]# cat /etc/hosts 192.168.102.1 node01 192.168.102.2 node02
192.168.102.10 vip #集群IP
二、集群环境准备
两台机器启动PCSD
systemctl start pcsd.service systemctl enable pcsd.service
两台机器passwd hacluster 输入同一个密码hacluster
配置节点之间的相互认证
pcs cluster auth node01 node02
[root@node01 ~]# pcs cluster auth node01 node02 Username: hacluster Password:
node01: Authorized node02: Authorized
出现以下显示表示认证成功。
[root@node02 ~]# pcs cluster auth node01 node02 node01: Already authorized node02: Already authorized
各节点之间时间同步
在node1和node2分别进行时间同步,可以使用ntp实现。
[root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器(若无时间服务器手动调整时间也可以)
三、集群创建
以nascluster为本集群的名称。
[root@node01 ~]# pcs cluster setup --name nascluster node01 node02 Shutting down pacemaker/corosync services...
Redirecting to /bin/systemctl stop pacemaker.service Redirecting to /bin/systemctl stop corosync.service Killing any remaining services...
Removing all cluster configuration files... node01: Succeeded node02: Succeeded
pcs在执行以上命令时会生产corosync.conf及修改cib.xml文件,corosync.conf问corosync的配置文件,cib.xml为pacemaker的配置文件。这两个配置文件是集群的核心配置,重装系统时建议做好这两个配置文件的备份。 开启集群
pcs cluster start --all 开启集群
pcs cluster enable --all 设置集群自动启动 pcs cluster status 查看集群状态
当有半数以上的节点在线时,这个集群就认为自己拥有法定人数了,是“合法”的,换而言之就是下面的公式: total_nodes < 2 * active_nodes,也就是说假设集群中有4个节点,但是活动节点有3个,4<2*3,即是合法的集群,如果活动节点有2个,4=2*2不能满足total_nodes < 2 * active_nodes了,这个集群就非法了。
因此在双节点的集群中只有当两者都在线时才是合法的的这个规则会让“双节点集群”毫无意义,但是我们可以控制Pacemaker发现集群达不到法定人数时候的行为。简单来说,我们告诉集群忽略它。
在两个节点的情况下设置以下值
pcs property set no-quorum-policy=ignore 集群故障时候服务迁移
pcs resource defaults migration-threshold=1
查看集群状态
[root@node01 ~]# pcs cluster status Cluster Status:
Last updated: Tue Sep 16 06:35:31 2014
Last change: Tue Sep 16 06:35:24 2014 via crmd on node02 Stack: corosync
Current DC: node02 (2) - partition with quorum Version: 1.1.10-29.el7-368c726 2 Nodes configured 0 Resources configured
PCSD Status:
node01: Online node02: Online
查看集群成员
[root@node01 ~]# corosync-cmapctl |grep members
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 ~]# pcs status corosync
Membership information
----------------------
Nodeid Votes Name
1 1 node01 (local) 2 1 node02
查看XML
[root@node01 ~]# pcs cluster cib
检查配置文件,发现提示没有STONITH设备。 [root@node01 ~]# crm_verify -L -V
error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
暂时关闭stonish,后面再详细讲讲stonish的配置。 pcs property set stonith-enabled=false
配置集群IP
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.102.10 cidr_netmask=24 op monitor interval=30s
vip为自定义的一个集群IP的名称,监控时间为30S。
测试浮动IP地址在集群中能否正常切换: 停node01的集群服务pcs cluster stop node01 在node02上查看状态
[root@node02 ~]# pcs status Cluster name: nascluster
Last updated: Tue Sep 16 07:28:33 2014
Last change: Tue Sep 16 07:26:41 2014 via cibadmin on node01 Stack: corosync
Current DC: node02 (2) - partition with quorum Version: 1.1.10-29.el7-368c726 2 Nodes configured 1 Resources configured
Online: [ node02 ] OFFLINE: [ node01 ]
Full list of resources:
vip (ocf::heartbeat:IPaddr2): Started node02 ##此条表示vip在node02上执行
了
PCSD Status:
node01: Online node02: Online
Daemon Status:
corosync: active/enabled pacemaker: active/enabled pcsd: active/disabled
在node01恢复后,为防止node02资源迁回node01(迁来迁去对还是会对业务有一定影响) pcs resource defaults resource-stickiness=100 pcs resource defaults
四、创建GFS2文件系统
mkfs.gfs2 -p lock_dlm -j 2 -t nascluster:nas /dev/my_vg/gfsdata 配置dlm锁监控时间
pcs cluster cib dlm_cfg ##由于cib.xml非常重要,为避免出错不建议直接修改,故生产一个dlm_cfg文件,将配置写入dlm_cfg文件后,再将dlm_cfg写入cib.xml中。 pcs -f dlm_cfg resource create dlm ocf:pacemaker:controld op monitor interval=60s pcs -f dlm_cfg resource clone dlm clone-max=2 clone-node-max=1 pcs -f dlm_cfg resource show pcs cluster cib-push dlm_cfg 普及一下dlm锁的知识:
Distributed Lock Manager,简称DLM,是一个分布式锁管理器,它是RHCS的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制。DLM运行在每个节点上,GFS通过锁管理器的机制来同步访问文件系统的元数据。CLVM通过锁管理器来同步更新数据到LVM卷和卷组。
DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大提高了处理性能。同时,DLM避免了单个节点失败需要整体恢复的性能瓶颈。另外,DLM的请求是本地的,不需要网络请求,因此请求会立即生效。最后,DLM通过分层机制,可以实现多个锁空间的并行锁模式。 查看状态
[root@node01 nas]# pcs status Cluster name: nascluster
Last updated: Tue Sep 16 07:48:09 2014
Last change: Tue Sep 16 07:44:08 2014 via cibadmin on node01 Stack: corosync
Current DC: node02 (2) - partition with quorum Version: 1.1.10-29.el7-368c726
2 Nodes configured 3 Resources configured
Online: [ node01 node02 ]
Full list of resources:
vip (ocf::heartbeat:IPaddr2): Started node02 Clone Set: dlm-clone [dlm]
Started: [ node01 node02 ] ##DLM的状态
PCSD Status:
node01: Online node02: Online
Daemon Status:
corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
五、stonith配置
查看本系统支持的fence设备 pcs stonith list
查看即将要使用的fence设备相关信息 pcs stonith describe fence_ilo4
由于服务器是HP DL380 GEN8的,支持ILO4,但是在实际配置中采用fence_ilo4却发现怎么也不通,man fence_ilo4发现fence_ipmilan 也可以配置ilo4的FENCE设备,但是必须要加lanplus=\参数。
pcs cluster cib stonith_cfg ##生产初始配置文件stonith_cfg
pcs -f stonith_cfg stonith create ipmi-fence-node01 fence_ipmilan parms lanplus=\pcmk_host_list=\pcmk_host_check=\action=\ipaddr=\
pcs -f stonith_cfg stonith create ipmi-fence-node02 fence_ipmilan parms lanplus=\pcmk_host_list=\pcmk_host_check=\action=\pcmk_host_list=\ipaddr=\login=USERID passwd=password op monitor interval=60s
解释:创建一个名为ipmi-fence-node01的fence设备名称用于建node01的fence,pcmk_host_check=\的功能是将node01与192.168.103.1对应,后面login=USERID passwd=password op monitor interval=60s不再解释。
pcs -f stonith_cfg stonith
检查stonith_cfg中stonith配置信息
pcs -f stonith_cfg property set stonith-enabled=true 上文关闭了stonish,现在开启stonish pcs -f stonith_cfg property
检查stonith_cfg中stonith是否已经开启
pcs cluster cib-push stonith_cfg 将stonith_cfg写入cib.xml
node02上测试FENCE是否成功stonith_admin --reboot node01 node01上测试FENCE是否成功stonith_admin --reboot node02
pcs cluster standby node01 将node01业务VIP迁移到node02上测试集群是否正常。
在集群所有节点重启后发现gfs的文件系统无法自动挂载,定义了fstab也不行,经过分析发现系统开机时候执行了pcs cluster start,而且很快就返回启动成功的结果,但是系统日志里面显示仍然还启动完成,考虑到系统进入系统之后集群有可能还没启动完成,所有自然无法挂载gfs的文件系统。
如果无法自动挂载,我自己编写了一个循环挂载的脚本。供参考。 编辑脚本 mountnas.sh #!/bin/bash i=1
while(($i<50)) do
mount |grep nas
if [ $? = 1 ];then mount /dev/my_vg/gfsdata /nas else exit fi
sleep 3
done
chmod 777 /etc/rc.local centos7 还需要给rc.local加个权限,要不然开机不会执行rc.local 在/etc/rc.local
加入bash /mountnas.sh
六、配置多路心跳
在rhcs中,可以配置多路心跳,一路将fence作为心跳,一路将网络作为心跳,在corosync pacemaker的集群中,找了国内外很多技术文章,均未做相关描述的。主要是因为corosync pacemaker的集群相对来说已经很可靠,在未配置多路心跳之前将业务网卡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
ring0_addr:test01 -test01为第二个心跳 } node{
ring0_addr:node02
ring0_addr:test02 -test02为第二个心跳 }
}
记得修改host表。
重启集群即可生效,目前node01,node02对应192.168.102.0网段,test01 test02对应192.168.103.0网段,同时可以在192.168.103.0网段上再新建一个业务IP, 在配置集群IP之前需要对test01 test02配置认证。 [root@node01 ~]# pcs cluster auth test01 test02 Username: hacluster Password:
test01: Authorized test02: Authorized
出现以下显示表示认证成功。
[root@node02 ~]# pcs cluster auth test01 test02 test01: Already authorized test02: Already authorized
配置集群IP
pcs resource create testip ocf:heartbeat:IPaddr2 ip=192.168.103.10 cidr_netmask=24 op monitor interval=30s 注意testip与上文的vip已经名字不一样,两个集群IP的名字不能一致。
七、配置集群应用
以apache为例: apache安装过程略。
pcs resource create Web ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl=\
pcs status查看apache状态,
pcs constraint colocation add Web vip INFINITY 将apache与vip绑定在同一个节点上。 pcs constraint order vip then Web,指定集群IP先启动,然后再启动apache pcs constraint location Web prefers node01=200 指定node01优先启动apache
crm_simulate -sL 查看资源黏性值,集群业务优先在资源黏性值高的节点上运行。 Current cluster status: Online: [ node01 node02 ]
vip (ocf:heartbeat:IPaddr2): Started node01 Web (ocf:heartbeat:apache): Started node01 Allocation scores:
native_color: vip allocation score on node01: 200 native_color: vip allocation score on node02: 50 native_color: Web allocation score on node01: 200 native_color: Web allocation score on node02: 50 Transition Summary:
手动切换集群资源
以上配置由集群自动分配资源到node01、node02上,有时候为了维护,必须手动迁移资源到指定节点上。
# pcs constraint location Web prefers node01=INFINITY # pcs constraint --full 查看资源状态
# pcs constraint remove location-Web-node01-INFINITY 将控制权还给集群
正在阅读:
CENTOS 7构建HA集群05-07
劳务分包合同11-16
兖州煤业财务风险探究-会计系毕业论文范文03-08
假如我是一条神奇的鱼作文400字06-25
风娃娃教学设计(精选多篇)09-26
结核病知识竞赛试题08-10
五年级上册语文第九课 西风胡杨教案10-30
民事模拟法庭案例剧本首例博客告博客案04-02
公安基础知识 简答题与论述题(海南)03-28
我喜欢的自行车作文500字07-01
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 集群
- 构建
- CENTOS
- 2018国家开放大学中国文学基础形成性考核答案
- 瑞明室外工程质量评估报告
- 小麦啤酒
- 新形势下统战工作存在的问题与思考
- 埋深大于3米承台基坑开挖施工方案(修改) - 图文
- 船舶与海洋工程毕业论文(四)完美版 - 图文
- 垃圾焚烧炉液压站HMI-PLC控制系统的设计
- 高强螺栓施工方案
- 人力资源管理作业
- 设计说明书(36页)
- 五年级数学下册,图形与几何,整理与复习
- XX市工商局关于两协会费收缴及使用情况说明
- 小学数学老师教学心得 用扑克牌游戏提高学生计算能力
- 单色图像识别单片机课程设计
- 关于开展乡(镇)村干部轮训的通知
- 念奴娇赤壁怀古说课稿
- 购买小产权房的流程
- 第06章AEB机械部分25(DOC)
- 高二生物选修班课时作业2-教师用卷
- 桥梁钢箱梁计算书