南通城乡住房建设厅网站网站推广教程分享
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 实现高可用
 
