LVS中DR类型集群实现

LVS负载均衡集群中DR类型的架构图示如下:

图中,客户端发送的请求会由路由器和交换机转发后直接达到director。再由director调度给指定的real server ,最后由real server直接响应给客户端而不经过director,在此架构中director和real server的网络架构是此类型的重点。所以,配置DR类型一定要注意以下两点:

(1) 各RS要直接响应Client,因此,各RS均得配置VIP;但仅能够让Director上的VIP能够与本地路由直接通信;

(2) Director不会拆除或修改请求报文的IP首部,而是通过封闭新的帧首部(源MAC为Director的MAC,目标MAC为挑选出的RS的MAC)完成调度。

要完成上述的要求,着实很难,因为RS和DR都有VIP,而请求进入时必须最先发送给DR,所以,在DR类型中,首先通过ARP广播确认DR主机,其他RS主机不响应,这就确定了哪一个是DR主机。

但是在linux主机中,IP地址不属于网卡而是属于内核,就是说无论一个linux主机有多少个IP地址,它在接入的各个网络中都会公布它拥有的所有地址,这就给ARP广播的响应制造了困难,所以就需要修改内核参数来保证router发出ARP广播时,DR会响应RS不予响应,这里所说的内核参数分别为:

#arp_announce:定义arp通知级别;

0:默认级别,在各个网络中通告本机所含有的所有地址

1:尽量不在各个网络中通告本机中含有的不属于该网络的地址

2:不在各个网络中通告本机中含有的不属于该网络的地址

#arp_ignore:定义arp忽略arp请求或arp通告的级别;

0:(默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求

1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求

2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内

3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应

4-7:保留未使用

8:不回应所有(本地地址)的arp查询

举例1VIPDIPRIP在同一网段时的DR类型负载均衡

首先设计网络拓扑,我在这里准备三个虚拟机,V1作为director,V2、V3作为real server。

设计完拓扑,现在开始配置:

在V1上更改IP地址

Ifconfigeth0 172.16.50.11 up

Ifconfig eth0:0 172.16.50.12 netmask255.255.255.255 broadcast 172.16.50.12 up

Routeadd –host 172.16.50.12 dev eth0:0

在V2、V3上更改地址:

Ifconfigeth0 172.16.50.21 up

Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up

Route add –host 172.16.50.12 dev lo:0

Ifconfigeth0 172.16.50.31 up

Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up

Routeadd –host 172.16.50.12 dev lo:0

不留图了

更改V2、V3的内核参数(不更改的话会ping不通)

echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo2 > /proc/sys/net/ipv4/conf/all/arp_announce

如果觉得不放心的话,还可以再执行两个命令

echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce

现在就可以添加规则了

在V1上执行如下命令:

Ipvsadm–A –t 172.16.50.12:80 –s rr

Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.21 –g –w 1 这里加权重是为了以后改算法省事

Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.31 –g –w 2

这样就完成了同网段内DR类型的负载均衡配置。

举例2VIPDIPRIP在不在同一网段时的DR类型负载均衡

首先设计网络拓扑,我在这里准备三个虚拟机,V1作为director,V2、V3作为real server。环境中应有两个网段172.16.0.1和192.168.0.254且打开了路由间转发功能。

设计完拓扑,现在开始配置:

在V1上更改IP地址

Ifconfigeth0 192.18.0.11 up

Routeadd default gw 192.168.0.254

Ifconfigeth0:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up

Routeadd –host 172.16.50.12 dev eth0:0

在V2、V3上更改地址:

Ifconfigeth0 192.168.0.21 up

Routeadd default gw 192.168.0.254

Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up

Routeadd –host 172.16.50.12 dev lo:0

Ifconfigeth0 192.168.0.31 up

Routeadd default gw 192.168.0.254

Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up

Routeadd –host 172.16.50.12 dev lo:0

不留图了

更改V2、V3的内核参数(不更改的话会ping不通)

echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo2 > /proc/sys/net/ipv4/conf/all/arp_announce

如果觉得不放心的话,还可以再执行两个命令

echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce

现在就可以添加规则了

在V1上执行如下命令:

Ipvsadm–A –t 172.16.50.12:80 –s rr

Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.21:80 –g –w 1  这里加权重是为了以后改算法省事

Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.31:80 –g –w 2

这样就完成了不通网段内DR类型的负载均衡配置。

注意:在普通电脑上实现这个负载均衡,访问页面时会反应比较慢,不要以为没成功,是慢!慢!慢!

时间: 2024-08-18 19:42:29

LVS中DR类型集群实现的相关文章

centos6.5里搭建LVS+Keepalived(DR模式)集群

最近闲着,整理下以前搭建的服务.. 介绍还是百度下, LVS+Keepalived 介绍LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq).KeepalviedKeepalived在这里主要用作

