lvs-dr模式

该案例详细介绍了如何配置LVS直接路由模式(DR)的负载均衡,包括调度器与节点服务器的设置,以及通过NFS搭建内网共享资源。在调度器上,配置了虚拟地址、添加真实服务器并启用服务。在节点服务器上,配置了回环接口以响应VIP,并设置相关路由和系统参数。最后,通过NFS实现了内网资源的共享,确保了服务器集群的高效运作。

案例:直接路由模式(LVS-DR)

准备案例环境
在DR模式的集群中,LVS负载调度器作为群集的访问入口,但不作为网关使用:服务器池中的所有节点都各自接入Internet,发送给客户机的Web响应数据包不需要经过LVS负载调度器。

LVS负载调度器:
RIP 192.168.79.100
VIP:192.168.79.10
第二章内网卡:192.168.119.100
WEB1服务器:
RIP192.168.79.20
VIP192.168.79.10
第二张内网卡:192.168.119.101
WEB2服务器:
RIP192.168.214.21
VIP192.168.79.10
第二:192.168.119.102
NFS共享资源服务器:
内网:192.168.119.103

内网地址不同
网关和DNS都是调度机的内网ip地址

操作调度器:

添加虚拟地址 
RIP:192.168.79.100

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
NAME=ens33:0  #
UUID=00c54993-0bdc-41ca-94c7-4714aea8142b
DEVICE=ens33:0 #
ONBOOT=yes
IPADDR=192.168.79.10
NETMASK=255.255.255.0



[root@localhost ~]# ipvsadm -A -t 192.168.79.10:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.79.10:80 -r 192.168.79.20:80 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.79.10:80 -r 192.168.79.21:80 -g -w 1
-A:添加虚拟服务器 -t:指定VIP地址及TCP端口
-s:指定负载调度算法 轮询rr) 加权轮询wrr) 最少链接lc) 加权最少连接wlc)
-a:表示添加真实服务器 -t:指定VIP地址及TCP端口
-m:表示使用NAT集群方法 -g:DR模式 -i:TUN模式 
-w:设置权重(权重为0 表示暂停节点)
#ipvsadm -d -r 192.168.7.24:80 -t 172.16.16.172:80
#删除指定目标对象

[root@localhost network-scripts]# 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.79.10:80 rr
  -> 192.168.214.100:80           Route   1      0          0         
  -> 192.168.214.101:80           Route   1      0          0         
