LVS 负载均衡集群 - NAT

LVS 负载均衡集群

  • 一、群集概述
    • 1.群集技术概述
      • 1.1 群集的分类
        • 1.1.1 负载均衡群集(Load Balance Cluster)
        • 1.1.2 高可用群集 (High Availability Cluster)
        • 1.1.3 高性能运算群集 (High Performance Computer Cluster)
      • 1.2 负载均衡的分层结构
        • 1.2.1 第一层 负载调度器
        • 1.2.2 第二层 服务器池
        • 1.2.3 第三层 共享存储
      • 1.3 负载均衡的工作模式
      • 1.3.1 地址转换(Network Address Translation)
        • 1.3.2 IP 隧道(IP Tunnel)
        • 1.3.3 直接路由(Direct Routing)
        • 1.3.4 三种模式的区别
    • 2. LVS 虚拟服务器
      • 2.1 LVS的负载调度算法
        • 2.1.1 轮询(Round Robin):
        • 2.1.2 加权轮询(Weighted Round Robin):
        • 2.1.3 最少连接(Least Connections):
        • 2.1.4 加权最少连接(Weighted Least Connections)
      • 2.2 使用 ipvsadm 管理工具
        • 2.2.1 安装
        • 2.2.2 操作方法
        • 2.2.3 示例
  • 二、构建 LVS-NAT 负载均衡群集
    • 1. 概述
    • 2.部署 NFS 共享存储
    • 3.配置Web服务器
    • 4.配置负载调度器
      • 4.1 配置SNAT转发规则
      • 4.2 加载LVS内核模块
      • 4.3 安装ipvsadm管理工具
      • 4.4 配置负载分配策略
    • 5.测试LVS集群

一、群集概述

群集(或集群)的称呼来自于英文单词“Cluster”,表示一群、一串的意思,用在服务器领域则表示大量服务器的几何体,以区分于单个服务器

1.群集技术概述

根据企业实际环境的不同,群集所提供的功能也各不相同,采用的技术细节也可能各有千秋
然而从整体上看,需要先了解一些关于群集的共性特征,这样才能在构建和维护群集的工作中做到心中有数,避免操作上的盲目西行

1.1 群集的分类

无论哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP系统)
根据群集所针对的目标差异,可分为以下三种类型:

1.1.1 负载均衡群集(Load Balance Cluster)

提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
例如,“DNS轮询”“应用层交换”“反向代理”等都可用做负载均衡群集
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载

1.1.2 高可用群集 (High Availability Cluster)

提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
例如,“故障切换”“双机热备”等都是属于高可用群集技术
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点

1.1.3 高性能运算群集 (High Performance Computer Cluster)

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
例如,“云计算”“网格计算”也可视为高性能运算的一种
高性能依赖于"分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
不同类型的群集在必要时可以合并,如高可用的负载均衡群集

1.2 负载均衡的分层结构

在典型的负载均衡群集中,包括三个层次的组件,前端至少有一个负载调度器(Load Balancer,或称为 Director)负责响应并分发来自客户端的访问请求
后端由大量真实服务器(Real Server)构成服务器池(Server Pool),提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的
为了保持服务的一致性,所有节点统一使用共享存储设备
LVS 负载均衡集群 - NAT_第1张图片

1.2.1 第一层 负载调度器

访问整个群集系统的唯一入口,对外使用所有服务器共有的 VIP(Virtual IP,虚拟 IP)地址,也称为群集 IP 地址
通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性

1.2.2 第二层 服务器池

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

1.2.3 第三层 共享存储

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

1.3 负载均衡的工作模式

关于群集的负载调度技术,可以基于 IP、端口、内容等进行分发,其中基于 IP 的负载调度是效率最高的
基于 IP 的负载均衡中,常见的有地址转换、IP 隧道和直接路由三种工作模式:

1.3.1 地址转换(Network Address Translation)

简称 NAT 模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

1.3.2 IP 隧道(IP Tunnel)

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

1.3.3 直接路由(Direct Routing)

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

以上三种工作模式中,NAT 方式只需要一个公网 IP 地址,从而称为最已用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就是采用这种方式;相比较而言,DR 模式和 TUN 模式的负载能力更加强大、使用范围更广,但节点的安全性要稍差一些

1.3.4 三种模式的区别

工作模式 NAT TUN模式 DR模式
real server
节点数量 low 10-20 high 100 high 100
真实网关 负责调度器 自由路由器 自由路由器
IP地址 公网+私网 公网 私网
优点 安全性高 安全、速度快 性能最好
缺点 效率低、压力大 需要隧道支持 不能跨越LAN

2. LVS 虚拟服务器

Linux Virtual Server(LVS)是针对 Linux 内核开发的负载均衡解决方案,由我国的章文嵩博士在1998年5月创建,官网站点位于 http://www.linuxvirtualserver.org/
LVS 实际上相当于基于IP地址的虚拟化应用,为基于 IP 地址和内容请求分发的负载均衡提出了一种高效的解决方法
LVS 现在已成为 Linux 内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用
在 CentOS 7 系统中,以下操作可以手动加载 ip_vs 模块,并查看当前系统中 ip_vs 模块的版本信息

modprobe ip_vs          #加载 ip_vs 模块
cat /proc/net/ip_vs     #查看 ip_vs 版本信息

2.1 LVS的负载调度算法

针对不同的网络服务和配置需要,LVS 调度器提供多种不同的负载调度算法,其中最常见的四种算法包括轮询、加权轮询、最少连接和加权最少连接

2.1.1 轮询(Round Robin):

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

2.1.2 加权轮询(Weighted Round Robin):

