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

[经验分享] HA集群之Heartbeat浅析及heartbeat+haresource

[复制链接]

尚未签到

发表于 2019-1-6 15:36:22 | 显示全部楼层 |阅读模式
  HA集群之Heartbeat浅析及heartbeat+haresource
  一、Heartbeat
  Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
  heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
  二、Heartbeat的版本介绍
  Heartbeat v1.x和Heartbeat v2.x版本的组成结构十分简单,所有模块都集中在heartbeat中。
  1.Heartbeat v1.x与v2.x的组件

  •   HeartBeat:节点间通信检测模块
  •   Ha-Logd:集群事件日志服务
  •   CCM(Consensus Cluster Membership):集群成员一致性管理模块
  •   LRM (Local Resource Manager):本地资源管理模块
  •   Stonith Daemon: 使出现问题的节点从集群环境中脱离或重启
  •   CRM(Cluster resource management):集群资源管理模块
  •   Cluster policy engine: 集群策略引擎
  •   Cluster transition engine:集群转移引擎(也叫策略执行引擎)
  Heartbeat v1.x与Heartbeat v2.x区别
  在Heartbeat v1.x中的集群资源管理器(CRM)是haresource。
  在Heartbeat v2.x中增加了一个功能更强大名为crm的新的集群资源管理器(CRM),自己可以做为一个独立进程来运行,它在各节点上运行一个叫crmd的进程,此进程监听在端口为5560的套接字上,所以服务器端叫crmd,客户端是个命令行接口叫crm(或crm shell),通过这个命令行接口就可以跟服务器端的crmd通信;heartbeat也有图形化界面工具heartbeat-GUI。
  Heartbeat v2.x中为了兼容v1.x保留了haresource。crm管理方式有两种,即:基于命令行crmsh,基于图形界面的hb_gui。

  
  2.Heartbeat v3.x的组件
  Heartbeat 3与2.x 的最大差别在于,3 按模块把的原来2.x 拆分为多个子项目,但是HA实现原理与Heartbeat2.x基本相同,配置也基本一致,并且提供了一个cluster-glue的组件,专用于Local Resource Manager 的管理。即heartbeat + cluster-glue + resouce-agent 三部分:

  •   Heartbeat:将原来的消息通信层(HeartBeat+CCM)独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信。
  •   Cluster Glue:相当于一个中间层,它用来将heartbeat(HeartBeat+CCM)和CRM关联起来,主要包含2个部分,即为LRM和STONITH。
  •   Resource Agent:用来操控服务务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。

  通过这三部分已可构成一套完整的HA集群系统。但是,这还不够,因为没有管理工具。而CRM工具crm被进一步拆分,由另一独立项目Pacemaker 负责。Pacemaker 提供了多种用户接口:

  •   crm shell 基于字符的管理方式;
  •   一个使用Ajax Web配置方式的web konsole 窗口;
  •   hb_gui ,即heartbeat gui 图形配置工具,这也是原来2.x的默认GUI 配置工具;
  •   DRBD-MC,一个基于Java的配置管理工具。
  需要说明的是,Pacemaker 支持的Cluster Stacks中,除了Heartbeat,还支持OpenAIS(其中就有corosync)。不过,OpenAIS 的内容已超出本文的范围,有待以后再做介绍。
  三、Heartbeat v2.x 基于haresource实现高可用
  1.配置主机名
  节点名称很关键,集群每个节的名称都得能互相解析。/etc/hosts中的主机名配置结果必须跟”uname -n”的解析的结果一致。
  node1/node2都添加:
  node1示例:
  # vim /etc/hosts
  172.16.1.11 node1.hoo.com node1
  172.16.1.12 node2.hoo.com node2
  # ifconfig eth0 172.16.1.11  up
  # hostname node1.hoo.com
  # uname -n
  # vim /etc/sysconfig/network  //重启才生效,source也不生效
  hostname=node1.hoo.com
  2.时间同步
  node1,node2都配置
  # crontab -e
  */5 * * * * /usr/sbin/ntpdate  172.16.0.1 &> /dev/null
  3.配置node之间SSH互信
  node1:
  #ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ''
  # ssh-copy-id -i .ssh/id_rsa.pub root@node2.test.com
  node1:
  #ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ''
  # ssh-copy-id -i .ssh/id_rsa.pub root@node1.test.com
  node1:测试
  #  ssh node2.hoo.com ‘date’;date
  4.安装httpd
  node1,node2
  # yum install httpd -y
  # ssh node2 "yum install httpd -y "
  # ss -tunl | grep 80
  # ssh node2 "ss -tunl | grep 80"
  5.安装heartbeat v2.x
  node1,node2都安装包:
  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
  依赖:
  perl-TimeDate
  net-snmp-libs
  libnet PyXML
  安装:
  # yum -y perl-TimeDate net-snmp-libs libnet PyXML
  # rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm  heartbeat-2.1.4-12.el6.x86_64.rpm
  6.配置Heartbeat
  最好按:1、信息层; 2、资源管理器;3、资源代理  配置。
  集群中心跳信息传递,基于组播地址传递的,为防止随便一台主机组播地址装了heartbeat也连接到集群,各节点信息传递是配置认证。认证基于HMAC(消息认证码),使用单向加密算动法实现,单向加密一般有三类:crc(循环冗余校验码)、md5(信息摘要算法)、sha1。
  heartbeat基于udp协议,监听在694端口上。
  a).默认配置目录/etc/ha.d/下没有配置文件,移动配置模板文件至配置目录下
  # cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys,haresources} /etc/ha.d/
  // authkeys 节点之间认证key文件
  // ha.cf  heartbeat的主配置文件
  // haresources 集群资源管理配置文件(在heartbeat所有版本中都是支持haresources来配置集群中的资源)
  b).配置authkeys文件
  # openssl rand -hex 8   //生成16位随机数
  ee869d3d86e1556f
  # vim /etc/ha.d/authkeys
  #auth 1
  #1 crc
  #2 sha1 HI!
  #3 md5 Hello!
  auth 2       //选择使用sha1加密
  2 sha1 ee869d3d86e1556f
  # chmod 600 authkeys
  //修改密钥文件的权限为600,否则无法启动服务
  c).配置主配置文件ha.cf
  # vim /etc/ha.d/ha.cf    启用以下参数及功能
  logfile /var/log/ha-log
  //日志文件,正常日志信息记录到哪去的
  keepalive 1000ms
  //每隔多长时间发送一次心跳信息的,单位是秒,毫秒用ms
  deadtime 8
  //隔多长时间探测到对方不在线就kill掉的时间间隔
  warntime 10
  //警告时间
  udpport 694
  mcast eth0 225.16.1.169410
  //定义组播地址
  auto_failback on
  //开启故障转回功能
  node    node1.hoo.com   //定义两个节点
  node    node2.hoo.com
  crm on
  //启用crm功能
  ping 172.16.0.1
  //ping节点
  compression     bz2
  //压缩格式
  compression_threshold 2
  //表示小于2K时不压缩传输
  d).配置资源管理文件haresource
  # vim haresources
  node1.hoo.com 172.16.249.188 httpd
  或:node1.hoo.com IPaddr::192.168.249.188/24/eth0 httpd
  # scp -p authkeys haresources ha.cf node2.hoo.com:/etc/ha.d/
  e).启动服务
  node1,node2
  # service heartbeat start
  # ssh node2 "service heartbeat start"
  7.测试
  浏览器访问正常
  查看node1上的IP
  [root@node1 ha.d]# ifconfig
  //显示 eth0:0  172.16.1.11  node1为主节点
  模拟node1故障
  [root@node1 ha.d]# service heartbeat stop  //将node1中的heartbeat关闭
  查看node2上的IP
  [root@node2 ~]# ifconfig
  // 查看node2的IP,可以看到立即转移到node2上
  补充
  httpd是绑定在heartbeat服务上面的 就是启动heartbeat也就启动了httpd,如果node1就httpd进程停止了,heartbeat没有停止,整个系统就访问不了。
  Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常, 得使用第三方的插件或者自己按需求写监控脚本脚本。
  -----转自:http://hoolee.blog.运维网.com/7934938/1408615


运维网声明 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-660045-1-1.html 上篇帖子: Heartbeat配置多播方式以及heartbeat安装脚本 下篇帖子: RHEL5.4 Heartbeat安装(第二部份 测试与监控)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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