关于lvs:用eBPFXDP来替代LVS

前文剖析了 LVS 作为负载平衡的原理。随着 eBPF 的倒退,咱们曾经能够将 eBPF/XDP 程序间接部署在一般服务器上来实现负载平衡,从而节俭掉用于专门部署 LVS 的机器。 本文不打算间接到这一步,而是首先看看如何用 eBPF/XDP 依照惯例模式来代替 LVS,也就是说咱们还是将负载平衡程序(software load balance 简称 SLB)部署在专用机器上,只不过不必 LVS,而是用 eBPF/XDP 来实现。 试验步骤创立网络环境# 不同发行版命令不一样systemctl start dockerdocker network create south --subnet 172.19.0.0/16 --gateway 172.19.0.1# checkdocker network inspect south# orip link# 先用 ifconfig 取得刚创立的 network 应的 bridge# 后续则能够在宿主机上抓取这个 network 的所有 IP 包tcpdump -i br-3512959a6150 ip# 也能够取得某个容器的 veth ,抓取这个容器进出的所有包tcpdump -i vethf01d241 ip# 当然,如果是 offload 的模式,则调试的确不易,须要嗅探本地网络的数据包并抓取了# 在容器网络里,咱们尚有宿主机这个上帝视角,在裸机网络里,则可能得去捯饬路由器了 创立两个RSecho "rs-1" > rs1.htmlecho "rs-2" > rs2.htmldocker run -itd --name rs1 --hostname rs1 --privileged=true --net south -p 8888:80 --ip 172.19.0.2 --mac-address="02:42:ac:13:00:02" -v "$(pwd)"/rs1.html:/usr/share/nginx/html/index.html:ro nginx:stabledocker run -itd --name rs2 --hostname rs2 --privileged=true --net south -p 9999:80 --ip 172.19.0.3 --mac-address="02:42:ac:13:00:03" -v "$(pwd)"/rs2.html:/usr/share/nginx/html/index.html:ro nginx:stable# check on hostcurl 127.0.0.1:8888curl 127.0.0.1:9999另:即便是 nginx 对于咱们调试负载平衡也不是足够简略,调试阶段能够用 nc 来进行调试dnf install nc or apt install netcatserver side nc -l -vv -p 5000client side nc 172.19.0.2 5000 ...

April 5, 2023 · 3 min · jiezi

关于lvs:搭建LVSDR模式-使用ipvsadm配置集群规则

创立LVS节点,用户拜访的集群调度者 ipvsadm -A -t 192.168.1.150:80 -s rr -p 5-A:增加集群-t:tcp协定ip地址:设定集群的拜访ip,也就是LVS的虚构ip-s:设置负载平衡的算法,rr示意轮询-p:设置连贯长久化的工夫 创立2台RS实在服务器 ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.171:80 -gipvsadm -a -t 192.168.1.150:80 -r 192.168.1.172:80 -g-a:增加实在服务器-t:tcp协定-r:实在服务器的ip地址-g:设定DR模式 保留到规定库,否则重启生效 ipvsadm -S查看集群查看集群列表 ipvsadm -Ln查看集群状态 ipvsadm -Ln --stats其余命令: # 重启ipvsadm,重启后须要重新配置service ipvsadm restart# 查看长久化连贯ipvsadm -Ln --persistent-conn# 查看连贯申请过期工夫以及申请源ip和指标ipipvsadm -Lnc# 设置tcp tcpfin udp 的过期工夫(个别放弃默认)ipvsadm --set 1 1 1# 查看过期工夫ipvsadm -Ln --timeout更具体的帮忙文档: ipvsadm -hman ipvsadm

April 13, 2022 · 1 min · jiezi

关于lvs:搭建LVSDR模式-为两台RS配置arp

ARP响应级别与通告行为 的概念 arp-ignore:ARP响应级别(解决申请)0:只有本机配置了ip,就能响应申请1:申请的指标地址达到对应的网络接口,才会响应申请arp-announce:ARP通告行为(返回响应)0:本机上任何网络接口都向外通告,所有的网卡都能承受到通告1:尽可能防止本网卡与不匹配的指标进行通告2:只在本网卡通告配置ARP 关上sysctl.conf: vim /etc/sysctl.conf配置 所有网卡 、 默认网卡 以及 虚构网卡 的arp响应级别和通告行为,别离对应: all , default , lo : # configration for lvsnet.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_announce = 2刷新配置文件:减少一个网关,用于接收数据报文,当有申请到本机后,会交给lo去解决: echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local

April 13, 2022 · 1 min · jiezi

关于lvs:搭建LVSDR模式-为两台RS配置虚拟IP

配置虚构网络子接口(回环接口) 进入到网卡配置目录,找到lo(本地环回接口,用户构建虚构网络子接口),拷贝一份新的随后进行批改:批改内容如下:重启后通过ip addr 查看如下,示意ok: ifup lo ip addr

April 13, 2022 · 1 min · jiezi

关于lvs:搭建LVSDR模式-配置LVS节点与ipvsadm

后期筹备 服务器与ip布局:LVS - 1台VIP(虚构IP):192.168.1.150DIP(转发者IP/内网IP):192.168.1.151Nginx - 2台(RealServer)RIP(实在IP/内网IP):192.168.1.171RIP(实在IP/内网IP):192.168.1.172所有计算机节点敞开网络配置管理器,因为有可能会和网络接口抵触: systemctl stop NetworkManagersystemctl disable NetworkManager创立子接口 进入到网卡配置目录,找到咱们的ens33:拷贝并且创立子接口: cp ifcfg-ens33 ifcfg-ens33:1注:数字1为别名,能够任取其余数字都行 批改子接口配置: vim ifcfg-ens33:1配置参考如下:重启网络 service network restart显示这台机器上所有的网卡 ip addr 装置ipvsadm yum install ipvsadm

April 13, 2022 · 1 min · jiezi