应用keepalived主从容灾

一。 简单介绍keepalived

  keepalived提供基于linux高可用性负载均衡技术,基于VRRP协议(虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP))主要 用于主从结构提供服务  主从机器 必须安装keepalived  主机器 会默认给主机设置一个虚拟ip  同时将该虚拟ip和主机器的mac地址路由出去,当主机挂掉后 从机检测到主机不可达(互相发送心跳)  将虚拟ip收回  将虚拟ip和从机mac地址路由出去  其他机器访问的就是从机



keepalive配置解释

  默认的配置文件位于 /etc/keepalived/keepalived.conf目录下

keepalive 提供了vip转移  lvs健康检查  自定义健康检查等功能

常用配置文件解释

#全局配置
global_defs {
   #出现机器挂掉通知邮件配置 可以配置多个邮件地址
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   #从哪个邮箱发出
   notification_email_from Alexandre.Cassen@firewall.loc
   #smtp服务器
   smtp_server 192.168.200.1
   #smtp连接超时时间
   smtp_connect_timeout 30
   #路由编号 每台机器不一样 发送邮件 使用这个表示表示当前主机挂了
   router_id LVS_DEVEL
}
#定义检测服务是否停止的脚本 该脚本只要返回任何非0的数字和字符串表示服务器存活 返回0表示服务器挂了
vrrp_script chk_cur_tomcat {
    #自己编写该脚本 注意脚本返回0表示挂了
    script "/etc/keepalived/mytomcat_check.sh"
    #调用该脚本的检测时间 每 2s检查一次
    interval 2
    #当通过调用脚本检测失败后 vrrp_instance 配置的priority会减掉该weight  新的priority=priority-weight=95 再次失败继续减少
    weight -5
    #失败3次 才算失败 重连3次
    fall 3 
    #成功两次 才算成功 
    rise 2 
}

#配置当前ip映射到虚拟ip
vrrp_instance tomcat135 {
    #表示主从部分的主机 是个表示 对应的是BACKUP
    state MASTER
    #虚拟ip绑定的网卡名称
    interface eth0
    #eth0的物理ip
    mcast_src_ip 192.168.58.135
    #虚拟路由编号 主从必须设置为一致
    virtual_router_id 51
    #优先级 优先级高的选举称为Master的机会高(1-254)
    priority 100
    #组播发送的间隔时间 检测心跳 两台机器配置一致
    advert_int 1
    #验证信息 使用密码 密码时1111 两台机器一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟ip 给网卡绑定一个虚拟网卡 实际就是 ifconfig eth0 192.168.58.140/24 创建
    virtual_ipaddress {
        192.168.58.140
    }
    #表示诊断调用vrrp_script 
    #当master上的资源由于故障切换到backup上时候,那么如果想再切回来到master 就需要关闭backup的keepalived的服务才可以。
    track_script {
       chk_cur_tomcat 
    }
}


二。 实例演示

模拟场景

   192.168.58.135 部署tomcat 端口80  安装keepalived

       配置以上脚本  mcast_src_ip 修改为当前ip192.168.58.135 

      编写脚本/etc/keepalived/mytomcat_check.sh"

check_result=`ps -Cjava -f --no-heading | wc -l`
if [ $check_result -eq 1 ]
then
  #0 success
  exit 0
else
  exit 1
fi

  启动 keepalived service keepalived start  

  通过 ip addr 查看eth0网卡上多了一个虚拟ip 192.168.58.40



   192.168.58.136 部署tomcat 端口80  安装keepalived

    配置以上脚本  mcast_src_ip 修改为当前ip192.168.58.136 

                             state BACKUP 表示从机

                              priority 90 比主机略少 优先级低于主机

    编写脚本/etc/keepalived/mytomcat_check.sh和135一样

    启动 keepalived service keepalived start  

访问 http://192.168.58.140 发现访问了 135的tomcat  停止135的tomcat 发现136的eth0网卡上多了一个虚拟ip 140 访问140 进入136的tomcat

如果重新启动 135的tomcat 关闭136的tomcat 发现虚拟ip不能再次回到 主机135了   只能停止 136的keepalived才能重新切回到133

同理 也可以配置 keepalived+nginx集群


原文地址:https://www.cnblogs.com/liaomin416100569/p/9331209.html