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

pythonpath pythonpath     2023-04-11     454

关键词:

keepalived 双机热备

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/ 目录

[root@cenvm71 default]# cat  /etc/keepalived/keepalived.conf 
global_defs               # global_defs 这个模块的设置不需要管
   notification_email 
     hell@hell.com      # 这个是邮件设置,当主机的 keepalived 有问题后,将发邮件
   
   notification_email_from root@hell.com
   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 主机的几乎一致,只需要修改 优先级即可,最好根据自己的实际情况修改。

[root@cenvm72 html]# cat /etc/keepalived/keepalived.conf 
global_defs 
   notification_email 
     hell@hell.com
   
   notification_email_from root@hell.com
   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服务监测脚本

[root@cenvm72 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 对外提供服务。所以,监测脚本需要根据实际生产需求,重新编写。

配置华为防火墙双机热备(代码片段)

Web配置防火墙双机热备:命令行配置防火墙双机热备:FW1[FW1]intg1/0/1//进入接口 [FW1-GigabitEthernet1/0/1]vrrpvrid1virtual-ip192.168.1.1active//配置VRRP为主[FW1-GigabitEthernet1/0/1]quit//退出[FW1]intg1/0/2//进入接口[FW1-Gigab 查看详情

mysql双机热备实现方案(代码片段)

...份强调的是数据恢复而不是应用的故障转移。2、什么是双机热备?   双机热备从广义上讲,就是对于 查看详情

keepalived双机热备(代码片段)

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

keepalived双机热备(代码片段)

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

windows配置mysql双机热备(代码片段)

文章目录概述试验环境试验目的准备数据库准备账号测试账号修改配置文件修改配置文件my.ini重启服务器检查master服务状态指定同步位置用changemasterto命令指定同步位置检查slave服务状态测试建表测试插入数据测试删除数据更新... 查看详情

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设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能—... 查看详情

群集架构篇(代码片段)

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

玩转华为ensp模拟器系列|ipsec网关主备双机热备(代码片段)

...为模拟器实验目标建立IPSec隧道的一端使用两台设备进行双机热备,可以将IPSec的配置信息、隧道建立信息等从主设备备份到备用设 查看详情

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软件... 查看详情

配置华为防火墙双机热备(代码片段)

Web配置防火墙双机热备:命令行配置防火墙双机热备:FW1[FW1]intg1/0/1//进入接口 [FW1-GigabitEthernet1/0/1]vrrpvrid1virtual-ip192.168.1.1active//配置VRRP为主[FW1-GigabitEthernet1/0/1]quit//退出[FW1]intg1/0/2//进入接口[FW1-GigabitEthernet1/0/2]vrrpvrid2virtu... 查看详情

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

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

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

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

搭建nginx高可用集群(keepalived+双机热备)(代码片段)

...,所以我们也需要给Nginx配置高可用机制。可以使用keepalived来实现Nginx的高可用。二、Nginx双机热备双机热备方案是目前使用最为普遍的一种高可用方案,双机热备就是指一台服务器整在提供服务,另外一台作为备用... 查看详情

双机热备

1双机热备双机热备是一种概念,各种设备均可以采用此概念进行部署,比如三层交换机、路由器、防火墙、服务器等。如果仅部署一台设备,难免会有单点故障的风险,所以部署两台,一主一备较为保险,一台坏了,另一台自... 查看详情

防火墙双机热备

防火墙双击热备 查看详情

防火墙双机热备

防火墙双机热备双机热备的工作原理华为的双机热备是通过部署两台或多台防火墙实现热备及负载均衡,两台防火墙相互协同工作,犹如一个更大的防火墙。双机热备配置\\拓扑图:\\\\推荐步骤:\\将防火墙接口划分到指定的区... 查看详情

双机互备是什么意思?双机互备就是双机热备吗?

看到不少小伙伴在问,双机互备是什么意思?双机互备就是双机热备吗?今天我们就来一起简单了解了解吧!双机互备是什么意思?双机互备就是双机热备吗?双机互备是指在双机热备的基础上,两个... 查看详情