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

[经验分享] heartbeat v2

[复制链接]

尚未签到

发表于 2019-1-6 13:22:01 | 显示全部楼层 |阅读模式
--本文大纲

  •   前提
  •   前言
  •   实验拓扑
  •   安装相关软件
  •   配置 heartbeat(crm 资源管理器)


  •   crm图形界面配置详解
  •   crm配置资源(group resource)
  •   crm资源约束(constraints)
  •   crm资源配置总结
一、前提(前文己经提过如何设置)1、设置主机名,要与uname -n 的名字一致,能够DNS解析

  •   此处要修改/etc/sysconfig/network中的hostname
  •   还要在/etc/hosts文件中为各节点做正向解析
  2、节点间的时间必须一致


  •   ntpdate
  3、节点间无密码登录
#ssh-keygen -t rsa -P ''
#ssh-copy-id -i .ssh/id_rsa.pub node_name二、前言与1.x style不同的是,v2.x style会使用CRM来进行整个集群的管理。集群开始时,通过在各节点间选举产生一个节点成为DC(Designated Coordinator),配置应在该DC上进行,并由其分发到下面的各个节点上,其中haresource 资源管理器heartbeat v1内置的资源管理器,功能比较简单,不支持图形化管理。到了heartbeat v2时,有了更加强大的资源管理器crm,但同时为了兼容heartbeat v1,在heartbeat v2中是不兼容haresource资源管理器的配置文件haresource,所以在/etc/ha.d/haresources配置的资源都是不能使用的,所以得重新配置。需要在ha.cf中添加crm on 来开启 crm 功能,crm通过mgmtd进程监听在5560/tcp 。注:需要启动hb_gui的主机为hacluster用户添加密码,并使用其登录hb_gui三、实验拓扑

四、安装相关软件1、heartbeat 安装组件说明

  • heartbeat 核心组件  *   
  • heartbeat-devel 开发包   
  • heartbeat-gui 图形管理接口 *(这次就是用GUI来配置集群资源)
  • heartbeat-ldirectord 为lvs高可用提供规则自动生成及后端realserver健康状态检查的组件   
  • heartbeat-pils 装载库插件接口 *   
  • heartbeat-stonith 爆头接口 *
2、Xmanager Enterprise 4
五、配置 heartbeat(crm 资源管理器)
第一步、安装软件包
#yum install -y perl-TimeDate net-snmp-libs libnet PyXML注:libnet是在epel源中,所以要下载EPEL源安装包即可
http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html
下载对应的版本就可以的。
#rpm -ivh epel-release-6-8.noarch.rpm之后就可以使用yum安装EPEL中的包了
#yum install -y libnet
#rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm  heartbeat-devel-2.1.4-12.el6.x86_64.rpm  heartbeat-gui-2.1.4-12.el6.x86_64.rpm注:以上步骤node4也要执行开始配置node2  当安装完成后,查找到配置文件,拷贝到/etc/ha.d目录下
[root@essun download]# rpm -ql heartbeat-2.1.4 |grep ha.cf
/usr/share/doc/heartbeat-2.1.4/ha.cf进入到此目录下,将此目录下的authkeys,ha.cf拷贝到/etc/ha.d/目录下[root@essun heartbeat-2.1.4]# cp authkeys ha.cf /etc/ha.

注解:authkeys集群节点的认证文件,以防有非集群内部节点进入此集群
ha.cf
heartbeat 的主配置文件
  编辑authkeys
  
vim authkeys
#auth 1
#1 crc
#2 sha1 essun.org
# #3 md5 Hello!
auth 1
1 md5 $1$Oukjg1$aZS0Qb.PBg1Isv0cSJcxL/  
修改此文件的权限为600  
#chmod 600 authkeys  
编辑主配置文件ha.cf  
[root@essun ha.d]# grep -v "#" ha.cf |grep -v "^$"
logfile    /var/log/ha-log
keepalive 100ms
deadtime 10
warntime 4
udpport    694
mcast eth0 225.0.0.1 694 1 0
auto_failback on
node essun.node2.com
node essun.node4.com
crm on
ping 172.16.0.1
compression    bz2
compression_threshold 10   注:
  crm on
