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
相关推荐
两个人的幸福12 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820715 天前
PHP 扩展——从入门到理解
php
鹏仔先生16 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下16 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip16 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒16 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25016 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis16 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel