OSPF+ECMP多活负载均衡方案https://cloud.tencent.com/developer/article/2030638
Linux Virtual Server (lvs) 是Linux内核自带的负载均衡器,也是目前性能最好的软件负载均衡器之一。lvs包括ipvs内核模块和ipvsadm用户空间命令行工具两部分。
在lvs中,节点分为Director Server和Real Server两个角色,其中Director Server是负载均衡器所在节点,而Real Server则是后端服务节点。当用户的请求到达Director Server时,内核netfilter机制的PREROUTING链会将发往本地IP的包转发给INPUT链(也就是ipvs的工作链),在INPUT链上,ipvs根据用户定义的规则对数据包进行处理(如修改目的IP和端口等),并把新的包发送到POSTROUTING链,进而再转发给Real Server。
NAT
NAT模式通过修改数据包的目的IP和目的端口来将包转发给Real Server。它的特点包括

DR
DR(Direct Route)模式通过修改数据包的目的MAC地址将包转发给Real Server。它的特点包括

TUN
TUN模式通过将数据包封装在另一个IP包中(源地址为DIP,目的为RIP)将包转发给Real Server。它的特点包括

FULLNAT
FULLNAT是阿里在NAT基础上增加的一个新转发模式,通过引入local IP(CIP-VIP转换为LIP->RIP,而LIP和RIP均为IDC内网IP)使得物理网络可以跨越不同vlan,代码维护在https://github.com/alibaba/LVS上面。其特点是

安装ipvs包并开启ip转发
yum -y install ipvsadm keepalived
sysctl -w net.ipv4.ip_forward=1
修改/etc/keepalived/keepalived.conf,增加vip和lvs的配置
vrrp_instance VI_3 {
state MASTER # 另一节点为BACKUP
interface eth0
virtual_router_id 11
priority 100 # 另一节点为50
advert_int 1
authentication {
auth_type PASS
auth_pass PASSWORD
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.0.100
}
}
virtual_server 192.168.0.100 9696 {
delay_loop 30
lb_algo rr
lb_kind DR
persistence_timeout 30
protocol TCP
real_server 192.168.0.101 9696 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 9696
}
}
real_server 192.168.0.102 9696 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 9696
}
}
}
重启keepalived:
systemctl reload keepalived
最后在neutron-server所在机器上为lo配置vip,并抑制ARP响应:
vip=192.168.0.100
ifconfig lo:1 ${vip} broadcast ${vip} netmask 255.255.255.255
route add -host ${vip} dev lo:1
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
Haproxy也是Linux最常用的负载均衡软件之一,兼具性能和功能的组合,同时支持TCP和HTTP负载均衡。
配置和使用方法请见官网。
Nginx也是Linux最常用的负载均衡软件之一,常用作反向代理和HTTP负载均衡(当然也支持TCP和UDP负载均衡)。
配置和使用方法请见官网。
Maglev是Google自研的负载均衡方案,在2008年就已经开始用于生产环境。Maglev安装后不需要预热5秒内就能处理每秒100万次请求。谷歌的性能基准测试中,Maglev实例运行在一个8核CPU下,网络吞吐率上限为12M PPS(数据包每秒)。如果Maglev使用Linux内核网络堆栈则速度会慢下来,吞吐率小于4M PPS。

Vortex参考了Maglev,大致的架构和实现跟Maglev类似: