基于 openEuler 构建 LVS-DR 群集

LVS(Linux Virtual Server)即 Linux 虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的基本工作原理是在集群的前端使用一台负载均衡器,将用户的请求转发到后端的一组服务器上执行,而这台负载均衡器对用户来说是透明的,用户并不会察觉到后端服务器的存在。NAT(Network Address Translation)模式和 DR(Direct Routing)模式是 LVS 负载均衡群集中常用的两种工作模式,它们各自的优势如下:

NAT 模式的优势

  1. 易于部署和管理:NAT 模式下,负载均衡器作为所有客户端请求的入口和出口,后端服务器只需要配置内部私有 IP 地址,无需公网 IP 地址。这样可以方便地对后端服务器进行管理和维护,添加、删除或更换服务器时,只需要在负载均衡器上进行相应的配置即可,无需对外部网络进行过多的调整。例如,企业内部的服务器集群,后端服务器使用私有 IP 地址,通过负载均衡器的 NAT 转换与外部网络进行通信,管理起来较为简单。
  2. 良好的安全性:后端服务器隐藏在负载均衡器之后,外界只能看到负载均衡器的公网 IP 地址,无法直接访问后端服务器的内部 IP 地址,减少了后端服务器暴露在公网上的风险,降低了被攻击的可能性。比如,对于一些对安全性要求较高的应用,如金融交易系统,使用 NAT 模式可以有效保护后端服务器的安全。
  3. 支持端口映射:NAT 模式可以灵活地进行端口映射,将客户端请求的不同端口映射到后端服务器的不同端口上。这对于一些需要使用特定端口的应用非常有用,例如,将客户端对 8080 端口的请求映射到后端服务器的 80 端口上,方便对应用进行管理和部署。
  4. 适用于小规模网络:在小规模的网络环境中,NAT 模式的性能开销相对较小,因为所有的请求和响应都经过负载均衡器进行地址转换,处理流程相对简单。对于一些访问量不是很大的网站或应用系统,NAT 模式可以满足需求,并且成本较低。

DR 模式的优势

  1. 高性能:DR 模式中,负载均衡器只负责将请求的目的 MAC 地址修改为后端服务器的 MAC 地址,然后将请求转发出去,而响应数据包则直接从后端服务器返回给客户端,无需经过负载均衡器。这样大大减少了负载均衡器的流量压力,提高了系统的整体性能和吞吐量,适用于高并发、大流量的应用场景。例如,大型电商网站在促销活动期间,会有大量的用户访问,使用 DR 模式可以有效地处理这些请求。
  2. 低延迟:由于响应数据包直接从后端服务器返回给客户端,避免了在负载均衡器上的再次处理和转发,减少了数据传输的延迟。对于对延迟敏感的应用,如在线游戏、实时通信等,DR 模式可以提供更好的用户体验。
  3. 后端服务器扩展性好:DR 模式下,后端服务器可以使用公网 IP 地址或者与负载均衡器在同一网段的私有 IP 地址,并且可以很方便地添加或删除后端服务器,只需要保证后端服务器的 IP 地址与负载均衡器的 IP 地址在同一物理网络即可。这使得系统具有良好的扩展性,可以根据业务需求灵活地调整后端服务器的数量。
  4. 支持多种操作系统:DR 模式对后端服务器的操作系统没有严格的限制,几乎可以支持所有主流的操作系统,如 Linux、Windows、Solaris 等。这使得企业在选择后端服务器时具有更大的灵活性,可以根据实际需求选择合适的操作系统和硬件平台。

基于 openEuler 构建 LVS-DR 群集

1、环境准备

准备好下面四台服务器:

|-----|----------------|-----------------|
| 主机名 | IP地址 | 备注 |
| op1 | 192.168.121.10 | Director Server |
| op2 | 192.168.121.12 | Real Server1 |
| op3 | 192.168.121.13 | Real Server2 |
| op4 | 192.168.121.14 | Client |

2、Web服务器配置:

[root@openEuler-2 ~]# yum install nginx -y

