声明:以下仅为个人的一些总结和随写,如有不对之处,还请看到的网友指出,以免误导。三克油!!!!!!!!!!!!!!!!!
前言:
首先我们得知道集群(Cluster)是啥东东:用N台服务器构成一个松耦合的多处理器系统(对外来说,他们就是一个服务器),它们之间通过网络实现通信。让N台服务器之间相互协作,共同承载一个网站的请求压力。在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持 冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
************************干货来啦*******************************************
环境:红帽企业6.5系统,关闭iptables和selinux
Node1:172.25.28.1(vm1.example.com)
Node2:172.25.28.4(vm4.example.com)
首先,请分别在node1和node2上面修改/etc/hosts解析文件
172.25.28.4 vm4.example.com
172.25.28.1 vm1.example.com
下载实验所需的rpm包: heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm
接着在两个node节点上面安装软件包:yum localinstall *.rpm (在rpm包所在的目录下执行此操作)
具体配置过程如下:
[root@vm1 ha.d]# cd /etc/ha.d
[root@vm1 ha.d]# less README.config 查看主配文件下的README文件
ha.cf Main configuration file ( 主配置文件 ) haresources Resource configuration file ( 资源配置文件) authkeys Authentication information ( 验证信息 ) rpm -q heartbeat -d ( 查找配置文件的具体路径 )[root@vm1 ha.d]# rpm -q heartbeat -d
/usr/share/doc/heartbeat-3.0.4/authkeys /usr/share/doc/heartbeat-3.0.4/ha.cf /usr/share/doc/heartbeat-3.0.4/haresources
[root@vm1 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys /usr/share/doc/heartbeat-3.0.4/ha.cf /usr/share/doc/heartbeat-3.0.4/haresources ./ 将配置文件复制到主配置目录下
[root@vm1 ha.d]# vim ha.cf
34 logfacility local0
48 keepalive 2
56 deadtime 30
61 warntime 10
71 initdead 60
76 udpport 694
91 bcast eth0 # Linux
157 auto_failback on
211 node vm1.example.com
212 node vm4.example.com
220 ping 172.25.28.42
253 respawn hacluster /usr/lib64/heartbeat/ipfail 此处一定要将lib64路径写对,由于此前忽略了,导致痛苦好长时间,无法启动heatbeat服务
[root@vm1 ha.d]# grep -v ^# ha.cf logfacility
local0 keepalive 2 心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒
deadtime 30 节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定
warntime 10 发出警告时间,自己设定
initdead 60 守护进程首次启动后应该等待 60 秒后再启动主服务器上的资源
udpport 694 心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信,取默认值不要和别人冲突
bcast eth0 # Linux 采用 udp 广播播来通知心跳
auto_failback on 当主节点恢复后,是否自动切回
node vm1.example.com 主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序
node vm2.example.com 副节点名称,与 uname –n 保持一致
ping 172.25.28.250 加载ping模块
respawn hacluster /usr/lib64/heartbeat/ipfail 此处一定要将lib64路径写对,由于此前忽略了,导致痛苦好长时间,无法启动heatbeat服务
apiauth ipfail gid=haclient uid=hacluster 默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。 所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。 可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为 ping 的节点。
[root@vm1 ha.d]# vim haresources 修改资源文件
vm1.example.com IPaddr::172.25.28.100/24/eth0 mysqld
[root@vm1 ha.d]# vim authkeys 修改验证信息
#
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
安装mysqld服务,不开启,心跳服务自动开启 修改认证文件的权限:[root@vm1 ha.d]# chmod 600 authkeys
将配置文件拷贝给另一个node2节点:
[root@vm1 ha.d]# scp haresources authkeys ha.cf 172.25.28.4:/etc/ha.d/
开启heartbeat 服务:
[root@vm1 ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO: Resource is stopped Done.
如果出现问题,就差看日志 tail -f /var/log/message tail -f /var/log/ha-log 现在服务在主节点上运行着,如果主节点上的heartbeat当掉,服务自动切换到辅助节点上,如果主节点恢复正常,服务被接回。 开启heartbeat后,mysql服务就会跟着自启动,关掉heartbeat后,mysql服务就会跟着关掉。
使用ip addr 查看是否开启虚拟ip 172.25.28.100
完毕!!!!!!!!!