Zhi-配置Keepalived及Keepalived双机主备

本文介绍如何配置Keepalived实现服务器主备切换及自动检测重启Nginx,确保服务高可用。包括配置文件详解、系统服务注册、虚拟IP绑定、故障转移演示等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置Keepalived -主

  1. 进入/etc/keepalived
  2. 通过命令 vim keepalived.conf
#全局配置                                                                                                             
global_defs {                                                                                                         
   #路由id:当前安装keepalived的节点主机标识符,保证全局唯一                                                           
   router_id keep_133                                                                                                 
}                                                                                                                     
                                                                                                                      
#基于vrrp的一个实例   就是一个服务器节点                                                                              
vrrp_instance VI_1 {                                                                                                  
    #表示的状态  当前133nginx的主节点 master|backup                                                                   
    state MASTER                                                                                                      
    #当前实例绑定的网卡                                                                                               
    interface ens33                                                                                                   
    #虚拟路由ip  保证主备节点一致即可                                                                                 
    virtual_router_id 51                                                                                              
    #权重 谁的优先级高,在master挂掉之后,就成为master                                                                
    priority 100                                                                                                      
    #主备之间同步检查时间间隔  s                                                                                      
    advert_int 1                                                                                                      
    #认证授权密码,防止非法节点进入                                                                                   
    authentication {                                                                                                  
        auth_type PASS                                                                                                
        auth_pass 1111                                                                                                
    }                                                                                                                 
    #vip                                                                                                              
    virtual_ipaddress {                                                                                               
        172.16.139.151                                                                                                
    }                                                                                                                 
} 
  1. 查看网卡名称
    在这里插入图片描述
  2. 启动keepalived
    cd /usr/local/keepalived/
    在这里插入图片描述
  3. 查看进程
    ps -ef | grep keepalived
    在这里插入图片描述
  4. 再次查看网卡名称
    在网卡ens33下,多了个151,这个就是虚拟ip,上面配置文件中配置的ip
    在这里插入图片描述

把Keepalived注册为系统服务

  1. 目前结束Keepalived需要kill进程
    在这里插入图片描述

  2. 将Keepalived注入到系统服务操作会更好

    2.1 cd /home/software/keepalived-2.0.20/keepalived/etc/
    在这里插入图片描述
    放到系统两个不同的etc目录下
    2.2 cp init.d/keepalived /etc/init.d/
    cp sysconfig/keepalived /etc/sysconfig/

刷新服务加载
systemctl daemon-reload
systemctl start keepalived.service
在这里插入图片描述

配置Keepalived -备

  1. 选择另外一个服务器配置备用节点,安装Keepalived
  2. 配置备节点 Keepalived
    cd /etc/keepalived/
    vim keepalived.conf
bal_defs {                                                                                                            
   #路由id:当前安装keepalived的节点主机标识符,保证全局唯一                                                           
   router_id keep_137                                                                                                 
}                                                                                                                     
                                                                                                                      
vrrp_instance VI_1 {                                                                                                  
    #表示的状态  当前137nginx的备节点 master|backup                                                                   
    state BACKUP                                                                                                      
    #当前实例绑定的网卡                                                                                               
    interface ens33                                                                                                   
    #虚拟路由ip  保证主备节点一致即可                                                                                 
    virtual_router_id 51                                                                                              
    #权重 谁的优先级高,在master挂掉之后,就成为master                                                                
    priority 80                                                                                                       
    #主备之间同步检查时间间隔  s                                                                                      
    advert_int 1                                                                                                      
    #认证授权密码,防止非法节点进入                                                                                   
    authentication {                                                                                                  
        auth_type PASS                                                                                                
        auth_pass 1111                                                                                                
    }                                                                                                                 
    #vip                                                                                                              
    virtual_ipaddress {                                                                                               
        172.16.139.151                                                                                                
    }                                                                                                                 
}

在这里插入图片描述
3.启动keepalived
systemctl start keepalived

Keepalived实现双机主备高可用演示

  1. 配置域名
    在这里插入图片描述
    其中,133是主节点 137是备节点 151是主备Keepalived配置文件中的虚拟IP(vip)
  2. 启动主备节点的Keepalived并查看ip
    2.1 133主服务器上
    在这里插入图片描述
    2.2 137备服务器上
    在这里插入图片描述
    我们发现151虚拟IP绑定的是主节点133
  3. 请求151所对应的域名在这里插入图片描述
    访问的也是主节点133
  4. 模拟133节点Keepalived服务挂掉,再次请求151所对应的域名

在这里插入图片描述
在这里插入图片描述
此时发现151访问的服务器是备用节点137,查看节点上面的ip发现151vip已经绑定到备用节点上。主节点上ip已经没有151了
4.1 133主服务器上
在这里插入图片描述
4.2 137备服务器上
在这里插入图片描述

  1. 模拟133节点恢复Keepalived服务
    在133节点上: systemctl start keepalived.service
    在这里插入图片描述
    发现又重新访问133主服务器了,这样就实现了高可用。
    在这里插入图片描述

Keepalived配置nginx自动重启

  1. 假设nginx宕机了,查看IP
    在这里插入图片描述
    请求域名,发现访问不了了,这是因为请求的域名还是访问到133主节点的nginx,为了保证高可用,应该要让Keepalived这个组件定时的检测nginx是否正常,如果nginx发生问题,要尝试重启Nginx,重启成功则正常继续。如果重启失败,则需要切换到137备用节点。

在这里插入图片描述

  1. 增加nginx重启检测脚本
    2.1 cd /etc/keepalived/
    vi check_nginx_alive.sh

配置文件如下:

#!/bin/bash                                                                         
                                                                                    
A=`ps -C nginx --no-header |wc -l`                                                  
#判断nginx是否宕机,如果宕机了,尝试重启                                            
if [ $A -eq 0 ];then                                                                
    /usr/local/nginx/sbin/nginx                                                     
    #等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机    
    sleep 3                                                                         
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then                              
        killall keepalived                                                          
    fi                                                                              
fi 

执行shell脚本发现没有执行权限,赋予权限
chmod +x check_nginx_alive.sh
执行文件
./check_nginx_alive.sh
在这里插入图片描述

  1. 做完上述命令再次请求域名
    在这里插入图片描述

发现域名可以再次请求,说明nginx已经通过刚刚shell命令重启

  1. 配置让keepalived定时监听nginx脚本
    vi keepalived.conf
    添加配置
vrrp_script check_nginx_alive {                                                     
    script "/etc/keepalived/check_nginx_alive.sh"                                   
    interval 2 #每隔两秒运行上一行脚本                                              
    weight 10 #如果脚本运行成功,则升级权重+10                                      
}

在这里插入图片描述

  1. 配置了一个脚本,需要去调用,在vrrp_instance中新增监控
    track_script {                                                                  
            check_nginx_alive  #追踪nginx脚本                                           
        }
    

在这里插入图片描述

  1. 重启keepalived让配置文件生效
    systemctl restart keepalived.service
  2. 手动停止nginx发现 还是可以正常运行,这样就实现了nginx 7*24小时之久运行
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值