LVS-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. WLCweighted 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 验证)

1IP 数据包的目的 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

添加rsvs

 $ 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

 

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

eth0:192.168.124.134/24  eth0:0192.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

测试后:

 

 

 

posted @ 2022-08-24 10:22  LB_运维技术  阅读(892)  评论(0编辑  收藏  举报