HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。
一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望的。
如果这样,有2台服务器,A对外提供 web 服务,B作为备用,如果A挂掉,那么B立刻替代A的位置去提供 web 服务,这样对用户来说是透明的。
但是有个问题,服务器A的 ip 是 10.0.10.24,服务器B的 ip 是10.0.10.25,显然向用户提供A或B的ip地址是不可行的,因为用户总不能去切换ip来访问的吧。这时heartbeat或keepalived可以提供一个虚拟IP:10.0.10.26,用户只需要访问 10.0.10.26,当A提供服务时,VIP 会设置在A服务器上;当B提供服务时,VIP会设置在B服务器上,这样就可以让用户通过访问10.0.10.26来获取web服务,即使A或B服务器切换也不影响用户的正常访问。
部署
环境
1 | Web1: |
1 | Web2: |
1 | 虚拟VIP: 10.0.10.26 |
配置主机名
master节点配置
1 | [root@hahb24 ~]# vi /etc/sysconfig/network |
slave节点配置
1 | [root@hahb25 ~]# vi /etc/sysconfig/network |
关闭防火墙和selinux(所有节点配置)
关闭iptables
1 | service iptables stop |
关闭selinux
1 | setenforce 0 |
配置host(所有节点配置)
1 | vim /etc/hosts |
安装Hearbeat和Nginx(所有节点配置)
1 | # 安装epel源 |
主master配置
heartbeat主要的配置文件有3个,分别是authkeys、ha.cf和haresources
Authkeys文件:
1 | 文件为heartbeat的认证文件,该文件主要是用于集群中两个节点的认证。该文件的属性必须为600,否则heartbeat启动将失败。两个节点的authkeys文件内容及权限相同。 |
ha.cf文件:
1 | 配置文件详解 |
haresources文件:
1 | 添加如下行,例如: |
拷贝配置文件
1 | cd /usr/share/doc/heartbeat-3.0.4/ |
修改authkeys
1 | # 更改或增加如下内容 |
ha.cf文件修改
1 | [root@hahb24_master ha.d]# vim ha.cf |
haresources文件修改
1 | [root@hahb24_master ha.d]# vim haresources |
从节点配置
1 | 把主节点上的三个配置文件拷贝到从节点的/etc/ha.d目录下 |
编辑ha.cf
1 | vim /etc/ha.d/ha.cf |
检查authkeys文件权限
1 | ls -l authkeys 是否为600 |
编辑
1 | vim haresources |
启动Heartbeat服务(所有节点)
1 | chkconfig heartbeat on |
检查测试
启动nginx服务(所有节点)
1 | chkconfig nginx on |
1 | 为了能看出效果 |
测试1:主节点停止heartbeat服务
1 | [root@hahb24_master]# /etc/init.d/heartbeat stop |
测试2:测试脑裂
1 | 主节点master和从节点slave都down掉eth0网卡 |
测试3:VIP漂移后,主master恢复后自动抢占。
1 | #master节点 |
工作中Heartbeat使用场景 - HA高可用
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/08/03/HA高可用之Heartbeat-部署/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!