设为首页 收藏本站
查看: 1323|回复: 0

[新闻资讯] 基于LVS DR(Direct Routing)模型负载均衡集群实现

[复制链接]
累计签到:224 天
连续签到:4 天
发表于 2019-8-4 18:20:15 | 显示全部楼层 |阅读模式
基于LVS DR(Direct Routing)模型负载均衡集群实现LVS工作模式
直接路由,LVS默认模式,请求报文要经由Director,但响应报文由RS直接发往Client,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标 IP/PORT均保持不变
  • Director和各RS都配置有VIP
  • 在RS上修改内核参数以限制arp通告及应答级别(也可在路由器绑定MAC地址),确保前端路由器将目标IP为VIP的请求报文发往Director
  • RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络; RIP的网关不能指向DIP,以确保响应报文不会经由Director
  • RS和Director要在同一个物理网络
  • 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往 Client
  • 不支持端口映射(端口不能修败)
  • RS可使用大多数操作系统系统
如下图,此处只为演示LVS DR模型,故不考虑其它诸如高可用之类的
请求及响应过程
以上图为参考,客户端所访问的服务为http,通信过程可简单划分为五个阶段
  • 第一阶段: 客户端发起请求,此时源地址为客户端地址(CIP),源MAC地址为客户端AMC地址,目的地址为VIP,MAC地址为Router的R1接口MAC地址
  • 第二阶段: 路由器收到数据报文后,通过查看路由表,得知目标地址是VIP,将报文转发至VIP,对应地址如下表
  • 第三阶段: LVS根据负载均衡算法选择一台active的RealServer(假设是RS1),将此RIP所在网卡的MAC地址作为目标MAC地址,发送到局域网里
  • 第四阶段: RealServer(RS1)在局域网中收到数据报文,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文,随后重新封装报文,发送到路由器
  • 第五阶段: 路由器将数据包路由转发至CIP
| - | SRC | DEST |
| :-: | :-: | :-: |
| 1 | Client MAC,CIP xxxx | R1 MAC,VIP 80 |
| 2 | R2 MAC,CIP xxxx | VIP MAC,VIP 80 |
| 3 | VIP MAC,CIP xxxx | RS1 MAC,VIP 80 |
| 4 | RS1 MAc,VIP 80 | R2 MAC,CIP xxxx |
| 5 | R1 MAC,VIP 80 | Client MAC,CIP xxxx |
配置实现
假设Client与RouterR1接口上的IP地址以及VIP为公网IP地址,那么理论上Client是不可以直接访问Real Server的
Real Server配置
Real Server为CentOS 7,在RS1,RS2上安装httpd,理论上两个节点所提供的内容完全一致,为能清楚的看到调度,故两个节点提供不同的内容以示区别
  • 两个节点IP地址配置如下,将网关指向Router的R2接口,其上都运行httpd以提供服务
| 节点 | RIP | VIP | GW | Application |
| :-: | :-: | :-: | :-: | :-: |
| RS1 | 192.168.10.6 | 192.168.10.5 | 192.168.10.11 | httpd |
| RS2 | 192.168.10.7 | 192.168.10.5 | 192.168.10.11 | httpd |
  • 配置RS1 IP
cat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0NAME=eth0BOOTPROTO=staticIPADDR=192.168.10.6PREFIX=24EOF[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 配置RS2 IP
cat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0NAME=eth0BOOTPROTO=staticIPADDR=192.168.10.7PREFIX=24EOF[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 将SELinux临时关闭,并设置开机禁用
setenforcesed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 关闭firewalld禁止开机自启
systemctl disable --now firewalldiptables -F[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 安装httpd,并配置
[root@rs1 ~# yum install -y httpd[root@rs1 ~# echo "<h1>test page on RS1</h1>" > /var/www/html/index.html[root@rs1 ~# systemctl start httpd[root@rs2 ~# yum install -y httpd[root@nrs2 ~# echo "<h1>test page on RS2</h1>" > /var/www/html/index.html[root@rs2 ~# systemctl start httpd[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 修改内核参数
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



web服务已配置完成,此时配置VIP,将VIP绑定在lo接口的别名lo:0上,以下操作两个节点都进行
  • 配置VIP
ap addr add 192.168.10.5 dev lo:0[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



配置客户端
客户端无需过多的配置,确保网络能到达路由器且路由器能返回数据包即可
  • Client IP配置
cat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-ens192DEVICE=ens192NAME=ens192BOOTPROTO=staticIPADDR=172.22.35.180PREFIX=16GATEWAY=172.22.35.181ONBOOT=yesEOF[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



Router配置
根据事先规划,Router节点需要添加两块网卡,分别配置上两个网络的地址,路由器无需指定网关
| ifname | IP | prefix |
| :-: | :-: | :-: |
| eth0 | 172.22.35.181 | 16 |
| eth1 | 192.168.2.11 | 24 |
  • 配置IP
cat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0NAME=eth0BOOTPROTO=staticIPADDR=172.22.35.181PREFIX=16ONBOOT=yesEOFcat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1NAME=eth1BOOTPROTO=staticIPADDR=192.168.10.11PREFIX=16ONBOOT=yesEOF[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 开启路由转发
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/net.confsysctl --system[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 将SELinux临时关闭,并设置开机禁用
setenforcesed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 关闭firewalld禁止开机自启
systemctl disable --now firewalldiptables -F[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



Director节点配置
| 节点 | DIP | DIP | GW |
| :-: | :-: | :-: | :-: |
| Director | 192.168.10.8 | 192.168.10.5 | 192.168.10.11 |
  • 配置DIP
cat <<EOF | tee /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0NAME=eth0BOOTPROTO=staticIPADDR=192.168.10.8PREFIX=24GATEWAY=192.168.10.11ONBOOT=yesEOF[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 将SELinux临时关闭,并设置开机禁用
setenforcesed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 关闭firewalld禁止开机自启
systemctl disable --now firewalldiptables -F[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 绑定VIP
ip addr add 192.168.10.5 dev lo:0[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 安装ipvs前端管理工具ipvsadm
yum install -y ipvsadm[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



  • 添加调度策略
ipvsadm -A -t 192.168.10.5:80 -s wrripvsadm -a -t 192.168.10.5:80 -r 192.168.10.6 -w 1ipvsadm -a -t 192.168.10.5:80 -r 192.168.10.7 -w 1[size=0.8em]Bash
[size=0.8em][url=]Copy[/url]



Client 访问测试while true; do curl 192.168.10.5; sleep 1; done


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-974250-1-1.html 上篇帖子: Linux使用mutt发送邮件 下篇帖子: 微软杀毒软件Microsoft Defender将发布Linux版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表