根据真实服务器的处理能力轮流分配收到的访问请求
调度器可以自动查询各节点的负载情况,并动态调整其权重
这样可以保证处理能力强的服务器承担更多的访问流量

2.1.3 最少连接(Least Connections):

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

2.1.4 加权最少连接(Weighted Least Connections)

在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载

2.2 使用 ipvsadm 管理工具

ipvsadm 是在负载调度器上使用的 LVS 群集管理工具,通过调用 ip_vs 模块来添加、删除服务器节点,以及查看群集的运行状态

2.2.1 安装

yum -y install ipvsadm

2.2.2 操作方法

LVS 群集的管理工作主要包括创建虚拟服务器、添加服务器节点、查看群集节点状态、删除服务器节点和保存负载分配策略

常用选项 说明
-A 添加虚拟服务器
-D 删除整个虚拟服务器
-s 指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接:lc、加权最少连接: wlc )
-a 表示添加真实服务器 (节点服务器)
-d 删除某一个节点
-t 指定 VIP地址及 TCP端口
-r 指定 RIP地址及 TCP端口
-m 表示使用 NAT群集模式.
-g 表示使用 DR模式
-i 表示使用 TUN模式
-w 设置权重 (权重为 0 时表示暂停节点)
-p 60 表示保持长连接60秒
-l 列表查看 LVS 虚拟服务器 (默认为查看所有)

-n 以数字形式显示地址、端口等信息,常与 “-l” 选项组合使用。ipvsadm -ln

2.2.3 示例

管理虚拟服务
添加一个虚拟服务192.168.0.100:80,使用轮询算法

ipvsadm -A -t 192.168.0.100:80 -s rr

修改虚拟服务的算法为加权轮询

ipvsadm -E -t 192.168.0.100:80 -s wrr

删除虚拟服务

ipvsadm -D -t 192.168.0.100:80

管理真实服务
添加一个真实服务器192.168.0.10,使用DR模式,权重2

ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.10 -g -w 2

修改真实服务器的权重

ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.10 -g -w 5

删除真实服务器

ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.123

查看统计
查看当前配置的虚拟服务和各个RS的权重

ipvsadm -Ln

查看当前ipvs模块中记录的连接(可用于观察转发情况)

ipvsadm -lnc

#查看ipvs模块的转发情况统计

ipvsadm -Ln --stats | --rate

二、构建 LVS-NAT 负载均衡群集

地址转换模式(LVS-NAT)

1. 概述

在 NAT 模式的群集中,LVS 负载调度器是所有节点访问 Internet 的网关服务器,同时也作为整个群集的 VIP 地址
LVS 调度器具有两块网卡,分别连接内外网
LVS 负载均衡集群 - NAT_第2张图片
对于 LVS 负载均衡调度器来说,需使用 iptables 为出站响应配置 SNAT 转发规则,以便节点服务器能够访问 Internet
所有的节点服务器、共享存储均位于私有网络内,其默认网关设为 LVS 负载调度器的内网地址

主机 操作系统 IP 地址
负载调度均衡器 CentOS 7 (内网)192.168.0.10(外网)12.0.0.1
Web节点服务器1 CentOS 7 192.168.0.20
Web节点服务器2 CentOS 7 192.168.0.30
NFS服务器 CentOS 7 192.168.0.40

2.部署 NFS 共享存储

yum install -y nfs-utils rpcbind
systemctl start nfs rpcbind
systemctl enable nfs rpcbind

#创建共享文件夹并赋予权限
mkdir /opt/accp /opt/benet
chmod 777 /opt/accp /opt/benet

#创建网页文件
echo "

accp.com

"
> /opt/accp/index.html echo "

benet.com

"
> /opt/benet/index.html #配置nfs vim /etc/exports /opt/accp 192.168.0.0/24(rw,sync) /opt/benet 192.168.0.0/24(rw,sync) #发布共享 exportfs -rv showmount -e

LVS 负载均衡集群 - NAT_第3张图片

3.配置Web服务器

yum -y install httpd
systemctl start httpd && systemctl enable httpd

#挂载
mount 192.168.0.40:/opt/accp /var/www/html
#Web2 mount 192.168.0.40:/opt/benet /var/www/html

#设置自动挂载
echo '192.168.0.40:/opt/accp /var/www/html nfs defaults,_netdev 0 0' >> /etc/fstab

mount -a

4.配置负载调度器

#添加一块网卡后开机
ifconfig ens36 12.0.0.1/24

LVS 负载均衡集群 - NAT_第4张图片

4.1 配置SNAT转发规则

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

LVS 负载均衡集群 - NAT_第5张图片

#先清空iptables规则
iptables -t nat -F
iptables -F

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

4.2 加载LVS内核模块

#加载ip_vs模块
modprobe ip_vs

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

LVS 负载均衡集群 - NAT_第6张图片

4.3 安装ipvsadm管理工具

yum install -y ipvsadm

#启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

4.4 配置负载分配策略

#清除原有策略
ipvsadm -C

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.0.20:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.0.30:80 -m -w 1

#启用策略
ipvsadm

#查看节点状态,Masq代表 NAT模式
ipvsadm -ln

#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

LVS 负载均衡集群 - NAT_第7张图片

5.测试LVS集群

打开客户机设置IP和网关
LVS 负载均衡集群 - NAT_第8张图片
进入浏览器输入IP后刷新会进行轮询
LVS 负载均衡集群 - NAT_第9张图片
LVS 负载均衡集群 - NAT_第10张图片

你可能感兴趣的:(运维,lvs,linux,服务器,运维,负载均衡)