ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LVS-DR模式配置

2022-08-24 10:31:37  阅读:189  来源: 互联网

标签:lvs LVS RS IP 报文 ipvsadm 192.168 模式 DR


Lvs

简介 LVS 的全称是 Linux virtual server,即 Linux 虚拟服务器。之所以是虚拟服 务器,是因为 LVS 自身是个负载均衡器(director),不直接处理请求,而是将请 求转发至位于它后端真正的服务器 realserver 上。

LVS 是四层(传输层 tcp/udp)、七层(应用层)的负载均衡工具,但是七层不怎么 完善。

ipvs 是集成在内核中的框架,可以通过用户空间的程序 ipvsadm 工具来管 理,该工具可以定义一些规则来管理内核中的 ipvs。就像 iptables 和 netfilter 的关系一样。

 

lvs无法解决RS的健康检查,并且存在单点故障

 

lvs 集群术语 

VS:virtual server,负责调度 

RS:real server,负责真正提供服务 

CIP:客户端 ip 

VIP:VS 外网 IP 

DIP:VS 内网 ip 

RIP:后端真实 ip

 

lvs 工作模式:

(1)nat 模式

本质时多目标 IP 的 DNAT,通过将请求报文中的目标地址和目标端口修改为某挑 出的 RS 的 RIP 和 PORT 实现转发。

  1. RIP 和 DIP 应在同一个 IP 网络,使用不同网络时,RS 和 lvs 需要指向到 达互相的路由
  2. 请求报文和响应报文都必须经过 Director 转发,Director 易于成为系统瓶 颈
  3. 支持端口映射,可修改请求报文的目标 PORT
  4. VS 必须是 linux,RS 可以是其他系统

 

(2)dr 模式

DR(Director routing,直接路由)。lvs 默认模式,通过为请求报文重新封装一 个 MAC 首部进行转发,只会改变源和目的 MAC,不会修改源和目的 IP/PORT。

  1. Director 和 RS 都配置 VIP
  2. 需要确保前端路由器将目标 VIP 的请求报文发往 Dircetor
  3. RS 和 Dircetor 需要在同一物理网络(因为 lvs 将通过 arp 找到 RS), RS 的网关不用指向 DIP
  4. 请求报文经过 Director,响应报文不经过 Director,由 RS 直接发往 Client

5. 不支持端口映射

 

(3)tun 模式

不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP 报 文之外再封装一个 IP 首部(源 IP 是 DIP,目标 IP 是 RIP),将报文发往挑 选出的目标 RS;RS 直接响应给客户端。

  1. DIP、VIP、RIP 可以是公网地址
  2. 请求报文经过 Director,响应报文不经过 Director,由 RS 直接发往 Client
  3. 不支持端口映射
  4. RS 的 OS 须支持隧道功能 5. RS 的网关不用指向 DIP

 

lvs 工作模式比较

 

 

lvs 调度算法

ipvs schedule:根据其调度时是否考虑 RS 当前负载状态分为静态方法和动态方法

 

静态方法

仅仅根据算法本身进行调度

  1. RR:轮询
  2. WRR:加权轮询
  3. SH,source hashing:实现 session sticky,源 IP 地址 hash,将来自同一 个 IP 地址的请求始终发往第一次挑中的 RS,实现会话绑定
  4. DH,Destination Hashing:第一次轮询调度至 RS,后续将发往同一目标地址 的请求始终转发至第一此挑中的 RS,典型的使用场景是正向代理缓存场景中 的负载均衡

 

动态方法

根据 RS 当前负载状态及调度算法进行调度 Overhead(负载值)=value 较小的 RS 将被调度。

  1. LC:最短连接,适用与长连接 overhead=activeconns*256+inactiveconns
  2. WLC:weighted LC,默认调度算法 overhead=(activeconns*256+inactiveconns)/wegiht
  3. SED:初始连接高权重优先 overhead=(activeconns+1)*256/weight
  4. NQ:第一轮均匀分配,后续 SED
  5. 5. LBLC:动态 DH 算法 6. LBLCR:带复制功能的 LBLC,解决 LBLC 负载不均衡问题,从负载重的复制到 负载轻的 RS

 

内核版本 4.15 版本后新增 FO 和 OVF 算法

实例 nat 模式示例

环境:CentOS Linux release 7.9.2009 (Core)

 

 

 

