Nginx-基础篇-7【高可用配置(集群)】
本文最后更新于 2023-09-19,文章内容可能已经过时。
1. 高可用配置
nginx的高可用需要利用Keepalived
软件,我们可以设想这么一个问题,虽然我们利用nginx实现了如果后端出现问题,还能通过反向代理机制,完成访问迁移到内部别的服务器,但是如果nginx挂了,肯定不能再同时加nginx,然后多个nginx服务器上再套nginx【无限套娃】。
Keepalived
就是提供了两个nginx
能互相保持通信,一个不行了另外一个能顶上,但是这里有个问题,难不成他们是替换了Ip
?其实不是,如果这么频繁换ip
,会出现很多问题:如假死,两个服务器出现ip
冲突。他们类似之前我们nginx
配置的,虚拟IP
,这个虚拟IP
是两个人一起使用的。
1.1. 安装Keepalived
1.1.1. 编译安装
下载地址 https://www.keepalived.org/download.html#
使用 ./configure 编译安装
如遇报错提示
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
安装依赖
yum install openssl-devel
1.1.2. yum安装
yum install keepalived
1.1.3. 配置
使用yum安装后配置文件在 /etc/keepalived/keepalived.conf
1.1.4. 最小配置
它的配置文件比Nginx还要多,这里用不到那么多配置,直接上最小配置。
! Configuration File for keepalived
global_defs {
# 虚拟路由的名称
router_id lb100
}
# vrrp是keepalived在内网通信的协议 而instance代表实例 这里给我们的实例起名字 同一组要保持相同
vrrp_instance myinstance {
# 当前状态的是主机
state MASTER
# 这里填写网卡名称 可以使用 ip ADDR 查看
interface ens33
# 实例的虚拟路由ID 相同实例保持相同
virtual_router_id 51
# 竞选优先级 数值越大优先级越高 默认100
priority 100
# 间隔检测时间
advert_int 1
# 同一组的认证配置 同一组保持一致
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址 可以配置多个 但意义不大
virtual_ipaddress {
192.168.110.200
}
}
第二台机器,改的是虚拟路由名称,主从状态,竞选优先级。
! Configuration File for keepalived
global_defs {
# 虚拟路由的名称
router_id lb101
}
# vrrp是keepalived在内网通信的协议 而instance代表实例 这里给我们的实例起名字 同一组要保持相同
vrrp_instance myinstance {
# 当前状态的是备用机
state BACKUP
# 这里填写网卡名称 可以使用 ip ADDR 查看
interface ens33
# 实例的虚拟路由ID 相同实例保持相同
virtual_router_id 51
# 竞选优先级 数值越大优先级越高 默认100
priority 50
# 间隔检测时间
advert_int 1
# 同一组的认证配置 同一组保持一致
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址 可以配置多个 但意义不大
virtual_ipaddress {
192.168.110.200
}
}
两台实例都启动keepalived
,可以模拟主机ping
虚拟IP
,然后直接给主机关机,发现,当主机关机,备用机的虚拟IP发生变化,此时从机上位接替虚拟IP。keepalived
是个比较简单的机制,是通过判断当前keepalived
进程是否存活来判断的。
更高级的版本可以通过写一个脚本定时检测nginx服务器的状态,一旦发现服务器出现问题,就kill掉keepalived的进程,达到更优的切换
- 感谢你赐予我前进的力量