LVS搭建负载均衡集群(二)——DR模式
(1).DR模式和TUN模式介绍
Direct Routing(直接路由):director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing由于采用物理层(修改MAC地址)技术,因此所有服务器都必须在一个网段中。
IP Tunneling(IP隧道):director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的公网IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。
两者间的最大区别就在于IP地址是否在同一物理网段中,也是导致DR模式只需要服务器能够上网即可,但TUN模式必须拥有正式的公网IP。
(2).DR模式工作原理
扣了一张大佬的图,比较详细。原地址为:https://blog.csdn.net/gui951753/article/details/80316565#LVS_29
我用文字说明一下:
DR模式全程流向不变则目标地址、源地址不变,因为DR模式工作于2层。
第一步、请求报文从客户端发出,源地址:CIP,目标地址:VIP,源MAC:CMAC,目标MAC:VMAC;
第二步、请求到达负载均衡器,分配真实服务器(修改MAC),源地址:CIP,目标地址:VIP,源MAC:DMAC,目标MAC:RMAC;
第三步、真实服务器接收报文,处理并响应(回头了),源地址:RIP,目标地址:CIP,源MAC:RMAC,目标MAC:CMAC。
说明:1)基于MAC的数据报文转发是效率最好的,但是是根据交换机的MAC地址表来实现的;
2)2层设备不具有路由功能, 那么广播也就不具有跨路由的功能, 所有要实现mac地址广播, 必须在同一物理网段;
3)vlan具有隔离广播的功能, 所有要能处理mac地址广播, 就应该在同一个VLAN中
总来说就是,所有的设备应该在同一个物理网段,所有的设备都应该在同一个广播域中。
(3).实验
youxi1 192.168.5.100(DIP),192.168.5.100(VIP) 负载均衡器
youxi2 192.168.5.102 真实服务器1
youxi3 192.168.5.103 真实服务器2
1)在负载均衡器youxi1上生成ens33:1的配置文件,配置成192.168.5.101,作为VIP
[root@youxi1 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:1}
[root@youxi1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:1 //修改以下参数
NAME="ens33:1"
DEVICE="ens33:1"
IPADDR="192.168.5.101"
GATEWAY="192.168.5.2" //指向路由IP
//如果存在HWADDR,那么ens33和ens33:1两者不必须一致。
[root@youxi1 ~]# systemctl restart network //重启
[root@youxi1 ~]# ip a sh //查看
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e6:d6:27 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.100/24 brd 192.168.5.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.5.101/24 brd 192.168.5.255 scope global secondary noprefixroute ens33:1
valid_lft forever preferred_lft forever
inet6 fe80::201:7257:85b:7dc8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2)在负载均衡器youxi1上安装ipvsadm,并设置开机自启
[root@youxi1 ~]# yum -y install ipvsadm
[root@youxi1 ~]# systemctl enable ipvsadm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
暂时不启动ipvsadm,是因为启动需要/etc/sysconfig/ipvsadm配置文件。
3)在负载均衡器youxi1上使用ipvsadm命令设置规则
[root@youxi1 ~]# ipvsadm -A -t 192.168.5.101:80 -s rr //设置虚拟服务器的IP地址(VIP)和端口,使用轮询模式
[root@youxi1 ~]# ipvsadm -a -t 192.168.5.101:80 -r 192.168.5.102:80 -g
[root@youxi1 ~]# ipvsadm -a -t 192.168.5.101:80 -r 192.168.5.103:80 -g
[root@youxi1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.5.101:80 rr
-> 192.168.5.102:80 Route 1 0 0
-> 192.168.5.103:80 Route 1 0 0
[root@youxi1 ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
-A -t youxi1.cn:http -s rr
-a -t youxi1.cn:http -r youxi2.cn:http -g -w 1
-a -t youxi1.cn:http -r 192.168.5.103:http -g -w 1
[root@youxi1 ~]# systemctl start ipvsadm
-g选项表示DR模式,-m选项表示TUN模式。
注意:LVS的三种模式中,只有NAT模式需要开启路由转发功能,DR和TUN都不需要。
如果开启了防火墙记得添加端口号
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload
success
success
4)在真实服务器youxi2和youxi3上安装httpd用于测试
[root@youxi2 ~]# yum -y install httpd
[root@youxi2 ~]# systemctl start httpd
[root@youxi2 ~]# echo youxi2 > /var/www/html/index.html [root@youxi3 ~]# yum -y install httpd
[root@youxi3 ~]# systemctl start httpd
[root@youxi3 ~]# echo youxi3 > /var/www/html/index.html
如果开启了防火墙记得开放端口
[root@youxi2 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload
success
success [root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload
success
success
5)在真实服务器youxi2和youxi3上配置回环接口
[root@youxi2 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:1}
[root@youxi2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:1 //修改
DEVICE=lo:1
IPADDR=192.168.5.101 //指向VIP
NETMASK=255.255.255.255
#NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
#BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback [root@youxi3 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:1}
[root@youxi3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:1 //修改
DEVICE=lo:1
IPADDR=192.168.5.101 //指向VIP
NETMASK=255.255.255.255
#NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
#BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
为什么要在会还口上配置VIP:1.因为DR模式只改变MAC地址而不改变IP地址,为了真实服务器能够接收到报文,所以需要配置一个和VIP一样的IP地址;2.但是VIP不能配置在出口网卡上,否则会响应客户端的ARP请求,造成client/gateway arp table混乱,导致整个集群不能正常工作。
另外VIP可以不和RIP、DIP同网段,lo回环接口依然这样配置。
6)关闭真实服务器youxi2和youixi3上的ARP转发
[root@youxi2 ~]# vim /etc/sysctl.conf //添加或修改
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
[root@youxi2 ~]# sysctl -p //刷新
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2 [root@youxi3 ~]# vim /etc/sysctl.conf //添加或修改
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
[root@youxi2 ~]# sysctl -p //刷新
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2 //或者添加或修改如下参数
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
参数说明:
arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应。参数常用的取值主要有0,1,2,3~8较少用到:
sysctl.conf中包含all和eth/lo(具体网卡)的arp_ignore参数,取其中较大的值生效。
7)测试
连续刷新好像是不会更换真实服务器RS的,这点和NAT的轮询不一样。
LVS搭建负载均衡集群(二)——DR模式的更多相关文章
- LVS搭建负载均衡集群(一)——NAT模式
(1).集群技术的分类 集群技术主要分为三大类:负载均衡(Load Balance)集群,简称LB集群:高可用(High Availability)集群,简称 HA 集群:高性能计算(High Per ...
- LB负载均衡集群及DR模式配置
一.系统环境准备: 1.dir服务器 主机名称:dir 系统环境:CentOS release 6.5 (Final) 外网ip:192.168.1.203(网络模式桥接) vip:192.168.1 ...
- LB(Load balance)负载均衡集群--{LVS-[NAT+DR]单实例实验+LVS+keeplived实验} 菜鸟入门级
LB(Load balance)负载均衡集群 LVS-[NAT+DR]单实例实验 LVS+keeplived实验 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一 ...
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- keepalived + nginx 搭建负载均衡集群
第一章 keepalived 1.1 keepalived 服务说明 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现 ...
- LB负载均衡集群及NAT模式配置
一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...
- 搭建LVS+Keepalived负载均衡集群
这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...
- Nginx + Tomcat 在 Windows7 上搭建负载均衡集群
一.安装Tomcat和Nginx 首先安装两个apache-tomcat-8.0.41,下载地址:http://tomcat.apache.org 并安装一个nginx-1.13.0,下载地址http ...
- Nginx+Tomcat搭建负载均衡集群
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器, 使用 Nginx 可以使得程序在高并发的情况下依旧可以保持良好的性能.使用 Nginx+Tomcat ...
随机推荐
- [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列
原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...
- flask中使用ajax 处理前端请求 弹框展示
菜小鱼初次使用 ajax,想前端提交数据,后端处理后,将结果以弹框的形式展示,在网上查看了好多,不停的调试,终于调通了 html: <html> <head></head ...
- js中使用Switch
语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 } ...
- iOS入门及ObjC语法
iOS入门:http://www.jonathanhui.com/ios ObjC语法: http://www.jonathanhui.com/objective-c https://github.c ...
- BigDecimal计算
货币金额的计算 - Java中的BigDecimal 在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我 ...
- 遍历器Iterator--指针对象
一. 什么是遍历器 1. 遍历器对象(Iterator) 遍历器对象本质上是一个指针对象,该对象有一个next方法,调用next方法返回一个 含有value和done属性的对象{value: val/ ...
- 006_Python3 数字(Number)
1. Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: var1 = ...
- 【优化算法】变邻域搜索算法解决0-1背包问题(Knapsack Problem)代码实例 已
01 前言 经过小编这几天冒着挂科的风险,日日修炼,终于赶在考试周中又给大家更新了一篇干货文章.关于用变邻域搜索解决0-1背包问题的代码.怎样,大家有没有很感动? 02 什么是0-1背包问题? 0-1 ...
- 爬虫(十七):scrapy分布式原理
一:scrapy工作流程 scrapy单机架构: 单主机爬虫架构: 分布式爬虫架构: 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Redis,非关系型数据库,Key-Valu ...
- NetworkX系列教程(10)-算法之二:最小/大生成树问题
小书匠 Graph 图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...