使用Keepalived实现Nginx高可用
Keepalived是一个路由软件,可以提供linux系统和linux系统上的组件的负载均衡和高可用,高可用基于VRRP(Virtual Router Redundancy Protocol,虚ip)实现
1.准备两台服务器
node1 192.168.0.240
node2 192.168.0.239
2.安装nginx和keepalived
3.配置nginx主页
4.配置keepalived
原理
1、 通过vrrp协议广播,每个keepalived vrrp都去争取master
2、 以virtual_router_id为组队标识。 同为一个vip服务的keepalived的virtual_router_id相同
3、 以priority 为权值,同一个virtual_router_id下那个priority大那个就是master,其它为backup
node1上的keepalived为master,node2上的为backup
vim /etc/keepalived/keepalived.conf
node1配置
router_id 是路由标识,在一个局域网里面应该是唯一的
vrrp_instance VI_1{...}这是一个VRRP实例,里面定义了keepalived的主备状态、接口、优先级、认证和IP信息
state 定义了VRRP的角色
interface定义使用的接口,这里我的服务器用的网卡都是enp0s3,根据实际来填写
virtual_router_id是虚拟路由ID标识,一组的keepalived配置中主备都是设置一致
priority是优先级,数字越大,优先级越大
auth_type是认证方式,auth_pass是认证的密码
virtual_ipaddress {...}定义虚拟IP地址,可以配置多个IP地址
vrrp_strict:严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。这里需要注释掉
mcast_src_ip 发送多播包的地址,如果不设置,默认使用绑定的网卡的primary IP。
node2配置
启动keepalived
systemctl start keepalived
日志
5.测试高可用性
node1,node2上都启动keepalived,node1为master,node1上自动设置了虚ip
停止node1上的keepalived服务
继续浏览器访问,发现已切换到node2
当前node2是master,所以自动设置了虚ip
再次启动node1 keepalived,发现已切换master到node1
node2不再有虚ip