开启crm功能其余参数说明见前文编辑完成将这两个配置文件拷贝到node4的对应目录下
[root@essun ha.d]# scp authkeys ha.cf essun.node2.com:/etc/ha.d/
The authenticity of host 'essun.node2.com (192.168.1.110)' can't be established.
RSA key fingerprint is b8:9d:cb:7b:4d:ad:c2:fb:a4:00:23:b0:f2:6b:3f:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'essun.node2.com,192.168.1.110' (RSA) to the list of known hosts.
root@essun.node2.com's password:
authkeys                                     100%  699     0.7KB/s   00:00
ha.cf                                        100%   10KB  10.3KB/s   00:00  第二步、在node2与node4上安装http服务

#yum install -y httpd测试服务可用性

  node2
[root@essun ha.d]#echo "essun.node2.com" >/var/www/html/index.html
[root@essun ha.d]# service httpd start
Starting httpd:                                            [  OK  ]
[root@essun ha.d]# curl http://172.16.32.20
essun.node2.com  node4
  
[root@essun download]# echo "essun.node4.com" > /var/www/html/index.html
[root@essun download]# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
[root@essun download]# curl http://172.16.32.4
essun.node4.com  测试node2,node4可用后关闭http服务,禁止开机自动启动,使用crm来控制其启动与停止


[root@essun ha.d]# service httpd stop
Stopping httpd:                                            [  OK  ]
[root@essun ~]# chkconfig httpd off第三步、在两个节点上启动heartbeat在node2上启动 heartbeat[root@essun ha.d]# service heartbeat start
Starting High-Availability services:
Done.
[root@essun ha.d]# ss -tnlp |grep 5560
LISTEN     0      10                        *:5560                     *:*      users:(("mgmtd",16231,10))在node4上启动heartbeat[root@essun ha.d]# ssh essun.node4.com "service heartbeat start"
Starting High-Availability services:
Done.
[root@essun ~]# ss -tnlp |grep 5560
LISTEN     0      10                        *:5560                     *:*      users:(("mgmtd",1776,10))查一下集群状态#crm_mon
============
Last updated: Tue Apr 22 08:41:26 2014
Current DC: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642)
2 Nodes configured.
0 Resources configured.
============
Node: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642): online
Node: essun.node4.com (0df746b3-fdab-4625-99d2-659e9a5ef1c6): online  从上面的集群状态中我们可以看到,集群中有两个节点,分别为node2和node4状态是online全部在线,我们还可以看到,DC是node2。两个节点的资源是0,说明在我们这个集群中还没有资源。下面我们来详细的说明一下!
  第四步、crm配置的方式
  命令行配置:
[root@essun ~]# crm
crmadmin       crm_failcount  crm_resource   crm_uuid   
crm_attribute  crm_master     crm_sh         crm_verify  
crm_diff       crm_mon        crm_standby图形配置:[root@essun ~]# hb_gui注:这次重点说这个a_c~~~~~~前面提到了CIB,那么现在我们就去看看,CIB的文件格式[root@essun crm]# pwd
/var/lib/heartbeat/crm
[root@essun crm]# cat cib.xml
















看到了吧,反正我是无法看得懂,还好有命令行与图形化配置。
第五步、配置crm 资源管理器
要想启用GUI配置界面,必须要为hacluster用户(heartbeat默认用户)创建一个密码(hacluster)。[root@essun crm]# grep hacluster /etc/passwd
hacluster:x:496:493:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
[root@essun crm]# echo hacluster | passwd --stdin hacluster
Changing password for user hacluster.
passwd: all authentication tokens updated successfully.注:你想在那一个节点上进行配置,就在那一个节点上创建密码。
六、crm图形界面配置详解
启动hb_gui#hb_gui &
己经启动图形了,现在我连接上去看一下效果


看一下登录后的显示的界面
说明:资源类型:
primitive, native: 主资源,只能运行于一个节点上
group: 组资源;
clone: 克隆资源(首先其必须是主资源);
                     参数:
                        总克隆数;
                          每个节点最多可运行的克隆数
  stonith(资源隔离),cluster filesystem(依赖于分布式锁,其它进程能够看到,将不会写入操作)
