在项目中,我们使用Nginx实现反向代理和负载均衡,大大的提高了系统的并发量,但是一旦当Nginx宕机了,会导致整个服务不可用,所以,也必须实现Nginx的高可用。
Keepalived基于VRRP(虚拟路由冗余协议)协议,使用虚拟IP,解决单点故障。Keepalived可以配置一个Master(主机)和多个Backup(备用机),虚拟IP一开始绑定的是Master,当Master宕机之后,虚拟IP会自动跟Backup绑定,如果有多个Backup,会通过选举获取权重最大的Backup,当Master恢复后,虚拟IP又会自动和Master绑定。需要注意的是Master和Backup的硬件配置最后保持一样,如果Master的硬件配置很高,而Backup的硬件配置很差,会导致当Master宕机之后,大量请求同时到达Backup,把Backup也压垮
Keepalived+Nginx双机主备是指在两台服务器上部署Nginx,一主一备(一个Master,一个Backup),Keepalived虽然可以实现Nginx的高可用,但是也有一个很大的缺点,就是只有一台Nginx会提供服务,正常情况下Backup会一直空闲,造成资源浪费
Keepalived不仅仅只能和Nginx搭配使用,还能和Redis等中间件一起使用,实现高可用
Keepalived+Nginx双机主备原理图:
需要在Master和所有的Backup上都安装上Keepalived
Keepalived Master节点配置
使用whereis keepalived命令查看keepalived的安装路径
进入到/etc/keepalived目录,可以看到目录下有keepalived.conf.sample文件,将keepalived.conf.sample拷贝一份,改名为keepalived.conf
Master节点配置
# 全局配置
global_defs {
# 路由id:当前安装keepalived的节点标识符,保证全局唯一
router_id KEEPALIVED_MASTER
}
vrrp_instance VI_1 {
# j节点状态,Master表示是主节点,Backup表示是备用节点,Master节点只能有一个,Backup可以有多个
state MASTER
# 该实例绑定的网卡,可以通过 ip addr命令查看网卡
interface ens33
# 虚拟节点的id,需要保证主备节点一致即可
virtual_router_id 51
# 权重,master权重一般高于backup,如果有多个Backup,谁的权重高,当Master挂掉后,谁就是Master
priority 100
# 主备之间同步检查时间间隔,单位秒
advert_int 2
# 认证权限密码,防止非法节点进入,Master和Backup需要保持一直
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.48.150
}
}使用whereis keepalived查看keepalived的安装路径
进入到/usr/local/keepalived,启动keepalived
查看keepalived是否启动成功
此时,就可以看到服务器已经绑定了虚拟ip
如果在nginx中对虚拟IP配置了反向代理,就可以在浏览器通过虚拟IP直接访问到Nginx首页
Keepalived Backup节点配置
# 全局配置
global_defs {
# 路由id:当前安装keepalived的节点标识符,保证全局唯一
router_id KEEPALIVED_BACKUP
}
vrrp_instance VI_1 {
# j节点状态,Master表示是主节点,Backup表示是备用节点,Master节点只能有一个,Backup可以有多个
state BACKUP
# 该实例绑定的网卡,可以通过 ip addr命令查看网卡
interface ens33
# 虚拟节点的id,需要保证主备节点一致即可
virtual_router_id 51
# 权重,master权重一般高于backup,如果有多个Backup,谁的权重高,当Master挂掉后,谁就是Master
priority 80
# 主备之间同步检查时间间隔,单位秒
advert_int 2
# 认证权限密码,防止非法节点进入,Master和Backup需要保持一直
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.48.150
}
}Keepalived 高可用测试
修改Master和Backup nginx中的index.html内容,加入IP地址用于区分Master和Backup
此时在浏览器中通过虚拟IP访问Nginx首页,显示的是Master节点的内容
当停掉Master服务器,或者关闭Master的Keepalived模拟Master宕机的情况,此时再在浏览器中通过虚拟IP访问Nginx首页,显示的是Backup节点的内容
当Master节点恢复后,访问的又是Master节点的内容
共同学习,写下你的评论
评论加载中...
作者其他优质文章











