CentOS 7 下 Keepalived + Nginx 实现双机高可用

CentOS 7 下 Keepalived + Nginx 实现双机高可用

文章目录

服务器准备

服务信息
主机名 IP 角色 其他
my-web01 192.168.157.31 nginx keepalived master
my-web02 192.168.157.32 nginx keepalived backup
VIP 192.168.157.30
服务架构

服务安装

nginx
bash 复制代码
# 所有主机
[root@my-web01 ~]$ yum -y install nginx
Keepalived
bash 复制代码
# 所有主机
[root@my-web01 ~]$ yum -y install keepalived

服务配置

nginx
  • web01
bash 复制代码
[root@my-web01 ~]$ cat /usr/share/nginx/html/index.html 
<!DOCTYPE html>
<h1>my web01 ~~~</h1>
  • web02
bash 复制代码
[root@my-web02 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
Keepalived
  • web01
bash 复制代码
[root@my-web01 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
}

vrrp_instance VI_1 {
    interface ens33
    state MASTER
    priority 200

    virtual_router_id 33
    virtual_ipaddress {
        192.168.157.30
    }

    authentication {
        auth_type PASS
        auth_pass password
    }

    track_script {
        check_nginx
    }
}
  • web02
bash 复制代码
[root@my-web02 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

vrrp_script check_nginx {
    script "killall -0 nginx"
    interval 2
}

vrrp_instance VI_1 {
    interface ens33
    state BACKUP
    priority 100

    virtual_router_id 33
    virtual_ipaddress {
        192.168.157.30
    }

    authentication {
        auth_type PASS
        auth_pass password
    }

    track_script {
        check_nginx
    }
}

启动服务

nginx
bash 复制代码
# 所有节点
systemctl start nginx
keepalived
bash 复制代码
# 所有节点
systemctl start nginx

服务验证

查看 VIP 状态
bash 复制代码
# web01 -- 获取 VIP
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33

# web01 -- 未获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33
CURL 命令访问
bash 复制代码
# VIP -- 访问到 web01
[root@my-web01 ~]$ curl 192.168.157.30
<!DOCTYPE html>
<h1>my web01 ~~~</h1>

# web01
[root@my-web01 ~]$ curl 192.168.157.31
<!DOCTYPE html>
<h1>my web01 ~~~</h1>

# web02
[root@my-web01 ~]$ curl 192.168.157.32
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
浏览器访问
  • vip && web01
  • vip && web02

高可用验证

停止 web01 下 Nginx
  • 停止服务
bash 复制代码
# web01
[root@my-web01 ~]$ systemctl stop nginx
  • 验证 VIP
bash 复制代码
# web01 -- VIP 漂移
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    
# web02 -- 获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33
  • 浏览器访问
恢复 web01 下 Nginx
  • 恢复服务
bash 复制代码
[root@my-web01 ~]$ systemctl start nginx
  • 验证 VIP
bash 复制代码
# web01 -- 获取 vip
[root@my-web01 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33
    inet 192.168.157.30/32 scope global ens33
    
# web02 -- vip 漂移
[root@my-web02 ~]$ ip addr | grep '192.168.157'
    inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33

参考

相关推荐
fuyongliang12310 小时前
nginx反向代理,负载均衡,tomcat的数据流向图篇解析
nginx·tomcat·负载均衡
tuokuac11 小时前
nginx配置前端请求转发到指定的后端ip
前端·tcp/ip·nginx
bug攻城狮14 小时前
Skopeo 工具介绍与 CentOS 7 安装指南
linux·运维·centos
宇宙第一小趴菜14 小时前
08 修改自己的Centos的软件源
linux·运维·centos
bug攻城狮14 小时前
彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
linux·运维·服务器·centos·vim
苹果醋315 小时前
数据库索引设计:在 MongoDB 中创建高效索引的策略
java·运维·spring boot·mysql·nginx
yongui4783416 小时前
CentOS系统如何查看当前内存容量
linux·运维·centos
✎﹏赤子·墨筱晗♪16 小时前
从反向代理到负载均衡:Nginx + Tomcat 构建高可用Web服务架构
nginx·tomcat·负载均衡
叶绪25816 小时前
Nginx 反向代理 + Tomcat 集群:负载均衡配置步骤与核心原理
nginx·tomcat·负载均衡
xzq_java16 小时前
CentOS操作系统虚拟机安装以及连接工具下载和远程连接工具远程连接
linux·运维·centos