keepalived双机热备(代码片段)

author author     2022-10-26     758

关键词:

1. keepalived 双机热备的原理

首先,要知道 keepalived 有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。

keepalived 工作在网络层,通过VRRP 协议,将信号广播到网络内的所有机器。当网络组中的主机收到广播后,就会检测自己的优先级,如果发现本机的优先级是最高,则将VIP绑定到本机的网卡。

所以,keepalived 软件主要是靠VRRP 协议通信。所以,当keepalived 机器组里的机器不能正常通信后,就会出现脑裂问题——即有两台以上的主机在抢占VIP 。

keepalived 通常用在组建双机热备,当master 出现故障后,备机会获得vip绑定,替代出现故障的机器提供服务。当然热备的主机数量可以不止两台。

2. 搭建双机热备的思路

有两台nginx 提供web服务功能,在nginx 服务器上各安装keepalived 软件,其中一台配置为master,另一台配置成backup。keepalived 的配置文件可以统一完成这些需求。keepalived 还可以自定义检测nginx健康情况的脚本。这个检测nginx的脚本功能是,当keepalive发现nginx服务出现问题后,先尝试重启nginx服务,如果重启nginx服务失败,则keepalived 软件自动停止。当keepalived 停止工作后,master主机将不再对网络组内的机器发送vrrp 广播。这时,其他的backup 主机,就会根据优先值大小,较大优先值的主机有权将vip 绑定到自己的网卡。这个切换过程是自动完成,对请求服务的客户来说,几乎察觉不到。

3. keepalived 搭建双机热备的过程

3.1. 搭建环境说明

两台 centos7 系统的主机 : cenvm71 和 cenvm72

3.2. 在两台主机上安装keepalived 软件

yum  install   -y   keepalived 

说明,安装keepalived 的方法有很多,除了用yum 安装,也可以下载安装包,经过编译安装。

3.3. 在两台机器上安装nginx 服务

为了简化测试的过程,我这里直接用yum 安装nginx 服务

1. 安装:
yum  install  -y   nginx

2. 修改 html 页面用于后面的测试:
vi   /var/share/nginx/html/index.html
分别在两台主机的nginx 的默认html页面写入不同的内容,只要能区分两台服务器就可以了。

3. 启动nginx
   systemctl   start   nginx 

3.4. 修改master 主机的keepalived 配置文件

keepalived 的配置文件所在路径,默认安装的,在 /etc/keepalived/ 目录

[[email protected] default]# cat  /etc/keepalived/keepalived.conf 
global_defs               # global_defs 这个模块的设置不需要管
   notification_email 
     [email protected]      # 这个是邮件设置,当主机的 keepalived 有问题后,将发邮件
   
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL

vrrp_script chk_nginx 
    script "/usr/local/sbin/check_ng.sh"     #  这是用来检测nginx 服务健康情况的脚本,需要自己写
    interval 3                                             #   检测时间间隔是3秒

vrrp_instance VI_1 
    state MASTER                                 # master 名字
    interface  eno16777736                   # 绑定的网卡,网卡名字根据自己机器而不同
    virtual_router_id 51                          # 工作组号,master 和 backup 所有的机器配置都一样,表示工作在一个组内
    priority 100                                  # 这个就是 优先级,范围0-255,值越大优先级越高
    advert_int 1
    authentication 
        auth_type PASS    
        auth_pass hell>com                    # 用于传输认证,master 和 backup 上都要一样
    
    virtual_ipaddress 
        192.168.188.109                        # 这个是虚拟 ip 地址,即 vip ,实际生产环境是一个对外的外网 IP;
    
    track_script 
        chk_nginx                  # 监测调用的模块,就是上面  vrrp_script 模块的名字。调用脚本,检查nginx 服务。
    

3.5. 修改 backup 主机上的keepalived 配置文件

backup 主机上的配置文件和 master 主机的几乎一致,只需要修改 优先级即可,最好根据自己的实际情况修改。

[[email protected] html]# cat /etc/keepalived/keepalived.conf 
global_defs 
   notification_email 
     [email protected]
   
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL

vrrp_script chk_nginx 
    script "/usr/local/sbin/check_ng.sh"    # 脚本,用来监测 nginx 服务的工作情况。
    interval 3

vrrp_instance VI_1 
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 90                                # 这里的优先级比 master 上的要低
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass hell>com
    
    virtual_ipaddress 
        192.168.188.109
    
    track_script 
        chk_nginx
    

3.6. 在master 和 backup 上创建 nginx服务监测脚本

[[email protected] html]# cat /usr/local/sbin/check_ng.sh 
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

4. 测试 keepalived 高可用

首先看看两台主机的ip :

ip   add   show

技术分享图片
可以看到在 master 上,已经出现vip 192.168.188.109 被绑定在网卡上了。

在浏览器访问一下 vip 192.168.188.109:
技术分享图片
可以看到,现在访问的nginx服务是master 主机(cenvm71)上的html页面。

将cenvm71 主机上的keepalived 服务停止:

systemctl   stop   keepalived 

看看结果:技术分享图片
可以看到,当master 主机上的 keepalived 服务停止后,vip 马上就切换到 backup 机器了。

接着,用浏览器再访问一次 vip :
技术分享图片
可以看到,客户端(浏览器)访问vip ,返回的页面已经是 backup 上的nginx 提供的页面了。

最后,在master 机器上重新启动keepalived 服务:

systemctl   start   keepalived 

看看结果:
技术分享图片
可以看到,vip 马上切换会 master 主机了。

5. 总结

通过以上的实验,可以看出,通过keepalived 实现双机热备切换,配置还是挺方便的,切换速度也很快。在实际环境中,当keepalived 监测的服务出现故障后,keepalived 才会自动停止。keepalived 停止工作,则vrrp 广播也停止了。其他的backup机器就会通过优先级判断谁将顶替master 对外提供服务。所以,监测脚本需要根据实际生产需求,重新编写。

