作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:Squid,Haproxy,LVS,FRP(内网穿透)。
前面我们介绍了几种代理软件,虽然都能实现负载均衡,而且LVS本身还不具备健康检查的能力(也就是后端挂了他还会往里面转发请求)。但是他们自己并不是高可用的,也就是如果这个部署代理软件的机器宕机以后,服务也就不可以用。
我们在前面Kubernetes里面已经使用Keepalived来提供VIP的功能,这个对于有健康检查的软件比如HAPorxy和Nginx可以参考前面的文章来实现高可用的。也就是下面代码部分前半截。
本小节我们讲使用LVS+keepalived来实现负载均衡+高可用。在keepalive这个软件里面实际有多种模式,这里我们就以简单的主备模式来讲解,后面单独出一个小节来介绍这个模式。
2个服务器都已经安装ipvs,加载ip_vs内核模块,和开启转发功能。
master
vrrp_instance VI_1 {
state MASTER # 主节点设置为 MASTER
interface eth0 # 绑定网卡(根据实际网卡名修改)
virtual_router_id 51 # 虚拟路由 ID(同一集群需一致)
priority 100 # 优先级(主节点高于备节点)
advert_int 1 # VRRP 心跳间隔(秒)
authentication { # 认证配置
auth_type PASS
auth_pass 12345678 # 密码(主备需一致)
}
virtual_ipaddress { # 定义 VIP
192.168.31.134/24
}
}
#如果只定义上面部分,则keepalived 只会配置这个vip到网卡上
#下面的配置则是他可以操作ipvs命令,进行规则的增加和删除
virtual_server 192.168.31.134 80 { # 定义虚拟服务(VIP 和端口)
delay_loop 6 # 健康检查间隔(秒)
lb_algo rr # 调度算法(轮询)
lb_kind DR # LVS 模式(DR)
protocol TCP # 协议类型
# 定义 Real Server
real_server 192.168.31.131 80 {
weight 1 # 权重
TCP_CHECK { # 健康检查方式(TCP 端口检查)
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.31.132 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
slave
global_defs {
router_id LVS_BACKUP # 标识备用节点(需与主节点不同)
}
# 定义 VRRP 实例(用于 VIP 故障切换)
vrrp_instance VI_1 {
state BACKUP # 角色为备节点
interface eth0 # 绑定网卡(根据实际网卡名修改)
virtual_router_id 51 # 虚拟路由 ID(必须与主节点一致)
priority 50 # 优先级(低于主节点)
advert_int 1 # 心跳间隔(秒)
# 认证配置(必须与主节点一致)
authentication {
auth_type PASS
auth_pass 12345678
}
# 定义虚拟 IP(VIP)
virtual_ipaddress {
192.168.31.134/24
}
}
# 定义 LVS 虚拟服务(需与主节点完全一致)
virtual_server 192.168.31.134 80 {
delay_loop 6 # 健康检查间隔(秒)
lb_algo rr # 调度算法(轮询)
lb_kind DR # LVS 模式(DR)
protocol TCP # 协议类型
# 真实服务器 1 配置
real_server 192.168.31.131 80 {
weight 1 # 权重
TCP_CHECK { # 健康检查方式(TCP 端口检查)
connect_timeout 3
retry 3
delay_before_retry 3
}
}
# 真实服务器 2 配置
real_server 192.168.31.132 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
这样配置以后,就不需要手工配置VIP,而是keepalived会根据权重自动配置VIP,当然会出现下面几种情况。
1.在都未启动keepalived情况下,谁先启动谁占用vip。
2.如果slave先启动,master后启动,master会抢占vip(包括宕机切换)。
3.如果master先启动,slave后启动,则master会一直持有vip,直到master故障。
这样配置以后,他还会检查后端,如果发现后端异常,则会摘除异常后端。这样VIP本身是高可用的,后端异常也能及时屏蔽。从架构上保证了高可用。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。
2162

被折叠的 条评论
为什么被折叠?