master/slave: 主从资源 如DRBD(只有两份(主的可以读写,从的不能读不能写))
RA类型:( resource  class)
heartbeat legacy传统类型
LSB:位于 /etc/rc.d/init.d/*的所有程序
OCF:
STONITH

七、添加资源(组资源)
注:
  在高可用Web集群中有三个资源分别为:

  •   VIP
  •   httpd


  •   nfs

添加资源

  增加native资源
设置完成后点Add,结果如下


Resources中,定义一个组,名字叫webservice,组中一条资源记录(服务)及其当前的状态
  继续添加httpd服务

  添加后的结果如下:
启动服务,测试一下效果

经验证,所有的资源的确运行于node2上,这次我将模拟故障后一下是不是所有的资源都会转移到node4上呢?


  看一下效果

资源直接切换到node4上去了,下面我在node3上做一个nfs共享存储,做一个简单的测试页面看一下文件系统资源是如何在高可用中使用。
  essun.node3.com节点上安装nfs
#yum install -y nfs
#mkdir -p /www/share
#vim /etc/exports
/www/share *(rw)
#exportfs -r
# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
# echo "cluster server nfs" > /www/share/index.html
[root@essun ~]# service nfs stop
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Shutting down NFS services:                                [  OK  ]
Shutting down RPC idmapd:                                  [  OK  ]  开始添加资源

  启动nfs资源看一下效果

  

  现在模拟node4故障,将资源切换回node2上

看到效果了吧!!!
说明:

  组资源是将多个资源组合在一起对外提供服务,如果这里不定义组资源,每一种资源将平均到每一个节点上,显然这不符合我们的业务逻辑,如是我们想将多个资源运行于同一个节点上对外提供服务,该如何做到呢,这个时候就用到了资源约束了,向下看吧~~~
  八、crm资源约束(constraints)
  
  

资源约束(3种类型):
  位置约束(locations):资源更倾向于哪个节点上 ,使用数值表示;
  inf: 无穷大
  n: 表示数值,要对节点间的做比较来决定最后落在那个节点上(此处n为正值)
  -n: 同上,如果节点间的位置约束均为负值,则最后运行于接近正值的节点上
  -inf: 负无穷(只要有其它选择,就不会选择此节点 )
  排列约束(Colocations):资源运行在同一节点的倾向性;
   inf: 无限倾向于在一起
  -inf: 无限倾向于不在一起
  顺序约束(orders):资源启动次序及关闭次序;
  下面我将图解这三种约束在高可用中的运用,现在所有的资源都被清空了。

如前面提到的步骤添加三个资源ip、httpd、nfs
七、添加资源(约束)
排列约束(那一个资源一那一个资源必须在一起的可能性),由于前面定义过的资源己经清空,所在要再建立一次

  创建排列约束

  定义webip资源与webserver资源在一起的可能性

说明:
ID:表示为约束记录起一个名字
from to:表示那一个资源与那一个资源(此处写上面定义资源名字即可)
score:在一起的可能性(也可以是数值)
INFINITY:ip必须要和webserver在一个节点上
定义webserver与webnfs在一起的可能性

只有这样定义还不够,这样定义过,仅能保证这三个资源在同一个节点上运行;我们知道一个web对外提供服务首先要有一个对外的地址,如果有web存储的话,还要将存储挂载到对应节点的目录上,最后才是服务本身,所以还要定义在一下顺序。定义顺序约束
  webip与webnfs顺序约束

  webnfs与webserver约束

  webip与webserver约束

说明:ID、from、to与前面代表的意思一样建立位置约束(更倾向于那一个节点)

注:  只在将第一个启动的资源服务定义在位置约束之中,那么后面的所有的资源都将在此节点运行

全部约束整合之后的样子

  启动资源,测试访问

模拟node2故障
  当node2重新上线后,所有的资源将再一次转移到node2上

回到命令行看一看#crm_mon
============
Last updated: Wed Apr 23 12:15:05 2014
Current DC: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642)
2 Nodes configured.
3 Resources configured.
============
Node: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642): online
Node: essun.node4.com (0df746b3-fdab-4625-99d2-659e9a5ef1c6): online
webip   (ocf::heartbeat:IPaddr):        Started essun.node2.com
webnfs  (ocf::heartbeat:Filesystem):    Started essun.node2.com
webserver    (lsb:httpd):    Started essun.node2.com再看一眼CIB[root@essun crm]# cat cib.xml















































































九、总结在高可用集群中,将资源定义于同一个节点上的方法有两种,第一种是使用group resoruce之后每一种资源都是primitive、native,那么在组中定义的顺序将决定资源启动顺序,第二种是将资源都定义成为primitive、native,由约束为其限定倾向性,排列约束,启动顺序;如在此实验中,高可用的web集群的资源启动顺序为webip---->[webnfs]--->webserver.













运维网声明 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-659965-1-1.html 上篇帖子: Heartbeat+Drbd+NFS高可用实现 下篇帖子: Heartbeat(haresources)+NFS实现WEB服务的高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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