CentOS 7 下 Keepalived + Nginx 实现双机高可用
文章目录
- CentOS 7 下 Keepalived + Nginx 实现双机高可用
- 服务器准备
- 服务信息
- 服务架构
- 服务安装
- nginx
- Keepalived
- 服务配置
- nginx
- Keepalived
- 启动服务
- nginx
- keepalived
- 服务验证
- 查看 VIP 状态
- CURL 命令访问
- 浏览器访问
- 高可用验证
- 停止 web01 下 Nginx
- 恢复 web01 下 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
# 所有主机
[root@my-web01 ~]$ yum -y install nginx
Keepalived
# 所有主机
[root@my-web01 ~]$ yum -y install keepalived
服务配置
nginx
- web01
[root@my-web01 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web01 ~~~</h1>
- web02
[root@my-web02 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
Keepalived
- web01
[root@my-web01 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedvrrp_script check_nginx {script "killall -0 nginx"interval 2
}vrrp_instance VI_1 {interface ens33state MASTERpriority 200virtual_router_id 33virtual_ipaddress {192.168.157.30}authentication {auth_type PASSauth_pass password}track_script {check_nginx}
}
- web02
[root@my-web02 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedvrrp_script check_nginx {script "killall -0 nginx"interval 2
}vrrp_instance VI_1 {interface ens33state BACKUPpriority 100virtual_router_id 33virtual_ipaddress {192.168.157.30}authentication {auth_type PASSauth_pass password}track_script {check_nginx}
}
启动服务
nginx
# 所有节点
systemctl start nginx
keepalived
# 所有节点
systemctl start nginx
服务验证
查看 VIP 状态
# web01 -- 获取 VIP
[root@my-web01 ~]$ ip addr | grep '192.168.157'inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33inet 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 命令访问
# 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
- 停止服务
# web01
[root@my-web01 ~]$ systemctl stop nginx
- 验证 VIP
# 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 ens33inet 192.168.157.30/32 scope global ens33
- 浏览器访问
恢复 web01 下 Nginx
- 恢复服务
[root@my-web01 ~]$ systemctl start nginx
- 验证 VIP
# web01 -- 获取 vip
[root@my-web01 ~]$ ip addr | grep '192.168.157'inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33inet 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
参考
- Keepalived + nginx 实现高可用