LVS的nat模式和DR模式实现

目录

一、LVS集群概念

1、集群解决的常见三种类型的问题

2、集群和分布式的区别

3、角色缩写

二、LVS运行原理

三、LVS集群的类型

1、nat模式原理

2、dr模式原理

四、LVS实战案例

1、nat模式

(1)环境部署

(2)步骤

①webserver1:

②webserver2:

③LVS:

④最后测试一下

2、DR模式

(1)环境部署

(2)步骤

①网络配置

LVS:

RS:

router:

Client:

②设置内核达到两个网段相通

③在RS上解决响应问题

④在LVS上设置策略

⑤抓包测试

五、拓展

1、防火墙标记解决轮询调度问题

2、lvs持久链接


一、LVS集群概念

1、集群解决的常见三种类型的问题

负载均衡LB:loadBalancing由多个主机组成,每个主机只承担一部分访问。

高可用HA:highAvailability A=正常时间/(正常时间+故障时间)

高性能计算HPC:High-performance computing

2、集群和分布式的区别

集群是同一个业务系统部署在多台主机上,每台主机实现的功能没有差别,数据和代码都是一样的

分布式是一个业务被拆分成多个子业务或者本身就是不同的业务,部署在多台主机上,每台主机实现的功能不同,数据和代码也不一样,完整的业务是每台主机实现的功能加起来。

集群是通过提高单位时间内执行的任务数来提升效率,而分布式是通过缩短单个任务的执行时间来提升效率。

3、角色缩写

VS:Virtual Server

RS:Real Server

CIP:Client IP

VIP:VS外网的IP

DIP:VS内网的IP

RIP:Realserver IP 

访问流程:CIP <-->VIP==DIP<-->RIP

二、LVS运行原理

LVS是基于四层来实现的,其根据请求报文的目标ip和目标协议及端口将其调度转发至真实主机,会根据调度算法挑选真实主机。

三、LVS集群的类型

lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

lvs-dr:操纵封装的MAC地址

lvs-tun:在原请求的IP报文之外新加一个IP首部

lvs-fullnat:修改请求报文的源和目标IP

1、nat模式原理

2、dr模式原理

DR 模式的特点
1.Director 和各 RS 都配置有 VIP
2. 确保前端路由器将目标 IP VIP 的请求报文发往 Director
3. 在前端网关做静态绑定 VIP Director MAC 地址
RS 上使用 arptables 工具
RS 上修改内核参数以限制 arp 通告及应答级别
4.RS RIP 可以使用私网地址,也可以是公网地址; RIP DIP 在同一 IP 网络;
5.RIP 的网关不能指向 DIP ,以确保响应报文不会经由 Director
6.RS Director 要在同一个物理网络
7. 请求报文要经由 Director ,但响应报文不经由 Director ,而由 RS 直接发往 Client
8. 不支持端口映射(端口不能修败)

四、LVS实战案例

1、nat模式

(1)环境部署

给LVS增加至两个网卡,一个nat模式一个仅主机模式,模拟不同网段

(2)步骤


①webserver1:
[root@webserver ~]# vmset.sh eth0 192.168.0.10 webserver.jcl.org
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

编辑网络配置文件设置网关为LVS的RIP

[root@webserver ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[root@webserver ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual
dns=114.114.114.114;

激活网卡

[root@webserver ~]# nmcli connection reload
[root@webserver ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

安装httpd并写入启动文件
[root@webserver ~]# yum install httpd -y
[root@webserver ~]# echo web1->192.168.0.10 /var/www/html/index.html

启动http
[root@webserver ~]# systemctl enable --now httpd

查看网关是否设置成功
[root@webserver ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0


②webserver2:
[root@webserver2 ~]# vmset.sh eth0 192.168.0.20 webserver.jcl.org
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

[root@webserver2 ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.20/24,192.168.0.100
method=manual
dns=114.114.114.114;

激活网卡

[root@webserver2 ~]# nmcli connection reload
[root@webserver2 ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
 

安装http并写入启动文件

[root@webserver2 ~]# yum install httpd -y
[root@webserver2 ~]# echo web2->192.168.0.20 /var/www/html/index.html

启动http
[root@webserver2 ~]# systemctl enable --now httpd


最后查看一下网关是否设置成功

[root@webserver2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

③LVS:
[root@LVS ~]# vmset.sh eth0 172.25.254.100 LVS.jcl.org
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

设置内核使LVS中的两个网段互通

刷新

[root@www ~]# sysctl -p
net.ipv4.ip_forward = 1

查看是否设置成功

[root@LVS ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

给LVS增加策略以便选择哪个RS

先安装 yum install ipvsadm -y

④最后测试一下
[root@LVS ~]# curl 192.168.0.10
web1
[root@LVS ~]# curl 192.168.0.20
web2

证明两台RS可以访问
测试十次

2、DR模式

(1)环境部署

(2)步骤

①网络配置
LVS:
RIP
[root@LVS~]# vmset.sh eth0 192.168.0.50 LVS.jcl.org
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
VIP
[root@LVS ~]# ip a a 192.168.0.200/32 dev lo

编辑网关

[root@www ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection 
[root@www ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.50/24,192.168.0.100
method=manual
dns=114.114.114.114;

激活网卡
[root@www ~]# nmcli connection reload 
[root@www ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)

查看网卡,IP是否设置成功

RS:

router:

Client:

设置网关为router的外网IP

配置IP

②设置内核达到两个网段相通

router:

③在RS上解决响应问题

[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

④在LVS上设置策略

[root@LVS ~]# ipvsadm -C    ---清楚之前的策略
[root@LVS ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr   ---添加VIP服务
[root@LVS ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g -w 1  ---添加RIP并设置为dr模式(-g)
[root@LVS ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g -w 2
[root@LVS ~]# 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.0.200:80 wrr
  -> 192.168.0.10:80              Route   1      4          0
  -> 192.168.0.20:80              Route   2      0          6

⑤抓包测试

由于硬件原因虚拟机开不了五台,这里挂起了一台RS

可以看到DR模式下改变的不是源目的IP,而是源mac地址和目标mac地址。

五、拓展

1、防火墙标记解决轮询调度问题

首先给LVS主机打标记

在Director主机基于标记定义集群服务,设定策略

[root@LVS ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 666

[root@LVS ~]# ipvsadm -C                          ---先清空策略
[root@LVS ~]# ipvsadm -A -f 666 -s rr
[root@LVS ~]# ipvsadm -a -f 666 -r 192.168.0.10 -g
[root@LVS ~]# ipvsadm -a -f 666 -r 192.168.0.20 -g
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  666 rr
  -> 192.168.0.10:0               Route   1      0          0
  -> 192.168.0.20:0               Route   1      0          0

2、lvs持久链接

[root@LVS ~]# ipvsadm -A -f 666 -s rr -p
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  666 rr persistent 360
  -> 192.168.0.10:0               Route   1      0          0
  -> 192.168.0.20:0               Route   1      0          0

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值