[root@openEuler-2 ~]# echo "this is test page!(ip:`hostname -I`)" > /usr/share/nginx/html/index.html

[root@openEuler-2 ~]# systemctl enable --now nginx

[root@openEuler-2 ~]# curl localhost

this is test page!(ip:192.168.121.12 )

第二台RS配置同上

3、添加VIP的相关配置

在两台RS和DS上:

[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.121.10/32

Connection 'dummy-dummy1' (7a44b435-72fc-4aa4-afb2-28bf52a1b5b4) successfully added.

[root@openEuler-1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

link/ether 00:0c:29:12:dd:13 brd ff:ff:ff:ff:ff:ff

inet 192.168.121.11/24 brd 192.168.121.255 scope global noprefixroute ens160

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fe12:dd13/64 scope link noprefixroute

valid_lft forever preferred_lft forever

3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000

link/ether 82:81:c6:9e:a9:f6 brd ff:ff:ff:ff:ff:ff

inet 192.168.121.10/32 scope global noprefixroute dummy1

valid_lft forever preferred_lft forever

inet6 fe80::1837:14b2:ae95:267a/64 scope link noprefixroute

valid_lft forever preferred_lft forever

剩下二台RS配置同上

4、配置arp抑制

在两台RS上:

[root@openEuler-2 ~]# cat >> /etc/sysctl.conf << EOF

> net.ipv4.conf.all.arp_ignore = 1

> net.ipv4.conf.all.arp_announce = 2

> net.ipv4.conf.dummy1.arp_ignore = 1

> net.ipv4.conf.dummy1.arp_announce = 2

> EOF

使其生效

[root@openEuler-2 ~]# sysctl -p

5.LVS配置:

[root@openEuler-1 ~]# yum install ipvsadm -y

[root@openEuler-1 ~]# ipvsadm -At 192.168.121.10:80 -s rr

[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.12:80 -g

[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.13:80 -g

[root@openEuler-1 ~]# 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.121.10:80 rr

-> 192.168.121.12:80 Route 1 0 0

-> 192.168.121.13:80 Route 1 0 0

[相关参数说明]

ipvsadm --help

-A 添加虚拟服务器

-t 设置群集地址(VIP,Virtual IP)

-s 指定负载调度算法

-a 添加真实服务器

-d 删除真实服务器

-r 指定真实服务器(Real Server)的地址

-m 使用NAT模式;-g、-i分别对应DR、TUN模式

-w 为节点服务器设置权重,默认为1

6.测试:

在Client上:

[root@localhost ~]# for ((i=1;i<10;i++)); do curl 192.168.121.10; done

this is test page!(ip:192.168.121.13 )

this is test page!(ip:192.168.121.12 )

this is test page!(ip:192.168.121.13 )

this is test page!(ip:192.168.121.12 )

this is test page!(ip:192.168.121.13 )

this is test page!(ip:192.168.121.12 )

this is test page!(ip:192.168.121.13 )

this is test page!(ip:192.168.121.12 )

this is test page!(ip:192.168.121.13 )

相关推荐
糯米汤圆~1 天前
LVS+Keepalived 高可用集群搭建
服务器·网络·lvs
IT_张三1 天前
LVS+Keepalived高可用群集配置案例
运维·服务器·lvs
IC拓荒者4 天前
数字IC后端培训教程| 芯片后端实战项目中base layer drc violation解析
lvs·物理验证·ic后端培训·calibre drc·drc·calibre lvs·零基础入门后端
不要吃栗子李7 天前
高级运维:1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 openEuler 构建 LVS-DR 群集。
运维·负载均衡·lvs
obboda10 天前
LVS相关原理
linux·服务器·lvs
小马爱打代码11 天前
负载均衡 LVS vs Nginx 对比
nginx·负载均衡·lvs
竹竿袅袅11 天前
LVS 负载均衡集群(DR 模式)
linux·运维·网络·负载均衡·lvs
2301_旺仔13 天前
负载均衡集群——LVS-DR配置
负载均衡·lvs·linux集群
不会敲代码的XW14 天前
基于 openEuler 构建 LVS-DR 群集
运维·负载均衡·lvs