LVS负载均衡群集解析:理解LVS-NAT的工作原理

目录

一、LVS群集应用基础

1.群集技术概述

2.LVS虚拟服务器

3.NFS共享存储服务

二、案例:地址转换模式(LVS-NAT)

1.资源清单

2.修改主机名

3.配置负载调度器(LVS上)

4.配置节点服务器(web1、web2)

5.测试LVS群集(本机访问)

6.使用NFS发布共享资源(nfs上)

7.在客户机中访问NFS共享资源


一、LVS群集应用基础

1.群集技术概述

  • a.群集的类型

负载均衡群集(LB):以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载的整体性能

高可用群集:以提高应用系统的可靠性、尽可能的减少中断时间为为目标,确保服务的连续性,达到高可用(HA)的容错效果

高性能运算群集:以提高应用系统CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型超级计算机的高性能运算(HPC)能力

b.负载均衡的分层结构

第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP(虚拟IP)地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效后能够替换至备用调度器

第二层,服务器池:群集所提供的应用服务(HTTP、FTP)由服务器池承担,其中每个节点具有独立的RIP(真实IP)地址,只处理调度器分发过来的客户机请求。当某个节点失效时,负载均衡调度器的容错机制会将其隔离,等待错误排除后重新纳入服务器池

第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在Linux中共享存储可以使用NAS设备或者提供NFS(网络文件系统)共享服务器的专用服务器

c.负载均衡的工作模式

地址转换(NAT模式):负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是个节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一物理网路,安全性要优于其他两种方式

IP隧道(TUN模式):采用开放式网络结构,负载调度器仅作为客户端的访问入口,个节点通过各自的internet连接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中不同的位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

直接路由(DR模式):采用半开放式的网络结构,与TUN模式的结构类似,但各节点不是分散在各地,而是与调度器位于同一物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

2.LVS虚拟服务器

a.LVS的负载调度算法

轮询:将收到的访问请求按照顺序轮流分配给集群中的各个节点,均等地对待每台服务器而不管服务器实际连接数和系统负载

加权轮询:根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务并分配请求越多,这样可以保证性能高的节点承担更多请求

最少连接:根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载

加权最少连接:在服务器节点的性能差异较大的情况下,调度器可以根据节点服务器的负载自动调整权重,权重较高的节点将承担更大比例的活动连接负载

3.NFS共享存储服务

NFS是一种基于TCP/IP传输的网络文件系统协议。

通过NFS协议,客户机可以向访问本机目录一样访问远程服务器中的共享资源

二、案例:地址转换模式(LVS-NAT)

1.资源清单

|----------|--------------------|--------------------|---------------------------|
| 主机 | 操作系统 | IP地址 | 应用 |
| lvs | OpenEuler24.03 | 192.168.16.142 | Ipvsadm |
| web1 | OpenEuler24.03 | 192.168.16.143 | Apache、nfs、bind-utils |
| web2 | OpenEuler24.03 | 192.168.16.144 | Apache、nfs、bind-utils |
| nfs | OpenEuler24.03 | 192.168.16.145 | nfs、bind-utils |

2.修改主机名

bash 复制代码
hostnamectl set-hostname lvs
hostnamectl set-hostname web2
hostnamectl set-hostname web1
hostnamectl set-hostname nfs

3.配置负载调度器(LVS上)

a.在Lvs服务器新增一块网卡,仅主机模式,作为vip(集群ip,模拟外网ip)使用

bash 复制代码
​
#添加网卡
#修改网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens36

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes

#激活ens36网卡
ifup ens36

#查看添加的网卡IP
[root@lvs ~]# ip a | grep ens36
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.42.128/24 brd 192.168.42.255 scope global dynamic noprefixroute ens36

​

b.检查模块

bash 复制代码
# 加载 ip_vs 模块
modprobe ip_vs

# 查看 ip_vs 版本信息
cat /proc/net/ip_vs

c.安装ipvsadm管理工具

bash 复制代码
dnf install -y ipvsadm

d.开启路由转发规则

