搭建Keepalived + LVS + Nginx 高可用集群负载均衡
当前配置的只有一个LVS负载均衡服务器,当这个服务器挂掉之后,后面所有的请求都无法到达上游RS服务器,整个服务就回挂掉,因此就需要在添加一台备用机,使用Keepalived实现主备自动切换,保证服务24小时可用。如下图所示:
使用Keepalived不但可以使LVS主备自动切换,还可以检测RS服务器是否可用,如果有挂掉的RS服务器,则会自动剔除,避免将请求转发到挂掉的RS服务器。
在LVS服务器上配置Keepalived
首先安装Keepalived,安装方法见:Keepalived安装 然后编辑:keepalived.conf 配置文件
! 全局配置
global_defs {
! 路由ID:当前安装Keepalived节点主机的标识符,全局唯一
router_id LVS_151
}
! 计算机节点,基于vrrp协议的一个实例
vrrp_instance VI_1 {
! 表示状态,当前服务器的nginx的主节点,MASTER/BACKUP
state MASTER
! 当前实例绑定的网卡
interface ens33
! 保证主备节点一致即可
virtual_router_id 41
! 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 100
! 主备之间同步检查时间间隔,单位秒
advert_int 1
! 认证权限密码。防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
! 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.1.150
}
}
# 这里是LVS的配置,virtual_server是LVS服务,real_server是服务节点
virtual_server 192.168.1.150 80 {
# 健康检查的时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮询,lb就是负载均衡的意思
lb_algo rr
# 设置LVS模式 NAT|TUN|DR
lb_kind DR
# 多少秒内多次请求转发到同一个服务器,设置会话持久化的时间
persistence_timeout 50
# 协议 -t
protocol TCP
# 负载均衡的真实服务器,也就是nginx节点的具体的真实IP地址
real_server 192.168.1.171 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检查80端口
connect_port 80
# 超时时间 单位:秒
connect_timeout 2
# 重试次数
nb_get_retry 2
# 重试间隔时间,单位:秒
delay_before_retry 3
}
}
real_server 192.168.1.172 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检查80端口
connect_port 80
# 超时时间 单位:秒
connect_timeout 2
# 重试次数
nb_get_retry 2
# 重试间隔时间,单位:秒
delay_before_retry 3
}
}
}
配置好以上配置后,清除ipvsadm的配置
ipvsadm -C
这样ipvs的配置就全被清除了,接下来重启Keepalived服务
systemctl restart keepalived
查看ipvs的配置是否成功:
ipvsadm -Ln
如果没有输出内容,可能是keepalived的配置文件错误。 配置好MASTER之后,再将master的keepalived配置复制到backup节点配置一下, 修改router_id LVS_152, state BACKUP, priority 50, 权重官方建议和MASTER相差50即可