keepalived双机热备(代码片段)

1、Keepalived:专为LVS和HA设计的一款健康检查工具功能:支持故障切换(调度器)支持jie‘dian节点健康检查(web服务器)使用VRRP(虚拟路由冗余协议),一主多备,共用同一个IP地址漂移地址,群集地址),但优先级不同。2、Kee... 查看详情

01-keepalived双机热备(代码片段)

keepalived双机热备1.keepalived双机热备的原理首先,要知道keepalived有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来... 查看详情

keepalived+nginx双机热备搭建(代码片段)

keepalived+nginx双机热备搭建一、准备工作1.1准备两台centos7.91.2nginx与keepalived软件双机安装1.3ip分配1.4修改主机名1.5关闭selinux(双机执行)1.6修改hosts(双机执行)二、安装keepalived2.1执行一下命令安装keepalived(... 查看详情

浅谈keepalived双机热备(代码片段)

一、Keepalived双机热备的基础知识keepalived官方网站:www.keepalived.org/在非LVS环境中keepalived也可以作为热备软件使用。1、Keepalived作用keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能—... 查看详情

centos7keepalived双机热备(代码片段)

Centos7keepalived双机热备操作环境:keepalived热备份(双机热备)Centos7系统ip地址:192.168.80.100--主服务器Centos7系统ip地址:192.168.80.101--从服务器windows系统ip地址:192.168.80.20--测试客户端Centos7系统ip地址:192.168.80.100操作如下:1、keepalived软件... 查看详情

群集架构篇(代码片段)

——nginx反向代理+keepalived双机热备+tomcat服务器池+后端数据库目录第一部分环境准备第二部分部署调度器—搭建Nginx+Keepalived(双机热备)第三部分部署服务器池—搭建Tomcat第四部分搭建Mysql数据库第五部分案例应用第一部分环境... 查看详情

你需要了解的高可用方案之使用keepalived搭建双机热备一览(代码片段)

         在之前一篇使用nginx搭建高可用的解决方案的时候,很多同学会问,如果nginx挂掉怎么办,比如下面这张图:      你可以清楚的看到,如果192.168.2.100这台机器挂掉了,那... 查看详情

linux安装mysql配置双机热备(主/主复制)+keepalived(故障转移)(代码片段)

...制1)设置22服务器(主服务器)配置Mysql+Keepalived故障转移的环境1.概述:2.安装keepalived并将其配置成系统服务。主服务器1和主服务器2两台机器上同样进行如下操作:1)主服务器1机器上的keepalived.conf配... 查看详情

keepalived双机热备

关于keepalived专为LVS和HA设计的一款健康检查工具支持故障自动切换(Failover)支持节点健康状态检查(HealthChecking)官方网站:http://www.keepalived.org/keepalived概述及安装keepalived的热备方式VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗... 查看详情

keepalived做双机热备

下载keepalivedhttp://www.keepalived.org/software/keepalived-1.2.7.tar.gz解压以及编译tarxzfkeepalived-1.2.7.tar.gz./configure--prefix=/opt/keepalivedmake&&makeinstall配置keepalived创建keepalived配置文件keepali 查看详情

keepalived做双机热备

下载keepalivedhttp://www.keepalived.org/software/keepalived-1.2.7.tar.gz解压以及编译tarxzfkeepalived-1.2.7.tar.gz./configure--prefix=/opt/keepalivedmake&&makeinstall配置keepalived创建keepalived配置文件keepali 查看详情

keepalived+lvs双机热备

                     Keepalived双机热备使用 Keepalived 做双机热备非常简单,经常和 LVS 搭配来实现高可用 查看详情

keepalived实现双机热备

Keepalived实现双机热备:双机热备一般指的是两台机器设备同时在运行,但是只有一台处于提供服务的状态。当其中一台设备出现故障,那么另一台设备接管角色,继续提供服务,他们之间的切换时间非常之短,基本是无缝切换... 查看详情

使用keepalived实现双机热备

...动接管并且提供服务,而且切换的时间非常短。下面来以keepalived结合tomcat来实现一个web服务器的双机热备。keepalived的工作原理是VRRP(VirtualRouterRedundancyProtocol)虚拟路由冗余协议。在VRRP中有两组重要的概念:VRR 查看详情

keepalived双机热备

 Keepalived双机热备keeplived是专门针对LVS设计的一款辅助工具,采用的是vrrp(虚拟路由冗余协议)热备协议,以软件的方式实现Linux服务器的多机热备。主要功能是实现故障切换,当一台路由器发生故障的时候,另一台马上接... 查看详情

keepalived实现双机热备

一、主机从机都安装keepalived1.安装yuminstall-ykeepalived2.备份cd/etc/keepalivedcpkeepalived.confkeepalived.conf.back二、主机配置并启动1.创建配置文件echo"!ConfigurationFileforkeepalived#主机配置global_defs{#id,主从不同  router_ 查看详情

keepalived双机热备

...LVS设计的一款辅助工具,主要功能是实现故障切换1、LVS+Keepalived高可用群集实验的目的是实现双机热备的同时实现负载均衡群集,当主调度器发生故障的时候,从服务器会继续提供调度工作,保证用户的正常访问。两台从调度器... 查看详情

nginx+keepalived双机热备

阅读目录序nginxkeepalived测试问题:杀死keepalived进程后,可以实现vip的偏移,但是原机器的vip无法自动删除回到顶部序双机热备是指两台机器都在运行,但并非两台机器同时在提供服务。当提供服务的一台出现故障的时候,另外... 查看详情