zzbb 发表于 2019-1-7 11:15:00

linux下高可用集群之heartbeat详解

linux下高可用集群之heartbeat详解
  1.高可用集群简单效果图
http://s4.运维网.com/wyfs02/M00/85/03/wKioL1eZrQvgMrjlAAB9HRK7wVo857.jpg-wh_500x0-wm_3-wmp_4-s_221954575.jpg
  1.1.Messaging Layer:主要收集节点间的事务资源心跳等信息,分别有以下几种:
  heartbeatV1 heartbeatV2 heartbeatV3
  corosync
  cman
  keepalived
  ultramokey
  1.2.CRM:cluster resourse manager,对Messaging Layer收集到的资源进行管理,分别有以下几种:
   Heartbeat v1 自带的资源管理器:haresources
   Heartbeat v2 自带的资源管理器:haresources和crm
   Heartbeat v3: 资源管理器crm发展为独立的项目,pacemaker
1.3.RA: Resource Agent,资源代理,由符合LSB标准的脚本(start,stop,restart,status)
   主要功能是CRM资源管理器对资源管理分配后由RA进行执行
  RA Classes:RA类型
  Legacy heartbeat v1 RA
  LSB (/etc/rc.d/init.d/)
  OCF (Open Cluster Framework):含pacemaker 和 linbit (drbd)
  STONITH 隔离
   Resource Type:资源类型
primitive: 基本类型
clone: 克隆
group:组
master/slave: drbd,运行于两节点的主从关系
资源粘性:资源对当前节点的依赖程度,通过score定义
资源约束:Constraint
位置约束 location: 资源对节点倾向程度
排列约束 coloation: 资源间依赖性
顺序约束 order: 资源的采取动作的次序
  2.高可用集群
  2.1.三个基本要求

  节点之间名称解析建议写在/etc/hosts文件下

  节点之间ssh能互相通信,建议使用密钥认证
  节点之间时间同步建议使用ntp服务器

  2.2.三个配置文件:
  authkeys:密钥文件,600,
  ha.cf: heartbeat服务的配置
  haresources:资源管理配置文件
  3.本实验背景:双集群节点为node1.willow.com,IP为1.1.1.18 node2.willow.com,IP为1.1.1.19
  在node1.willow.com主机配置如下:(与node2.willow.com集群配置全部相同)
  3.1.安装HA集群包
  #yum --nogpgcheck localinstall perl-MailTools-1.77-1.el5.noarch.rpm
  #yum --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-gui-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
  #cd /usr/share/doc/heartbeat-2.1.4/
  #cp -p authkeys ha.cf haresources /etc/ha.d/

  #chmod 600 authkeys
  #cd /etc/ha.d/
  3.2.vim authkeys #新增如下內容:
  auth 1
  1 md5 willow!#其中willow!是md5所需的salts
  

  3.3.vim ha.cf#修改成如下內容:
  logfacilitylocal0
  keepalive 1
  bcasteth0# Linux
  auto_failback on
  nodenode1.willow.com
  nodenode2.willow.com
  ping 1.1.1.144
  

  3.3.vim haresources #修改成如下內容:
  node1.willow.comIPaddr::1.1.1.100/24/eth0 httpd
  #yum -y install httpd
  #echo "node1.willow.com" > /var/www/html/index.html #区别首页显示内容
  #chkconfig httpd off
  #setenforce 0
  #iptalbes -F
  3.4.node2.willow.com主机只修改如下部分(其他与node1.willow.com集群配置全部相同,省略)
  #echo "node2.willow.com" > /var/www/html/index.html #区别首页显示内容
  3.5.基于haresources简单集群测试:
  在node1.willow.com主机下:
  #serivce heartbeat start
  #ssh node2 'serivce heartbeat start'
  #tail -f /var/log/messages #看日志
  此时通过web访问VIP1.1.1.100看效果
  #cd /usr/lib/heartbeat
  #./ha_stanby#模拟node1节点掉线,web自动转到node2节点上,进行服务
  此时通过web访问VIP1.1.1.100再看效果
  3.6.基于haresources通过第三台linux主机1.1.1.20的NFS服务器共享网页内容,再进行集群测试
  在1.1.1.20主机上开启NFS共享:
  #mkdir -pv /web/ha
  #echo "this is NFS sharing" > /web/ha/index.html
  #vim /etc/exports
  /web/ha   1.1.1.0/24(ro)
  #service nfs start
  #service portmap start
  在node1主机上:停止heartbeat服务
#ssh node2 'serivce heartbeat stop'
#serivce heartbeat stop
在node1和node2两台主机上:同进修改haresources文件
  #vim haresources #修改如下内容
  node1.willow.com IPaddr::1.1.1.100/24/eth0 Filesystem::1.1.1.20:/web/ha::/var/www/html::nfs httpd
  再在node1主机上:启动heartbeat服务
  
#serivce heartbeat start
#ssh node2 'serivce heartbeat start'
  #tail -f /var/log/messages #看日志
  此时通过web访问VIP1.1.1.100看效果
