corosync+pacemaker实现高可用(HA)集群(一)
????重要概念
在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云
资源、服务与主机(又称节点)的关系:
资源类型
target-role:即资源刚配置完成时是否启动的属性
no-quorum-policy:当集群故障,分裂为多个部分(称为"集群分区"),当某一集群分区因无法满足"法定人数原则(即quorum)"而无法选举出主节点时,此分区中节点上的资源可作如下处理
资源转移的方式
rgmanager:
pacemaker:利用资源约束的机制,有如下3种类型
HA集群的工作模型
?
?
配置部署HA集群
前期准备
各节点(即主机)的主机名与"uname -n"的结果保持一致:
? ? ? 1 | # Node1+Node2: vi?/etc/hosts 172.16.21.16?? node1.lamp.com node1 172.16.21.17?? node2.lamp.com node2 # Node1: sed?-i?‘s@\(HOSTNAME=\).*@\1node1.lamp.com@g‘??/etc/sysconfig/network hostname?node1.lamp.com # Node2: sed?-i?‘s@\(HOSTNAME=\).*@\1node2.lamp.com@g‘?/etc/sysconfig/network hostname?node2.lamp.com |
各节点时间保持一致:
? | # 添加计划任务,与NTP时间服务器保持一致即可 # Node1+Node2: crontab?-e # Dscrip: Time Sync # CTime: 2014.04.19 */3?* * * *?/usr/sbin/ntpdate?172.16.0.1 &>/dev/null |
各节点间可基于密钥进行SSH通信,而无需密码:
# Node1:
ssh-keygen -t rsa
ssh-copy-id?-i ~/.ssh/id_rsa.pub root@node2
# Node2:
ssh-keygen -t rsa
ssh-copy-id?-i ~/.ssh/id_rsa.pub root@node1
? 部署方案一:heartbeat v2
安装配置
yum -y?install?perl-TimeDate net-snmp-libs libnet PyXML
rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm
# heartbeat:主程序包
# heartbeat-pils:提供通用插件和接口加载库
# heartbeat-stonish:提供了屏蔽(又称"爆头")其他节点的接口
# heartbeat-gui:为管理集群提供的gui配置接口
cd?/usr/share/doc/heartbeat-2.1.4
cp?ha.cf haresources authkeys?/etc/ha.d??# 拷贝配置文件
vi?/etc/ha.d/ha.cf?# 配置主配置文件,添加节点信息
node node1.lamp.com
node node2.lamp.com
# 其它可参考配置:
# logfile /var/log/ha-log # 日志文件,可查看集群启动信息
# keepalive 2 # 心跳信息发送频率,此为2s一次
# deadtime 30 # 若此时间内未收到心跳信息,则判定节点死亡,此为30s
# initdead 120 # 主机刚启动时,可允许心跳信息的接收时间,至少需要是是deadtime的2倍
# udpport 694 # 监听端口,默认就是694
# bcast eth0 # 通过eth0接口广播心跳信息
# auto_failback on # 打开故障转回功能,即当故障主节点恢复后,资源仍将转移回主节点的过程
# ping 172.16.0.1 # 指定一个虚拟集群节点,用于生成quorum
# respawn hacluster /usr/lib/heartbeat/ipfail # 在heartbeat启动时随之启动的程序,如ipfail,可用于访问控制
# compression bz2 # 定义数据压缩格式
vi?/etc/ha.d/authkeys?# 配置使用sha1加密算法
auth 2
#1 crc
2 sha1 e3266a6f709a5c3e?# 密码可通过命令"openssl rand -hex 8"生成
#3 md5 Hello!
chmod?600?/etc/ha.d/authkeys?# 修改密钥文件权限
vi?/etc/ha.d/haresources?# 添加如下信息即可
node1 172.16.25.55 httpd?# 表示在集群的主节点(尽量是node1)上先配置服务IP(就是一个虚拟IP),然后启动httpd服务
/usr/share/heartbeat/ha_propagate?# 同步配置文件至其他节点
service heartbeat start?# 启动hearbeat服务
ss -antupl |grep?694?# 验证启动进程和端口
? 在heartbeat中HA集群的配置方式
主要有3种:haresources文件,crmsh接口和gui图形配置接口
haresources文件:
格式:node-name resource1 resource2 ... resourceN
# 资源格式:
# 服务IP资源格式:IPaddr::IP地址/子网掩码/配置的网卡/广播地址,如IPaddr::135.9.8.7/24/eth0/135.9.8.210
# LSB资源格式:脚本名称,如httpd
# 共享文件系统资源格式:Filesystem::挂载源::本地挂载目录::挂载文件系统类型,如Filesystem::172.16.251.163:/www/phpwind.com::/www/phpwind.com::nfs
实例:
# 配置虚拟IP,NFS目录挂载及httpd服务,并按书写顺序在node1上依次启动
node1 172.16.25.51 Filesystem::172.16.251.163:/www/phpwind.com::/www/phpwind.com::nfs httpd
# 缺点:利用文件的进行进行资源的管理配置过于简陋,故不推荐使用 crmsh接口配置:
vi?/etc/ha.d/ha.cf
crm on?# 添加此行,即打开crm配置接口
service heartbeat restart?# 重启heartbeat服务
ps?-ef |?grep?mgmtd; ss -antupl |grep?5560?# 检查mgmtd进程存在,且监听在5560端口上
crm_mon?# 查看集群状态信息
crm_sh?# 进入集群命令行配置界面
passwd?hacluster?# 为heartbeat生成的hacluster用户添加密码
hb_gui &?# 进入GUI图形配置界面,对集群进行相关配置,需要填写上述密码哦 注:
? ? ? ?
?
?
原文:http://www.cnblogs.com/na2po2lun/p/4270976.html