bash 复制代码
vi /etc/sysctl.conf

net.ipv4.ip_forward=1

sysctl -p

e.配置负载分配策略

bash 复制代码
ipvsadm -A -t 192.168.42.128:80 -s rr
ipvsadm -a -t 192.168.42.128:80 -r 192.168.16.143:80 -m -w 1
ipvsadm -a -t 192.168.42.128:80 -r 192.168.16.144:80 -m -w 1

ipvsadm -ln

4.配置节点服务器(web1、web2)

a.安装httpd,创建测试网页

bash 复制代码
dnf -y install httpd

#创建测试网页
    #web1节点
echo "This is web1" > /var/www/html/index.html
    #web2节点
echo "This is web2" > /var/www/html/index.html

b.启动httpd服务

bash 复制代码
systemctl start httpd
systemctl enable httpd

c.修改节点服务器的网关,指向lvs调度器的192.168.16.142(模拟的内网网卡)

bash 复制代码
nmcli con mod ens33 ipv4.gateway 192.168.16.142
nmcli con up ens33

ip route

5.测试LVS群集(本机访问)

bash 复制代码
C:\Users\Y>curl 192.168.42.128
This is web2

C:\Users\Y>curl 192.168.42.128
This is web1

C:\Users\Y>curl 192.168.42.128
This is web2

C:\Users\Y>curl 192.168.42.128
This is web1

6.使用NFS发布共享资源(nfs上)

a.安装nfs-utils、rpcbind软件包

bash 复制代码
dnf -y install rpcbind nfs-utils

b.设置共享目录

bash 复制代码
mkdir -p /opt/wwwroot

vi /etc/exports

/opt/wwwroot 192.168.16.0/24(rw,sync,no_root_squash)

c.启动NFS共享目录

bash 复制代码
systemctl start nfs rpcbind 
systemctl enable nfs rpcbind 

d.查看本机发布的NFS共享目录

bash 复制代码
showmount -e

7.在客户机中访问NFS共享资源

a.安装rpcbind软件包(web1、web2)

bash 复制代码
dnf -y install rpcbind nfs-utils

b.手动挂载NFS共享目录(web1、web2)

bash 复制代码
mount 192.168.16.145:/opt/wwwroot /var/www/html

c.NFS创建测试文件(nfs上)

bash 复制代码
ls /opt/wwwroot/
echo 'this is NFS' > /opt/wwwroot/index.html

d. fstab自动挂载设置(web1、web2)

bash 复制代码
ls /opt/wwwroot/
echo 'this is NFS' > /opt/wwwroot/index.html

e.访问测试

bash 复制代码
C:\Users\Y>curl 192.168.42.128
this is NFS

C:\Users\Y>curl 192.168.42.128
this is NFS

C:\Users\Y>curl 192.168.42.128
this is NFS
相关推荐
小马过河R17 分钟前
不加载PHP OpenTelemetry SDK实现Trace‌与Logs
开发语言·分布式·微服务·云原生·php
源码师傅3 小时前
PHP+MySQL开发语言 在线下单订水送水小程序源码及搭建指南
php·送水小程序·桶装水小程序·在线下单送水小程序源码·桶装水送货上门小程序·订水线上商城
专注代码七年4 小时前
php:5.6-apache Docker镜像中安装 gd mysqli 库 【亲测可用】
php·apache
夕水5 小时前
分享一些实用的PHP函数(对比js/ts实现)(1)
后端·php
EutoCool5 小时前
【项目】在线OJ(负载均衡式)
运维·c++·stl·负载均衡
别骂我h7 小时前
LVS +Keepalived高可用群集
linux·运维·lvs
浩浩测试一下9 小时前
reverse_ssh 建立反向 SSH 连接指南 混淆&&AV [好东西哟]
运维·开发语言·网络·安全·网络安全·ssh·php
2401_836836599 小时前
LVS-DR群集
服务器·网络·lvs
528309 小时前
LVS+Keepalived高可用群集
linux·服务器·lvs
YUNYINGXIA9 小时前
部署LVS-DR群集
lvs