使用LVS+DR搭建集群实现负载均衡

使用LVS+DR搭建集群实现负载均衡 DR模式的概述与工作原理 DR模式服务概述:        Direct Routing(直接路由) --在同一个地域,同一个网段 Director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接.负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性.Direct Routing由与采用物理层(修改MAC地址)技术,因此所有服务器都必须在一

LVS集群DR、NAT模型配置, 及使用ldirectord完成LVS DR模型集群搭建

首先我们有三台主机:其中172.16.192.168作为前台主机:另外172.16.254.18和172.16.254.105作为后端主机,作为测试分别运行有web服务,并测试可用,如下图. 一.LVS NAT模型集群配置实验 1.首先在后端Real Server上设置默认网关,执行前端Virtual Server 2.在前端Virtual Server上开启路由转发功能 3.配置前端LVS集群 4.测试 总结:经过初步测试,我们可以看出已经可以实现rr轮询调度,修改相应的调度算法则可以实现不同

linux企业常用服务---lvs+Keepalived高可用集群

部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 主服务器ip:192.168.100.157(keeplived+lvs) 从服务器ip:192.168.100.156(keeplived+lvs) 节点服务器ip:192.168.100.153-192.168.100.155(httpd) 集群vip:192.168.100.95 1.安装keepalived(在两

heartbeat+ldirector+lvs实现高可用集群

7.heartbeat+ldirector+lvs实现高可用集群 在lvs的DR模式基础下进行该实验. heartbeat工作原理: heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来 告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务. 两台 调度服务器 :    Heartbeat仅仅是个HA软件,它仅能完成

(4) Spring中定时任务Quartz集群配置学习

原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本.cronExpression到服务器类型,甚至查到了服务器操作系统的类型,都没能找到解决的办 法,后来才知道是集群惹的祸! 详细步骤如下: 1. 按照Quartz集群工作原理 图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知 在数据库中建表.建表模版在Quartz包下docs/d

项目中使用Quartz集群分享--转载

项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖与问题  二:什么是quartz,如何使用,集群,优化  三:CRM中quartz与Spring结合使用 1:CRM对定时任务的依赖与问题  1)依赖  (1)每天晚上的定时任务,通过sql脚本 + crontab方式执行 Xml代码   #crm 0 2 * * * /opt/***/javafiles/***/shell/***_dail

7条命令在docker中部署Mesos集群

7条命令在docker中部署Mesos集群 所有使用的Docker容器构建文件是有也.您可以在本地构建每个容器或只使用位于Docker Hub预构建的容器.下面的命令会自动下载所需的预建的容器为您服务.ZooKeeper?-?https://registry.hub.docker.com/u/garland/zookeeper/Meso Master?-?https://registry.hub.docker.com/u/garland/mesosphere-docker-mesos-maste

在Spring Boot项目中使用Redis集群

Redis安装 Mac 系统安装Redis brew方式安装 在命令汗执行命令 brew install redis 安装完成之后的提示信息 ==> Downloading https://homebrew.bintray.com/bottles/redis-5.0.2.mojave.bottle.tar.gz ######################################################################## 100.0% ==> Pouring