#cd /usr/lib/heartbeat
#./ha_stanby#模拟node1节点掉线,web自动转到node2节点上,进行服务
此时通过web访问VIP1.1.1.100再看效果
4.通过hb_gui基于native进行crm管理并集群测试
#vim ha.cf新增如下内容
crm respawn
#hb_gui & 通过Xshell打开crm管理图行界面
#/usr/lib/heartbeat/ha_propagate传播ha.cf和authkeys文件给其他节点进行更新
4.1.新增webip资源


http://s2.运维网.com/wyfs02/M02/85/48/wKiom1efC4SCBXTVAAFXRdk9FoA089.jpg-wh_500x0-wm_3-wmp_4-s_3745467936.jpg
http://s5.运维网.com/wyfs02/M02/85/48/wKioL1efC4WzTkV3AAJAcUdGmtg930.jpg-wh_500x0-wm_3-wmp_4-s_697633101.jpg
http://s5.运维网.com/wyfs02/M00/85/48/wKiom1efC4axT1vfAALqYN0FX-k923.jpg-wh_500x0-wm_3-wmp_4-s_3337197964.jpg
http://s5.运维网.com/wyfs02/M02/85/48/wKioL1efC4jiJFSDAAMV4OLJtKE691.jpg-wh_500x0-wm_3-wmp_4-s_3652914716.jpg
  4.2.新增httpd资源代理
  

http://s3.运维网.com/wyfs02/M02/85/48/wKioL1efDFOR_cJkAALvu-IvLI8599.jpg-wh_500x0-wm_3-wmp_4-s_3135848409.jpg
  4.3.启动资源
http://s5.运维网.com/wyfs02/M02/85/48/wKiom1efDQqzzf-IAAHi-D1fBis945.jpg-wh_500x0-wm_3-wmp_4-s_364561017.jpg
http://s4.运维网.com/wyfs02/M01/85/48/wKiom1efDQqARWRDAAHFUSIEa78635.jpg-wh_500x0-wm_3-wmp_4-s_3847146110.jpg
  注意启动资源后,webip和httpd资源分别运行在不同主机上,这不是我们所需要的

  如果将所有资源绑定成一个组,那么所有资源肯定会运行在同一主机上?
5.通过hb_gui基于group进行crm管理并通过第三台linux主机1.1.1.20NFS服务器共享网页内容
#vim ha.cf新增如下内容
crm respawn
#hb_gui &   通过Xshell打开crm管理图行界面

#/usr/lib/heartbeat/ha_propagate传播ha.cf和authkeys文件给其他节点进行更新
先新增资源组webservice,再在webservice组基础上依次顺序新增webip,filesystem,httpd资源
webip资源代理ipaddr,filesystem资源为Filesystem,httpd资源为httpd服务
5.1.新增webservice组

http://s2.运维网.com/wyfs02/M02/85/47/wKioL1efAdmgoTxTAAFwifkVPGE894.jpg-wh_500x0-wm_3-wmp_4-s_3330392931.jpg
http://s2.运维网.com/wyfs02/M00/85/47/wKiom1efAdqgdTq_AAF3aSrZbpE871.jpg-wh_500x0-wm_3-wmp_4-s_4139466654.jpg
  

  5.2.新增webip资源代理
http://s1.运维网.com/wyfs02/M01/85/48/wKiom1efCbHiU1HiAAI_ziYFW-Q038.jpg-wh_500x0-wm_3-wmp_4-s_475940249.jpg
http://s5.运维网.com/wyfs02/M01/85/48/wKioL1efCbPRPDqeAALll628bk0993.jpg-wh_500x0-wm_3-wmp_4-s_1305722471.jpg
http://s2.运维网.com/wyfs02/M00/85/48/wKioL1efCbSB5POeAALZJlm4mJo089.jpg-wh_500x0-wm_3-wmp_4-s_4095393820.jpg
  

  5.3.新增filesystem资源代理

http://s4.运维网.com/wyfs02/M02/85/47/wKiom1efBAzxe0rsAAPbT4IBoPo787.jpg-wh_500x0-wm_3-wmp_4-s_888216236.jpg
  

  5.4.新增httpd资源代理
http://s2.运维网.com/wyfs02/M01/85/47/wKiom1efBGPyIKBzAANY9TkQOR0844.jpg-wh_500x0-wm_3-wmp_4-s_3860405478.jpg
  

  5.5.启动所有资源
http://s2.运维网.com/wyfs02/M02/85/47/wKiom1efBxfy***yAAHPxyNIzm0023.jpg-wh_500x0-wm_3-wmp_4-s_3673375300.jpg
http://s2.运维网.com/wyfs02/M02/85/47/wKiom1efBxiTcnVdAAHFtaca3LI327.jpg-wh_500x0-wm_3-wmp_4-s_3107023091.jpg
  6.通过hb_gui基于约束进行crm管理并通过第三台linux主机1.1.1.20NFS服务器共享网页内容
#vim ha.cf新增如下内容
crm respawn
#hb_gui &   通过Xshell打开crm管理图行界面