[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl enable ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm

配置节点服务器

[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.79.10
NETMASK=255.255.255.255
# 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=192.168.79.10
ONBOOT=yes
NAME=lo:0

inet 192.168.79.10/24 brd 192.168.79.10 scope global lo:0

[root@localhost network-scripts]# route add -host 192.168.79.10 dev lo:0
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.214.128 0.0.0.0         UG    100    0        0 ens33
192.168.79.10   0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.214.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

[root@localhost network-scripts]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


systemctl start httpd

在这里插入图片描述

WEB2

vim ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=00c54993-0bdc-41ca-94c7-4714aea8142b
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.79.21
NETMASK=255.255.255.0
GATEWAY=192.168.79.2
DNS1=8.8.8.8

[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.79.10
NETMASK=255.255.255.255
# 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=192.168.79.10
ONBOOT=yes
NAME=loopback


[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.79.10
NETMASK=255.255.255.255
# 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=192.168.79.10
ONBOOT=yes
NAME=lo:0

inet 192.168.79.10/24 brd 192.168.79.10 scope global lo:0

[root@localhost network-scripts]# route add -host 192.168.79.10 dev lo:0
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.214.128 0.0.0.0         UG    100    0        0 ens33
192.168.79.10   0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.214.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

[root@localhost network-scripts]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


systemctl start httpd

在这里插入图片描述

NFS搭建共享资源 实现nfs内网传

NFS换成内网卡 (仅主机 仅能够与内网通信)

vim /etc/exports
/var/www/html 192.168.119.0/24(rw,sync,no_root_squash)
systemctl start rpcbind/nfs

调度机上添加 内网卡*(仅主机)

cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# nmcli con show
NAME   UUID                                  TYPE      DEVICE 
ens33  00c54993-0bdc-41ca-94c7-4714aea8142b  ethernet  ens33  
ens37  11102ef2-6f36-3948-8f3f-e3ef803cb2a4  ethernet  ens37
#uuid添加到 ens37里面 重启37网卡
ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group defau
lt qlen 1000    link/ether 00:0c:29:dd:fa:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.119.101/24 brd 192.168.119.255 scope global noprefixroute ens37


WEB两台服务器基于 调度机添加内网卡的操作
新增了

systemctl start rpcbind/nfs
[root@localhost html]# showmount -e 192.168.119.103
Export list for 192.168.119.103:
/var/www/html 192.168.119.0/24

[root@localhost network-scripts]# mount 192.168.119.103:/var/www/html /var/www/html

[root@localhost network-scripts]# cd /var/www/html
[root@localhost html]# ls
about.html    foodnews2.html  images      lianxi.html    新建文本文档.txt
contact.html  foodnews.html   index.html  services.html
css           foodshow.html   js          touming.html

systemctl start httpd

在谷歌搜索调度器的VIP地址 192.168.79.10
在这里插入图片描述
在这里插入图片描述

### 配置 LVS-DR 模式 LVS (Linux Virtual Server) 是一种高效的四层负载均衡解决方案,其 DR (Direct Routing) 模式通过共享虚拟 IP 地址 (VIP),使得客户端请求可以直接路由到真实服务器而无需经过负载均衡器转发数据包[^1]。 #### 1. 基本架构说明 在 LVS-DR 模式下,负载均衡器和真实服务器都需绑定同一个 VIP 地址。为了防止 ARP 广播引发冲突,仅允许负载均衡器对外部网络回应 ARP 请求,而真实服务器则不回应外部的 ARP 请求[^3]。 #### 2. 环境准备 假设环境如下: - **Director(负载均衡器)**: `192.168.1.1` (公网接口),`192.168.10.1`(私网接口) - **Real Servers(真实服务器)**: - RS1: `192.168.10.2` - RS2: `192.168.10.3` - **VIP地址**: `192.168.1.1` #### 3. Director 的配置 ##### 安装 ipvsadm 工具 ```bash yum install -y ipvsadm ``` ##### 添加服务规则 执行以下命令来设置 LVS-DR 模式的调度策略: ```bash ipvsadm -A -t 192.168.1.1:80 -s rr ``` 其中 `-A` 表示添加一条新的虚拟服务记录;`-t` 表明这是 TCP 协议的服务;`rr` 表示轮询算法。 ##### 将 Real Servers 加入集群 分别将两台真实服务器加入到该虚拟服务中: ```bash ipvsadm -a -t 192.168.1.1:80 -r 192.168.10.2:80 -m ipvsadm -a -t 192.168.1.1:80 -r 192.168.10.3:80 -m ``` 这里 `-a` 参数用于向已存在的虚拟服务添加一台真实的服务器实例;`-m` 则指定了采用 DR 方式工作[^4]。 #### 4. 实际服务器端配置 每台实际服务器都需要安装 Web 服务程序并确保能够正常运行。例如对于 Apache HTTPD 可以这样操作: ```bash yum install -y httpd && echo "This is server rs1" >> /var/www/html/index.html && systemctl start httpd ``` 同时还需要手动指定回环设备 lo 使用 VIP 来接收来自 director 发送过来的数据流: ```bash ifconfig lo:0 192.168.1.1 netmask 255.255.255.255 up route add -host 192.168.1.1 dev eth0 echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce sysctl -p ``` 以上步骤完成了基本的 LVS-DR 架构部署过程[^2]。 ### 注意事项 - 所有真实服务器必须位于同一物理局域网内以便能直接访问彼此。 - 如果需要持久会话等功能,则可能还需进一步调整参数或引入额外组件支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值