LVS负载均衡之DR模式配置

DR 模式架构图:

操作步骤

实验环境准备:(centos7平台)

所有服务器上配置

# systemctl stop firewalld         //关闭防火墙
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux        //关闭selinux,重启生效
# setenforce 0                //关闭selinux,临时生效
# ntpdate 0.centos.pool.ntp.org    //时间同步
注意:realserver的网关需要指向DIP

步骤一:配置 router

1)打开 ip_forward

[root@router ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@router ~]# sysctl -p

2)添加防火墙规则,指定客户端进来的规则,(此处使用 iptables 做的,也可以换成 firewalld来做)

[root@router ~]# iptables -F
[root@router ~]# yum install iptables-services iptables
[root@router ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ens33 -j DNAT --to-destination 10.10.10.110        //这条表示从 ens33(也就是192.168.1.31的)网卡进来访问80的包,DNAT到 10.10.10.110(也就是 LVS 调度器的 IP)
[root@router ~]#
[root@router ~]# iptables -t nat -A POSTROUTING -p tcp --dport 80 -o ens37 -j SNAT --to-source 10.10.10.120        //这条表示(为了客户端 192.168.1.35 访问 192.168.1.31 变成 10.10.10.120 访问10.10.10.110),这样可以实现 LVS 调度器能回客户端
如果不加这条的话,也可以在LVS 调度器上添加路由(route add default gw 10.10.10.120 指一个网关回去,因为 DNAT 的目标机器需要一个网关才能回给 client)[root@router ~]# iptables-save > /etc/sysconfig/iptables
[root@router ~]# systemctl start iptables.service
[root@router ~]# systemctl enable iptables.service

步骤二:配置 LVS 调度器

1)安装ipvsadm

[root@lvs-director ~]# yum install ipvsadm -y

2)配置调度规则

[root@lvs-director ~]# ipvsadm -A -t 10.10.10.110:80 -s rr
[root@lvs-director ~]# ipvsadm -a -t 10.10.10.110:80 -r 10.10.10.11:80 -g        //这里的 -g 就是表示使用直接路由模式,LVS 调度器就会把数据包调给 10.10.10.11 或 10.10.10.12 时,就只修改 MAC 地址,不修改目标 IP 直接路由过去
[root@lvs-director ~]# ipvsadm -a -t 10.10.10.110:80 -r 10.10.10.12:80 -g
[root@lvs-director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.110:80 rr-> 10.10.10.11:80               Route   1      0          0         -> 10.10.10.12:80               Route   1      0          0

3)保存在文件中,设置为开机启动

[root@lvs-director ~]#
[root@lvs-director ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs-director ~]# systemctl start ipvsadm
[root@lvs-director ~]# systemctl enable ipvsadm 

4) 由于下面会在 web服务器上面添加一个子接口 lo:0 10.10.10.110网卡,这样就会到导致 lvs 调度器过去的包可以成果过去,但是不会回来,因为回来时它会直接查找自己的 lo:0的10.10.10.110。所以需要加一个子接口 掩码给到 255.255.255.128。

[root@lvs-director ~]# ifconfig ens33:0 10.10.10.111 netmask 255.255.255.128

  注意:如果用掩码 255.255.255.0 还是会出现ping 不通的情况,因为ping的时候 10.10.10.110和10.10.10.111掩码相同,优先级一样。而用225.225.225.128路由选择会优先使用10.10.10.111去ping

步骤三:配置realserver

在 realserver(web01和web02)上安装 nginx,并在不同的 web 服务器上建立不同的主页内容(方便测试),并启动。

1) 在 web01 服务器配置

[root@web01 ~]# yum install nginx -y
[root@web01 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx 

2) 在 web02 服务器配置

[root@web02 ~]# yum install nginx -y
[root@web02 ~]# echo "`hostname` `ifconfig ens33 |sed -n 's#.*inet \(.*\)netmask.*#\1#p'`" > /usr/share/nginx/html/index.html
[root@web02 ~]# systemctl start nginx
[root@web02 ~]# systemctl enable nginx

3) 添加vip (不论后端有几个web服务器,都需要做)

# ifconfig lo:0 10.10.10.110 netmask 255.255.255.255  //注意掩码为4个255,想永久生效,可以写一个 ifcfg-lo:0 的网卡配置文件即可。

  最好不要写成 ifconfig lo:0 10.10.10.110/32 的形式,用ifconfig 查掩码会出现四个0。
  这一步是非常重要的,因为路由方式扔过来的包,目标 IP 不变,也就是说还是 10.10.10.120,只是通过找 10.10.10.11 或 10.10.10.12 的 MAC 地址扔过来的。
  所以 web 服务器上也需要有一个 10.10.10.120 这个 IP 来解析;用 lo 网卡来虚拟就是为了尽量不要与 lvs 网卡造成 ARP 广播问题。
  这里 netmask 为什么是4个 255,而不是 255.255.255.0?
  如果为 255.255.255.0,那么 10.10.10.0/24 整个网络都无法和web服务器通讯。