开启路由转发 在 lvs 和 router 主机上配置路由转发:

$ sysctl -w net.ipv4.ip_forward=1

配置路由

LVS:

添加到 web 的路由

ROUTER

添加到 Client 的路由

web

网关指向 DIP

配置 ipvsadm

安装 ipvsadm

$ yum install ipvsadm -y

 

添加虚拟服务

$ ipvsadm -A -t 192.168.1.100:80 -s wrr

添加 RS 到 VS

 #访问 vip 的 80 端口,将会映射到 RIP 的 80 端口

 $ ipvsadm -a -t 192.168.1.100:80 -r 192.168.3.100:80 -m

 $ ipvsadm -a -t 192.168.1.100:80 -r 192.168.3.101:80 -m -w 3

 

查看 VS 表 及连接状态

 $ ipvsadm -Lnc 

 

保存规则

#默认规则只放在内存中,将其保存在文件中

 $ ipvsadm -Sn > /etc/sysconfig/ipvsadm

 # ipvsadm 服务在启动时会加载/etc/sysconfig/ipvsadm 配置文件的内容

 $ systemctl enable ipvsadm.service

 

dr 模式单网段示例

开启路由转发

router 开启路由转发:

$ sysctl -w net.ipv4.ip_forward=1

配置回环网卡

在 web 和 lvs 上配置

$ ip addr add 192.168.2.101/32 dev lo label lo:1

网络路由配置

client

route

lvs

web

内核参数修改

arp_ignore

 0:回应任何网口上收到的对任何本机 IP 地址的 ARP 查询请求(默认)

 1:只回应 Target IP 是接收网口的 IP 的 ARP 查询请求

 2:只回应 Target IP 是接收网口的 IP 的 ARP 查询请求,且 Sender IP 必

须与该网口属于同一网段

 4-7:保留未使用

 8:不回应所有的 arp 查询

arp_announce

 0:使用发送(或转发)的数据包的源 IP 作为发送 ARP 请求的 Sender IP

(默认) ;(可使用 ping -I 验证)

 1:IP 数据包的目的 IP 属于本地某个接口的网段时,Sender IP 则使用 IP

数据包源 IP,不属于则按 2 处理;

 2:忽略数据包的源 IP,使用能与目标主机会话的最佳地址来作为发送 ARP

的 Sender IP,优先选择对外接口的主 IP;(loopback 不是对外接口)

 

修改RS的内核参数

 # 用来响应router的arp请求

 $ sysctl -w net.ipv4.conf.all.arp_ignore=1

 # 用来发送lvs的arp响应

 $ sysctl -w net.ipv4.conf.all.arp_announce=2

 $ sysctl -w net.ipv4.conf.lo.arp_ignore=1

 $ sysctl -w net.ipv4.conf.lo.arp_announce=2

 

配置ipvsadm

创建虚拟服务

 $ ipvsadm -A -t 192.168.2.101:80

添加rs到vs

 $ ipvsadm -a -t 192.168.2.101:80 -r 192.168.2.102 -g

 $ ipvsadm -a -t 192.168.2.101:80 -r 192.168.2.103 -g

 

注意事项

lvs需要配置网关(网关可以随意配置),不然无法调度到后端RS上

 

 

 

 

 

 

 

 

 

---------------------------------------------------------------------

Lvs

简介 LVS 的全称是 Linux virtual server,即 Linux 虚拟服务器。之所以是虚拟服 务器,是因为 LVS 自身是个负载均衡器(director),不直接处理请求,而是将请 求转发至位于它后端真正的服务器 realserver 上。

LVS 是四层(传输层 tcp/udp)、七层(应用层)的负载均衡工具,但是七层不怎么 完善。

ipvs 是集成在内核中的框架,可以通过用户空间的程序 ipvsadm 工具来管 理,该工具可以定义一些规则来管理内核中的 ipvs。就像 iptables 和 netfilter 的关系一样。

 

lvs无法解决RS的健康检查,并且存在单点故障

 

lvs 集群术语 

VS:virtual server,负责调度 

RS:real server,负责真正提供服务 

CIP:客户端 ip 

VIP:VS 外网 IP 

DIP:VS 内网 ip 

RIP:后端真实 ip

 

lvs 工作模式:

(1)nat 模式

