Keepalived实现Nginx高可用架构

Keepalived是一款开源的免费的高可用软件(项目),主要是用于实现WEB网站、数据库、业务系统的高可用、冗余的。当一台web网站等宕机切换至另外一台,断续为用户提供服务。

Keepalived软件主要有两大功能:健康检测、VRRP冗余,两个功能的剖析如下:

  • 健康检测

类似工作在OSI七层模型中的3、4、7层,可以基于各个层次去实现去对网站、数据库的状态进行检测。一旦发现异常或宕机可以从集群中移除机器,当网站、数据库恢复之后还可以将其加入集群中。

  • VRRP冗余

VRRP是虚拟路由冗余技术,是路由器高可用技术,Keepalived封装发VRRP模块,借助VRRP冗余技术实现2台物理机(Nginx、数据库)的高可用。

VRRP技术可以将2台路由器(物理机)组成虚拟路由集群,在该集群中设置优先级,优先级高的成为Master,优先级低的成为Backup,成为Master路由器拥有VIP地址(特权),由Master路由器负责接收用户的请求、数据转发。成为Master路由器会定时向虚拟路由器集群中机器发送组播包(224.0.0.18),其他Backup接收到Master发送过来的组播请求之后,Master告知Backup“我还存活,你们不能抢占成Master”。一旦Backup接收不到Master发送的组播请求,其余的Backup内部重新选举,优先级高的会变成Master。

实验环境

Keepalived:192.168.154.8

Web1:192.168.154.7

Web2:192.168.154.6

部署web1

安装nginx

yum -y install nginx

Keepalived实现Nginx高可用架构

启用nginx服务

systemctl start nginx

进入网站发布目录

cd /usr/share/nginx/html/

上传网站包

Keepalived实现Nginx高可用架构

Keepalived实现Nginx高可用架构

解压网站包

unzip taobao_web.zip

Keepalived实现Nginx高可用架构

将taobao_web目录下的所有文件目录移动到当前目录

mv taobao_web/* ./

Keepalived实现Nginx高可用架构

关闭防火墙

systemctl stop firewalld

浏览器访问http://192.168.154.7/

Keepalived实现Nginx高可用架构

改用域名访问

进入C:WindowsSystem32driversetc找到hosts文件

添加192.168.154.7 taobao.sbians.com

Keepalived实现Nginx高可用架构

Keepalived实现Nginx高可用架构

部署web2

安装nginx

yum -y install nginx

Keepalived实现Nginx高可用架构

启用nginx服务

systemctl start nginx

进入网站发布目录

cd /usr/share/nginx/html/

上传网站包

Keepalived实现Nginx高可用架构

Keepalived实现Nginx高可用架构

解压网站包

unzip taobao_web.zip

Keepalived实现Nginx高可用架构

将taobao_web目录下的所有文件目录移动到当前目录

mv taobao_web/* ./

Keepalived实现Nginx高可用架构

关闭防火墙

systemctl stop firewalld

浏览器访问http://192.168.154.6/

Keepalived实现Nginx高可用架构

改用域名访问

进入C:WindowsSystem32driversetc找到hosts文件

添加192.168.154.6 taobao.sbians.com

Keepalived实现Nginx高可用架构

Keepalived实现Nginx高可用架构

安装Keepalived(Master)

yum -y install keepalived

Keepalived实现Nginx高可用架构

查看安装结果

rpm -qa | grep -aiE keepalived

Keepalived实现Nginx高可用架构

进入keepalived目录

cd /etc/keepalived/

Keepalived实现Nginx高可用架构

备份keepalived配置文件

cp keepalived.conf.sample keepalived.conf

Keepalived实现Nginx高可用架构

配置keepalived配置文件

vim keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
        sbians_li@163.com
   }
   notification_email_from sbians_li@qq.com
   smtp_server mail.qq.com
   smtp_connect_timeout 30
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.154.8
    }
}

Keepalived实现Nginx高可用架构

启用Keepalived服务

systemctl start keepalived

查看进程

ps -ef | grep -aiE keepalived

Keepalived实现Nginx高可用架构

安装Keepalived(Backup)

yum -y install keepalived

Keepalived实现Nginx高可用架构

查看安装结果

rpm -qa | grep -aiE keepalived

Keepalived实现Nginx高可用架构

进入keepalived目录

cd /etc/keepalived/

Keepalived实现Nginx高可用架构

备份keepalived配置文件

cp keepalived.conf.sample keepalived.conf

Keepalived实现Nginx高可用架构

配置keepalived配置文件

vim keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
        sbians_li@163.com
   }
   notification_email_from sbians_li@qq.com
   smtp_server mail.qq.com
   smtp_connect_timeout 30
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.154.8
    }
}

Keepalived实现Nginx高可用架构

启用Keepalived服务

systemctl start keepalived

查看进程

ps -ef | grep -aiE keepalived

Keepalived实现Nginx高可用架构

检测哪台机器是Master

Keepalived实现Nginx高可用架构

Keepalived实现Nginx高可用架构

检测实验结果

浏览器访问http://192.168.154.8/

Keepalived实现Nginx高可用架构

进入C:WindowsSystem32driversetc找到hosts文件

添加192.168.154.8 taobao.sbians.com

Keepalived实现Nginx高可用架构

浏览器访问域名

Keepalived实现Nginx高可用架构

编写脚本检测nginx状态为0时,停止keepalived服务

vim /data/sh/2025-11-22/check_nginx.sh

#!/bin/bash
CHECK_NGINX=$(ps -ef|grep -aiwE nginx|grep -aivE "grep|check"|wc -l)
if [ $CHECK_NGINX -eq 0 ];then
        systemctl stop keepalived.service
fi

Keepalived实现Nginx高可用架构

在keepalived配置文件中使用vrrp模块

vrrp_script check_nginx {
        script "/data/sh/2025-11-22/check_nginx.sh"
        interval 5
}

Keepalived实现Nginx高可用架构

调用脚本

track_script {
        check_nginx
    }

Keepalived实现Nginx高可用架构

将脚本check_nginx.sh拷贝到另一台机器上

Keepalived实现Nginx高可用架构

将配置文件keepalived.conf拷贝到另一台机器上

scp /etc/keepalived/keepalived.conf 192.168.154.7:/etc/keepalived/

Keepalived实现Nginx高可用架构

修改另一台机上配置文件的优先级

vim /etc/keepalived/keepalived.conf

Keepalived实现Nginx高可用架构

重启keepalived服务

systemctl restart keepalived.service

Keepalived实现Nginx高可用架构

查看日志

tail -fn 20 /var/log/messages

Keepalived实现Nginx高可用架构

© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录
  • 头像
    胡恩泰_7 读者

    收藏了,感谢分享

    无记录