4) 真实服务器把默认路由指向 router 同物理网段的 IP,可以临时加也可以直接写在配置文件里面,这里上面的环境准备已经写在了配置文件。 (web1 和 web2 都需要做) 临时加示例:

# route add default gw 10.10.10.120

5) 抑制 web 服务器上 IP 冲突问题 (web1 和 web2 都需要做)

# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
# sysctl -p

步骤四:在客户机上测试

[root@client ~]# curl 192.168.1.31
web01 10.10.10.11
[root@client ~]# curl 192.168.1.31
web02 10.10.10.12
[root@client ~]# curl 192.168.1.31
web01 10.10.10.11
[root@client ~]# curl 192.168.1.31
web02 10.10.10.12  

从测试结果可以看出,轮循调度给后端web服务器了。至此dr模式就完成了。

LVS 概念篇参考 ->点我

NAT 模式实现参考 ->点我

转载于:https://www.cnblogs.com/yanjieli/p/10709160.html

LVS负载均衡DR模式实现相关推荐

  1. LVS负载均衡DR模式+keepalived

    实验拓扑: 实验准备: CentOS6.5-x86-64 node1 10.0.0.11    软件:ipvsadm+keepalived    角色:Director1 node2 10.0.0.1 ...

  2. LVS负载均衡DR模式安装和配置过程详解

    ===============================为什么使用LVS负载均衡============================= **nginx反向代理** 用作负载均衡优点: 工作在 ...

  3. lvs负载均衡—DR模式

    lvs介绍: 1 . LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好 ...

  4. LVS负载均衡DR模式部署

    目录: 1. 拓扑图 2. 搭建环境 3. LVS服务器部署 4. 测试 1. 拓扑图 LVS-DR模式采的IP地址全部为外网IP. 本例中IP的设置全部采用临时设置IP的方式,重启后会失效. 用户请 ...

  5. LVS负载均衡——NAT模式

    LVS负载均衡群集--NAT地址转换 一.集群与分布式 1.1 集群的含义 1.2 LVS模型 1.3系统性能扩展方式 1.4 群集的三种类型 1.4.1 负载均衡群集 1.4.2高可用群集 1.4. ...

  6. Lvs负载均衡 ——NET模式群集部署

    一,集群介绍 集群通信的最大特点是话音通信采用PTT(Push To Talk),以一按即通的方式接续,被叫无需摘机即可接听,且接续速度较快,并能支持群组呼叫等功能,它的运作方式以单工.半双工为主,主 ...

  7. LVS负载均衡-TUN模式(模拟不同网段)

    最近在思考物联网平台的架构,然后之前对IM系统又很感兴趣,就想着一台服务器能连接的客户端也是有限的,那如果客户端突破这个限制了呢?所以自然而然就想到了负载均衡,比如Gateway.Nginx等等,有些 ...

  8. LVS负载均衡--NAT模式

    目录 一.NAT地址转换模式 1.实验环境 2.实验部署 一.NAT地址转换模式 1.实验环境 分析: 客户端的请求经过LVS后负载均衡,分配到指定服务器处理,处理结果返回时还是会经过LVS负载均衡器 ...

  9. linux tunl0 ip,Centos7下lvs负载均衡lvs-tun模式配置

    一.架构 director:172.28.18.69 vip:172.28.18.70 real server1:172.28.18.71 real server2:172.28.18.78 二.两台 ...

最新文章

  1. 以下用于数据存储领域的python第三方库是-Python 二级选择题
  2. live messenger与稀疏文件—Sparse File Bit
  3. MySQL TEXT数据类型的最大长度
  4. LUA实现单词替换功能
  5. MySQL 常用语法 之 DISTINCT
  6. 二分算法模板及oj练习题题解
  7. 【java笔记】Object类
  8. Idea:新版本Idea底部工具栏Git中没有Local Changes
  9. 【零基础】一文读懂CPU(从二极管到超大规模集成电路)
  10. 微信小程序测试版部署
  11. 填坑Go-“can‘t load package“
  12. 《如何阅读一本书》章节要点整理
  13. IDEA 前台静态文件发布不即时生效问题解决
  14. The supplied data appears to be in the Office 2007+ XML问题解决
  15. gbase 8d客户端配置文件
  16. 计算机office比赛,Office智慧丨“点亮未来”
  17. 用扫地机器人楼下吵吗_家里是复式的,用福玛特扫地机器人能扫完楼下拿到楼上接着扫吗...
  18. M1 ErrorCode
  19. 如何在桌面或者开始菜单中创建快捷方式
  20. PHP Web项目总结

热门文章

  1. ISA2006无人值守安装
  2. 今天开始写技术博客啦
  3. [GXOI/GZOI2019]旧词——树链剖分+线段树
  4. export TERM=xterm导致终端reset命令失效
  5. 'module' object has no attribute 'Env'
  6. C++自定义直方图统计
  7. OpenCV学习笔记九-Canny边缘检测
  8. 学习threeJS(一)--第一个threeJs
  9. 【leetcode】109. Convert Sorted List to Binary Search Tree
  10. 2.Nginx学习-The HTTP Core module