基于 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: \ 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: \ 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: \ 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配置同上

在两台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

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 )

相关推荐
Kendra91916 小时前
Keepalive+LVS+Nginx+NFS高可用架构
nginx·架构·lvs
棕生1 天前
架构师面试(二十三):负载均衡
nginx·负载均衡·lvs·架构师面试·rpc连接池·vip+keepalive
RememberLey2 天前
lvs-net+nfs的配置
开发语言·php·lvs
重启就好3 天前
【LVS】负载均衡群集部署(DR模式)
服务器·负载均衡·lvs
Z字小熊饼干爱吃保安3 天前
使用LVS的 NAT 模式实现 3 台RS的轮询访问
运维·服务器·lvs
柳如烟@3 天前
LVS-NAT 负载均衡与共享存储配置
linux·负载均衡·lvs
m0_745364243 天前
LVS-DR模式配置脚本
linux·运维·服务器·github·lvs
大橘4 天前
centos8上实现lvs集群负载均衡nat模式
linux·nginx·负载均衡·lvs
小余1324 天前
LVS简单的NAT配置
lvs
不会敲代码的洋6 天前
LVS的 NAT 模式实验
linux·运维·服务器·网络·lvs