nginx+keepalived 高可用主从配置详解

2019-10-17 17:36:42王冬梅

4.设置 keepalived 服务开机启动

chkconfig keepalived on

5.修改 Keepalived 配置文件

vi /etc/keepalived/keepalived.conf

  ! Configuration File for keepalived (!、#都是注释)

  global_defs { #全局配置
  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id LVS_01 #这个配置要唯一
  } 

  vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight -20 ## 如果条件成立,权重-20
  } 

  vrrp_instance VI_1 { #实例 VI_1 名字可以随意 但是不建议修改
    state MASTER # 主服务器MASTER 从服务器 BACKUP
    interface em1 # em1 网卡
    virtual_router_id 51 #virtual_router_id 主备要一致
    priority 100   # 优先级 数字越大 优先级越高 priority 的值 主服务器要大于 从服务器
    advert_int 1  #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication { # 主从通信 验证类型及密码 
      auth_type PASS  #设置vrrp验证类型,主要有PASS和AH两种
      auth_pass 1111  #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    } 

    ## 将 track_script 块加入 instance 配置块
    track_script {
      chk_nginx ## 执行 Nginx 监控的服务
    }

    virtual_ipaddress {
    192.168.38.100/24 #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
    }
  } 

6.编写 Nginx 状态检测脚本

vi /etc/keepalived/nginx_check.sh

内容如下:

  #!/bin/bash

  A=`ps -C nginx –no-header |wc -l`
  if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

      killall keepalived
    fi
  fi

保存后,给脚本赋执行权限:chmod +x/etc/keepalived/nginx_check.sh

7.注意点:Keepalived主从配置文件不同点

  a.router_id 不一致

  b.state 主服务器是MASTER ,从服务器是 BACKUP

  c.priority 主服务器 大于 从服务器

8.keepalived 命令

  启动 : servicekeepalived start

  停止: servicekeepalived stop

  重启: servicekeepalived restart

9.注意的问题

a.vip没绑定成功

解决方案:ip addr 查看 本地ip所在网卡的名称 ,然后修改 配置文件