设为首页 收藏本站
查看: 2261|回复: 0

[经验分享] corosync+pacemaker实现高可用(HA)集群(一)

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-4-22 21:42:22 | 显示全部楼层 |阅读模式
HA架构
wKioL1NUWSDB6pf1ABBTGIKnNp8699.jpg
注:图片较大,可点击在新窗口打开查看;
整个HA集群可分为3层:底层信息传递层、中间资源分配层和上层资源层;
图中蓝色部分为各层对应的主要组件及其功能,紫色部分是各层实现的开源软件,橙色部分是其它备注信息;

RHEL和CentOS的高可用集群解决方案
5版本
  • 自带:RHCS(cman+pacemaker)
  • 第三方软件:corosync+pacemaker,heartbeat(v1或v2)

6版本
  • 自带:RHCS(cman+rgmanager)
  • 第三方软件:corosync+rgmanager,cman+pacemaker,heartbeat v3+pacemaker,keepalived


重要概念
在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云
资源、服务与主机(又称节点)的关系:
  • 资源包括vip,httpd,filesystem等;
  • 可整合多个资源形成一个服务;
  • 服务必运行在某个主机上,主机上也可不运行服务(此为空闲主机);
  • 服务里的所有资源应该同时运行在同一个节点上,实现方式有2种:
    • 资源组;
    • 排列约束


资源类型
  • primitive(或native):原生资源,只能运行于一个节点
  • group:组资源
  • clone:克隆资源,只能将原生资源定义为克隆属性;一般用于定义stonith设备的参数(可定义“总克隆数”和“每个节点最多可运行的克隆数”等参数)
  • master/slave:主从资源,也是克隆类型的,只能克隆2份;主的能读能写,从的不能读也不能写(如drbd的实现)

target-role:即资源刚配置完成时是否启动的属性
  • Stopped:资源不启动;
  • Started:选择合适节点启动;
  • Master:资源启动,并提升其启动在主节点上;

no-quorum-policy:当集群故障,分裂为多个部分(称为“集群分区”),当某一集群分区因无法满足“法定人数原则(即quorum)”而无法选举出主节点时,此分区中节点上的资源可作如下处理
  • stop:停止所有资源,默认值
  • ignore:继续管理所有资源,即忽略集群故障,在双节点实验环境中需要
  • freeze:继续管理资源,但不再接受来自其他集群分区下节点的资源
  • suicide:隔离集群分区下的所有节点

资源转移的方式
rgmanager:
  • failover domain即故障转移域,利用优先级(priority)的机制决定主节点故障时,资源的转移流向;

pacemaker:利用资源约束的机制,有如下3种类型
  • 资源黏性:资源运行在当前节点上是否远离的倾向性,数值越大表示越倾向留在当前节点
  • 位置约束:资源更倾向于运行在哪个节点上,使用一个数值来表示约束的大小,数值越大越倾
    • inf:无穷大
    • n:整数值
    • -n:负数值
    • -inf:负无穷大

  • 排列约束:资源运行在同一节点的倾向性
    • inf:无穷大,表示2个资源一定要运行在一起
    • -inf:负无穷大,表示2个资源绝不运行在一起

  • 顺序次序:定义资源的启动次序及关闭次序

HA集群的工作模型
  • A/P:two nodes,工作于主备模型;
  • N-M:N>M,N个节点,M个服务;活动节点为M,空闲节点为N-M个;
  • N-N:N个节点,N个服务;没有空闲节点;
  • A/A:two nodes,双主模型,双主模型最适用的场景是对LVS做高可用;



配置部署HA集群
前期准备
各节点(即主机)的主机名与“uname -n”的结果保持一致:


# Node1+Node2:
vi /etc/hosts
172.16.25.16   node1.lamp.com node1
172.16.25.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图形配置界面,对集群进行相关配置,需要填写上述密码哦
注:
crm_sh和hb_gui两种配置方式选其一即可;
crm_sh的使用可在内部使用help获得,但帮助信息很有限,不建议使用;
hb_gui的方式目前测试只在Xshell终端下可用,iTerm就不可以,具体配置自行摸索即可;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-18105-1-1.html 上篇帖子: corosync集群安装配置及crmsh使用详解 下篇帖子: corosync+pacemaker实现高可用(HA)集群(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表