在项目中,我们使用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节点的内容
共同学习,写下你的评论
评论加载中...
作者其他优质文章