本质时多目标 IP 的 DNAT,通过将请求报文中的目标地址和目标端口修改为某挑 出的 RS 的 RIP 和 PORT 实现转发。

  1. RIP 和 DIP 应在同一个 IP 网络,使用不同网络时,RS 和 lvs 需要指向到 达互相的路由
  2. 请求报文和响应报文都必须经过 Director 转发,Director 易于成为系统瓶 颈
  3. 支持端口映射,可修改请求报文的目标 PORT
  4. VS 必须是 linux,RS 可以是其他系统

 

(2)dr 模式

DR(Director routing,直接路由)。lvs 默认模式,通过为请求报文重新封装一 个 MAC 首部进行转发,只会改变源和目的 MAC,不会修改源和目的 IP/PORT。

  1. Director 和 RS 都配置 VIP
  2. 需要确保前端路由器将目标 VIP 的请求报文发往 Dircetor
  3. RS 和 Dircetor 需要在同一物理网络(因为 lvs 将通过 arp 找到 RS), RS 的网关不用指向 DIP
  4. 请求报文经过 Director,响应报文不经过 Director,由 RS 直接发往 Client

5. 不支持端口映射

 

(3)tun 模式

不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP 报 文之外再封装一个 IP 首部(源 IP 是 DIP,目标 IP 是 RIP),将报文发往挑 选出的目标 RS;RS 直接响应给客户端。

  1. DIP、VIP、RIP 可以是公网地址
  2. 请求报文经过 Director,响应报文不经过 Director,由 RS 直接发往 Client
  3. 不支持端口映射
  4. RS 的 OS 须支持隧道功能 5. RS 的网关不用指向 DIP

------------------------------------------------------------------

LVS-DR模式配置

负载均衡器:eth0 192.168.124.134 eth0:0 192.168.124.135

节点1:   eth0 192.168.124.133 lo:0   192.168.124.135

 

1、LVS负载调度器(192.168.124.134):采用虚接口方式(eth0:0),为网卡eth0绑定VIP地址,以便响应群集访问。

eth0:192.168.124.134/24  eth0:0:192.168.124.135

配置命令如下:

# yum install ipvsadm -y

# cd /etc/sysconfig/network-scripts/;cp ifcfg-eth0 ifcfg-eth0:0

# vim ifcfg-eth0:0

==>BOOTPROTO=static

==>DEVICE=eth0:0

==>IPADDR=192.168.124.135

==>NETMASK=255.255.255.0

# ifup eth0:0

# ifconfig eth0:0

 

 

配置LVS负载分配策略:

#ipvsadm -A -t 192.168.124.135:80 -s rr

#ipvsadm -a -t 192.168.124.135:80 -r 192.168.124.133:80 -g -w 1

#ipvsadm -a -t 192.168.124.135:80 -r 192.168.124.134:80 -g -w 1

 

添加vip本地访问路由

ip addr add 192.168.124.1/32 dev lo label eth0:0

 

2、配置RS节点服务器(192.168.124.133):

使用DR模式时,节点服务器也需要vip地址,并调整内核的ARP响应参数以阻止更新vip的MAC地址,避免发生冲突。除此以外,web服务器配置和NAT模式一样。

 

配置虚拟IP地址

每个节点服务器同样需要具有vip,192.168.20.139,但此地地址仅用作发送web响应数据包的源地址,并不需要监听客户机的访问请求(由调度器监听并分发)。因此使用虚接口lo:0来承载vip地址,并为本机添加一条路由记录,将访问vip的数据限制在本地,以免通信紊乱。

 

配置命令:

# yum install ipvsadm -y

# cd /etc/sysconfig/network-scripts;cp ifcfg-lo ifcfg-lo:0

#vim ifcfg-lo:0

==>DEVICE=lo:0

==>IPADDR=192.168.124.135

==>NETMASK=255.255.255.255

==>ONBOOT=yes<br>ifup lo:0

 

添加vip本地访问路由

#route add -host 192.168.124.135 dev lo:0

 

配置RS节点的arp响应和通告级别

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

 

测试前

#ipvsadm -Ln

 

 

 

访问192.168.124.135:80

测试后:

 

 

 

标签:lvs,LVS,RS,IP,报文,ipvsadm,192.168,模式,DR
来源: https://www.cnblogs.com/libin-linux/p/16618933.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有