keepalived+ipvs实现udp负载均衡器
场景
我们使用keepalived实现vip此时能够初步实现服务高可用,暂时其他备节点处于backup状态,并没有参与流量的负载均衡。我们希望流量通过vip进来后能够负载均衡到每个后端server
实现:keepalied + lvs
1、前置条件:打开net.ipv4.ip_forward和net.ipv4.vs.conntrack
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 | tee /proc/sys/net/ipv4/vs/conntrack
2、使用keepavlied实现一个vip,此处参考之前的博文:【博客565】nginx + keepalived实现高可用反向代理
3、使用lvscare来配置虚拟网卡和iptables规则,实现tcp流量负载均衡
lvscare项目:lvscare
注意:这里实现的是tcp流量负载均衡
lvscare care --vs keepalived-vip:port --rs real-server-ip:port --rs real-server-ip:port --mode link --run-once
lvscare实际做了哪些事:
ip link add lvscare type dummy
ip addr add 169.254.0.1/32 dev lvscare
# enable conntrack for ipvs
echo 1 | tee /proc/sys/net/ipv4/vs/conntrack
iptables -t nat -N VIRTUAL-SERVICES
iptables -t nat -A PREROUTING -m comment --comment "virtual service portals" -j VIRTUAL-SERVICES
iptables -t nat -N VIRTUAL-MARK-MASQ
# create ipset
ipset create VIRTUAL-IP hash:ip,port -exist
iptables -t nat -A VIRTUAL-SERVICES -m comment --comment "virtual service ip + port for masquerade purpose" -m set --match-set VIRTUAL-IP dst,dst -j VIRTUAL-MARK-MASQ
# do mark
iptables -t nat -A VIRTUAL-MARK-MASQ -j MARK --set-xmark 0x2/0x2
# do snat at POSTROUTING
iptables -t nat -N VIRTUAL-POSTROUTING
iptables -t nat -A POSTROUTING -m comment --comment "virtual service postrouting rules" -j VIRTUAL-POSTROUTING
iptables -t nat -A VIRTUAL-POSTROUTING -m mark ! --mark 0x2/0x2 -j RETURN
iptables -t nat -A VIRTUAL-POSTROUTING -m comment --comment "virtual service traffic requiring SNAT" -m mark --mark 0x2 -j MASQUERADE
iptables -t nat -A OUTPUT -m comment --comment "virtual service portals" -j VIRTUAL-SERVICES
lvscare规则剖析:
1、创建dummy网卡处理vip流量
2、对外部以及自己发出的访问vip的流量进行打mark,然后对于打mark的流量进行masq,
这里匹配的方法是使用了ipset,lvscare会在ipset中加入vip,然后下面用ipset去匹配访问
vip的流量,进行打mark,对打mark的流量进行masq
4、配置udp流量负载均衡
安装ipvsadm:
yum install ipvsadm -y
配置udp server
ipvsadm -A -u vip:port -s rr
ipvsadm -a -u vip:port -r real-server-1-ip:port -m
ipvsadm -a -u vip:port -r real-server-2-ip:port -m
...
规则持久化:将规则写入ipvsadm的启动加载路径,实现开机自动加载文章来源:https://www.toymoban.com/news/detail-520809.html
systemctl enable ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
验证
对vip发起访问,可以看到流量从vip进入后会负载均衡到每个udp real server:文章来源地址https://www.toymoban.com/news/detail-520809.html
nc -u vip udp-port
到了这里,关于【博客678】keepalived+ipvs fullnat模式实现tcp + udp负载均衡器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!