环境:

         主机(master):192.168.11.160

         主机(slave):192.168.11.20

         流动 ip:192.168.11.100

         

HA高可用集群配置_第1张图片


1. 关闭主从机器的防火墙,配置文件/etc/selinux/config,修改SELINUX=disabled,iptables -F


2. 编辑主从机器的hosts文件/etc/hosts,修改hostname,便于标记

    192.168.11.160 master

    192.168.11.20 slave


3. 主从机器上yum安装heartbeat和依赖包libnet

    说明:默认yum没有heartbeat,需下载安装扩展源,链接如下:

    命令 yum install -y heartbeat libnet

    www.lishiming.net/data/p_w_upload/forum/epel-release-5-4_32.noarch.rpm

    www.lishiming.net/data/p_w_upload/forum/epel-release-5-4_64.noarch.rpm

    www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm

    www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_64.noarch.rpm

 

主从配置

1. master上拷贝heartbeat的配置文件

    说明:authkey文件,主从通信验证作用

    命令 cd /usr/share/doc/heartbeat-3.0.4/

    命令 cp authkeys   ha.cf   haresources    /etc/ha.d/


2. 编辑master文件/etc/ha.d/authkeys,并赋予600权限

    说明:启用认证;加密级别为3(md5),加密级别,1<3<2

    内容:         

    auth 3
    3 md5 Hello!

    授权:         

    chmod 600 /etc/ha.d/authkeys

3. 编辑master上/etc/ha.d/haresources文件

     说明:主的主机名;虚拟ip,即主从共用的对外ip,当主ip挂了,流动ip自动流动到从主

机上,并对外开放;主从服务对象为nginx,主宕机了,切换为从上

     内容:           

       master 192.168.11.110/24/eth0:0 nginx

     一网卡配置多个ip:复制/etc/sysconfig/network-scripts/ifcfg-eth0,为ifcfg-eth0:\1,注释掉mac和uuid,重启添加一个新的ip即可


4. 编辑master上/etc/ha.d/vim ha.cf文件 ,清空配置,自定义编辑

   debugfile /var/log/ha-debug
   logfile /var/log/ha-log
   logfacility local0
   keepalive 2
   deadtime 30
   warntime 10
   initdead 60
   udpport 694
   ucast eth0 192.168.11.20
   auto_failback on
   node master
   node slave
   ping 192.168.11.1
   respawn hacluster /usr/lib/heartbeat/ipfail

  解释:

 debugfile /var/log/ha-debug  # debug文件 

  logfile /var/log/ha-log  #日志文件

  logfacility local0  #日志级别

  keepalive 2  #2秒探测一次

  deadtime 30  #30秒探测不到,认为死掉

  warntime 10  #10秒探测不到,告警至日志文件中

  initdead 60  #为对方服务器重启预留60秒时间

  udpport 694  #心跳线通信端口为694

  ucast eth0 192.168.11.20  #配置对方的ip,也可以使用bcast广播形式,去搜索ip,这里直接指

                                              #定ip(实验中心跳网卡和主从网卡共用,不怎么安全,实际线上,最好

                                              #给心跳独立网卡或用串口通信)

  auto_failback on  #当主恢复,从自动下线

  node master  #两个节点

  node slave  #两个节点

  ping 192.168.11.1  #仲裁ip,仲裁主从谁在线

  respawn hacluster /usr/lib/heartbeat/ipfail  #以hacluster身份去运行脚本后面的脚本,该脚本用户

                                                                        #检测网络连通性,heartbeat自带的断网切换的工具-ipfail,

                                                                        #64位系统位置/usr/lib64/heartbeat/ipfail


5. 将主上编辑好的三个配置文件拷贝至从上

    命令 cd  /etc/ha.d/

    命令 scp authkeys haresources ha.cf  slave:/etc/ha.d/

    

6. 修改slave上的配置文件/etc/ha.d/ha.cf

    说明:修改为主的ip

    命令 vim /etc/ha.d/ha.cf

    内容:           

 ucast eth0 192.168.11.160

7. master和slave上安装nginx

    命令 yum install -y nginx


8. 依次启动master、slave上的heartbeat

    说明:nginx 无需手动启动;先启动主上的heartbeat,再启动从上heartbeat,等一段时间,主

上虚拟ip自动开启,nginx也被拉起,从上nginx不会立即起来

    命令 /etc/init.d/heartbeat start

    ip addr; ifconfig ; ps aux |grep  nginx


9. master、slave上修改nginx首页

    说明:先浏览配置文件cat /etc/nginx/nginx.conf-->找到"include /etc/nginx/conf.d/*.conf;"- ->cd /etc/nginx/conf.d/ -->cat default.conf-->找到“root /usr/share/nginx/html”,重定向首页文件


     主:echo "11111111111master" > /usr/share/nginx/html/index.html

     从:echo "22222222222222slave" > /usr/share/nginx/html/index.html


 HA高可用集群配置_第2张图片


10. 测试

  a. master上器上插入一条iptbales防火墙规则,禁用ping

      iptables -A INPUT -p icmp -j DROP


      结果:主、从上查看日志tail -f /var/log/ha-log,发现主heartbeat挂掉;从heartbeat起来接管,并拉起nginx

      HA高可用集群配置_第3张图片

 

 b. master上器上去掉icmp规则,重新开启ping

     iptbales -D INPUT -p icmp -j DROP


     结果: 从上释放掉了流动ip,主自动启用,网页重新回到主机器上主机器上;停掉heartbeat, /etc/init.d/heartbeat stop,也会自动切换到从机器

  HA高可用集群配置_第4张图片