#/usr/lib/heartbeat/ha_propagate传播ha.cf和authkeys文件给其他节点进行更新
先新增资源组webservice,再在webservice组基础上依次顺序新增webip,filesystem,httpd资源
webip资源代理ipaddr,filesystem资源为Filesystem,httpd资源为httpd服务
6.1.在新增native基础资源后,webip,filesystem和httpd轮徇运行在不同node节点上
http://s5.运维网.com/wyfs02/M02/85/55/wKiom1egQXWSdmqYAAIV1fyw6z8689.jpg-wh_500x0-wm_3-wmp_4-s_388895193.jpg
  6.2.新增colocation排列约束httpd_with_filesystem两资源绑在一起
http://s2.运维网.com/wyfs02/M02/85/54/wKioL1egQaSglJuGAAJdmoILDLs996.jpg-wh_500x0-wm_3-wmp_4-s_786180782.jpg
  再新增colocation排列约束filesystem_with_webip两资源绑在一起
http://s5.运维网.com/wyfs02/M00/85/55/wKioL1egQkPCltzsAAJvbnKAJiA864.jpg-wh_500x0-wm_3-wmp_4-s_863242858.jpg
  6.3.新增顺序约束filesystem_before_httpd,filesystem在httpd之前启动
http://s1.运维网.com/wyfs02/M01/85/55/wKiom1egQtDTA65HAAI0ueXG_28065.jpg-wh_500x0-wm_3-wmp_4-s_3154443384.jpg
  再新增顺序约束webip_before_filesystem,webip在filesystem之前启动
http://s3.运维网.com/wyfs02/M00/85/55/wKiom1egQ2LS03QEAAJqKC7p8Gg775.jpg-wh_500x0-wm_3-wmp_4-s_1914148071.jpg
  6.5.最后效果是所有资源都运行在同一node主机上
http://s4.运维网.com/wyfs02/M00/85/55/wKioL1egQ-PgvZdKAAHjHxy-ZCE171.jpg-wh_500x0-wm_3-wmp_4-s_1813558381.jpg
  6.6.利用粘性设定更倾向于运行至指定节点,粘性值必须大于0
http://s4.运维网.com/wyfs02/M00/85/67/wKiom1eioorTS5_kAALYbJI6qoQ177.jpg
  6.7.设定位置约束,让指定node主机上线后一直处于指定node主机
http://s1.运维网.com/wyfs02/M02/85/67/wKiom1eioqHC5eMhAAHSTsngBYg399.jpg
http://s4.运维网.com/wyfs02/M02/85/66/wKioL1eioqLBzx8lAALTVXHBKLE765.jpg
  7.通过nfs服务实现mysql数据共享集群
  7.1.通过第三台主机1.1.1.20,做nfs共享,步骤如下:
  #fdisk/dev/sda#创建lvm分区省略
  #partprobe /dev/sda
  #pvcreate /dev/sda5
  #vgcreate myvg /dev/sda5
  #lvcreate --help
  #lvcreate -L +1G -n mydata myvg
  #mke2fs -j /dev/myvg/mydata
  #mkdir /mydata
  #vim /etc/fstab
  /dev/myvg/mydata   /mydata    ext3   defaults    0 0
  #mount -a
  #mkdir /mydata/data
  #groupadd -g 3306 mysql
  #useradd -u 3306 -g 3306 -s /sbin/nologin -M mysql
  #chown -R mysql.mysql /mydata/data/
  #vim /etc/exports
  /mydata   1.1.1.0/24(no_root_squash,rw)
  #exportfs -arv
  #chkconfig nfs on
  #chkconfig portmap on
  7.2.node1主机节点安装mysql步骤如下:
  #groupadd -g 3306 mysql
  #useradd -g 3306 -u 3306 -s /sbin/nologin -M mysql
  #mkdir /mydata
  #mount -t nfs 1.1.1.20:/mydata /mydata
  下载并解压通用二进制mysql-5.5.49-linux2.6-i686至/usr/local/路径下
  #cd /usr/local/
  #ln -sv mysql-5.5.49-linux2.6-i686 mysql
  #cd /usr/local/mysql
  #chown -R root.mysql .
  #scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
  #cp support-files/my-huge.cnf /etc/my.cnf
  #vim /etc/my.cnf
  thread_concurrency = 2
  datadir = /mydata/data
  innodb_file_per_table = 1
  #cp support-files/mysql.server /etc/init.d/mysqld
  #chkconfig --add mysqld
  #chkconfig mysqld off
  #service mysqld start #进行测试mysql是否安装正常
  #service mysqld stop
  #umount/mydata
  7.3.安装node2节点之前,先在node1节点主机上umount/mydata和service mysqld stop,
  再依node1节点上步骤一样安装node2节点mysql,步骤如上省略
  7.4.测试mysql集群
#serivce heartbeat start
#ssh node2 'serivce heartbeat start'
#hb_gui &
效果图如下:
http://s2.运维网.com/wyfs02/M01/85/69/wKioL1eivBHzfAlBAAHKRbwEVCs730.jpg



页: [1]
查看完整版本: linux下高可用集群之heartbeat详解