ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

keepalived主备高可用

2021-10-23 20:05:06  阅读:223  来源: 互联网

标签:可用 主机 keepalived VRRP 网卡 VIP 主备 master


keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议

keepalived适合为没有状态变化的服务提供主备功能,例如:LVS、Nginx、Mycat、各种代理等。有状态变化的服务需要做主从同步。保证backup上线时与master状态基本相同。

基本工作流程:VIP漂移

将N台提供相同功能/服务的PC/服务器组成一个路由器组(vrrp_instance),这个组里面有一个master和多个backup,全部配置相同的VIP(虚拟IP),keepalived启动后VIP会加入master的网卡,master通过VIP对外提供服务。master会主动发VRRP广播,当backup一定时间收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,新master在网卡中加入配置的VIP接受外部请求。当master重新启动后backup自动下线进入待机状态(亦可配置成不自动替换)。这样的话就可以保证路由器组的高可用了。

基本配置说明

安装:CentOS 6.4以上使用yum安装

 yum install keepalived -y
keepalived.conf 
global_defs 全局配置
vrrpd
    1. vrrp_script添加一个周期性执行的脚本。脚本的退出状态码会被调用它的所有的VRRP Instance记录。
    2. vrrp_sync_group将所有相关的VRRP实例定义在一起,作为一个VRRP Group,如果组内的任意一个实例出现问题,都可以实现Failover
    3. garp_group
    4. vrrp_instance
vim /etc/keepalived/keepalived.conf

#主机配置:(从机主要不同点:router_id、state、priority)
global_defs {
   notification_email {
     linux@linux.com   #报警接收邮箱
     failover@firewall.loc
   }
   notification_email_from root@linux.com    #报警发送邮箱
   smtp_server 127.0.0.1                     #指定smtp邮件服务器地址
   smtp_connect_timeout 30                   #指定smtp连接超时时间
   router_id LVS_1                           #负载均衡唯一标识,在局域网内应该是唯一的。故障发生时,邮件通知会用到     
}

vrrp_instance VI_1 {                                     #VRRP实例名称 主备一致
          state MASTER                                   #初始状态,备用服务器上为BACKUP 
          interface eth0                                 #监听本机的是eth0网卡端口,用来发VRRP包做心跳检测(ifconfig查看本机网卡接口、要开放广播)
          virtual_router_id 51                           #虚拟路由ID,取值在0-255之间,用来区分多个instance的VRRP组播,同一网段内ID不能重复;主备一致
          advert_int 1                                   #检查间隔默认为1秒,即1秒进行一次master选举(可以认为是健康查检时间间隔)
          priority 100                                   #优先级,备用服务器上为90
          nopreempt                                      #设置为不抢占(旧主机重新上线后,不替换当前主机)。默认是抢占
          authentication {                               #通讯秘钥 主备一致    
            auth_type PASS                               #默认是PASS类认证
            auth_pass 1111                               #密码只识别前8位
          }

          virtual_ipaddress {                            #虚拟ip地址,可以有多个地址每个地址占一行,不需要子网掩码,主备一致
            192.168.1.217                                #VIP地址(对外暴露),IP添加到eth0网卡          
            192.168.1.218/24                             #24位掩码
            192.168.1.219 dev eth0
          }
          #virtual_ipaddress 中的ip需要通过ip add指令查看绑定状态(ipconfig看不到)。
          #相当于linux指令 ip addr add 192.168.1.217 dev eth0
          #正常情况只有MASTER的网卡中会有VIP,从机没有。当出现多机网卡存在VIP时,可能出现了脑裂问题
}

启动

systemctl start keepalived(在yum安装时直接使用此命令启动服务)

Shell脚本

正常情况下当master的keepalived停止运行时,backup收不到master的心跳会触发优先级最高的backup变成新master,VIP漂移到新master。

但如果希望keepalived监控本机的某个应用,应用挂掉后本机keepalived也停止运行主动触发VIP漂移。

此时需要keepalived执行sh脚本,检查目标功能/服务是否正常,若异常主动停止本机keepalived触发VIP漂移。

sh可以检查Nginx、Mysql、Http服务等等...

脑裂

比如两台keepalived一主一备,中间通信中断了,但是两台机器都正常运转。此时主机还正常可用,从机检测不到主机升级为主机。出现了一个集群双主的情况。

1、添加冗余的心跳线(网线/串口等),增加网络可高度,例如:双心跳线(心跳线也HA),,尽量减少“裂脑”发生几率;

2、监控keepalived从机出现ping不通主机IP时,无论主机是否真的挂了,从机可能会变成主机,已经出现脑裂风险了。此时发送报警人工检查,或是通过程序尝试强制终止主机上的keepalived进程。

      注意监控从机比较保险。如果监控主机,主机ping不通从机,并不能确定从机是已经切换为主机了还是真的挂了。不确定是否真的存在脑裂风险。

 

标签:可用,主机,keepalived,VRRP,网卡,VIP,主备,master
来源: https://blog.csdn.net/shanchahua123456/article/details/99816524

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有