LVS负载均衡群集—NAT模式实例

LVS负载均衡群集—NAT模式实例

群集引用概述

群集的含义

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

问题

  • 互联网应用中,随着站点对硬件性能、影响速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求

解决方法

  • 使用价格昂贵的小型机、大型机
  • 使用多台相对廉价的普通服务器构建集群

通过整合多台服务器,使用lvs来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相对的服务。

企业群集分类

群集的三种类型

  • 负载均衡群集
  • 高可用群集
  • 高性能运算群集

负载均衡群集(Load Balance Cluster)

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

高可用群集(High Availability Cluster)

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

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

  • 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
  • 高性能依赖于“分布式运算”、“合并计算”,通过装用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算机能力。例如,“云计算” “网格计算”等

负载均衡集群架构

第一层负载调度器(Load Balancer或Director)

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

第二层服务器池(Srver Pool)

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

第三层共享储存(Share Storage)

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

负载均衡的结构

集群负载调度技术的三种工作模式

NAT模式

地址转换

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负责调度器作为所有服务器节点的网关,及作为客户机的访问入口也是个节点回应客户机的访问出口,也就是说这个负载调度器会承受双倍的负载压力也是NAT模式最大的缺陷
  • 服务器节点使用私有IP地址转换,与负载调度器位于同一个物理网络,安全性要优于其他两种模式

TUN模式

IP隧道

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

DR模式

直接路由

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

LVS虚拟服务器

Linux Virtual Server

  • 针对linux内核开发的负载均衡解决方案
  • 1998年5月,由我国章文嵩博士创建
  • 官方网站:http://www.linuxvirtualserver.org/
  • LVS 实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法

LVS现在已经成为linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。在centos7系统中,以下操作可以手动加载ip_vs模块,并查看当前系统中的ip_vs模块版本信息。

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

lvs的负载调度算法

轮询(Round Robin)

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

加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
  • 保证性能强的服务器承担更多的访问流量

最少连接(Least Connections)

  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点

加权最少连接(Weighted Least Connections)

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

ipvsadm工具

选项 解释
-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 以数字形式显示地址、端口等信息,常与"-"选项组合使用。ipvsadm -ln

NAT模式 LVS负载均衡部署

环境配置

负载调度器:配置双网卡 内网:192.168.239.10(ens33)  外网卡:12.0.0.1(ens38)
二台WEB服务器集群池:192.168.239.20、192.168.239.30 
一台NFS共享服务器:192.168.239.40
客户机windows :12.0.0.200

部署NFS共享服务器(192.168.239.40)

#关闭防火墙关闭开机自启
systemctl stop firewalld.service  
systemctl disable firewalld.service
setenforce 0
#创建两个共享目录文件便于区分并添加权限
cd /opt
mkdir nfs
cd nfs/
mkdir geng  wang
chmod 777 geng/ wang/
echo "this is geng test">geng/index.html
echo "this is wang test">wang/index.html
#设置共享策略
vim /etc/exports
/opt/nfs/geng 192.168.239.0/24(rw,sync,no_root_squash)
/opt/nfs/wang 192.168.239.0/24(rw,sync,no_root_squash)
#开启服务
systemctl start rpcbind
systemctl start nfs
systemctl enable nfs
#查看共享目录
showmount -e

测试WEB服务器集群池搜索共享目录

部署两台节点web服务器(192.168.239.20、192.168.239.30 )

第一台部署(192.168.239.20)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#安装apache web服务
yum install -y httpd
#将共享目录挂载到apache服务站点目录
mount 192.168.239.40:/opt/nfs/geng /var/www/html/
#重启服务
systemctl restart httpd
systemctl enable httpd
#修改网卡配置文件将网关地址指向负载调度器并重启网卡服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.239.10
systemctl restart network

第二台部署(192.168.239.20)

与第一台一致挂载文件不同

mount 192.168.239.40:/opt/nfs/wang /var/www/html/

负载调度器配置

#添加一块网卡
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

ifconfig  #可以查看到以添加的网卡记住名字
cd /etc/sysconfig/network-scripts  #切换到网卡配置文件目录
cp ifcfg-ens33 ifcfg-ens37   #复制已有的网卡配置文件进行修改
vim ifcfg-ens37  #删除uuid行修改以下几行NAME=ens37
DEVICE=ens37
IPADDR=12.0.0.1
#GATEWAY=192.168.239.2
#DNS1=8.8.8.8
systemctl restart network  #重启网卡服务

vim /etc/sysctl.conf  #编辑配置文件开启路由转发功能
net.ipv4.ip_forward = 1
sysctl -p   #加载一下

#清空原有防火墙规则添加新的规则
iptables -F
iptables -F -t nat
iptables -t nat -A POSTROUTING -s 192.168.239.0/24 -o ens37 -j SNAT --to 12.0.0.1   
iptables -nL -t nat   #查看指定表规则

yum install -y ipvsadm #安装ipvsadm
#开启ipvsadm服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
systemctl enable ipvsadm.service
#加载模块
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm -C  #清空策略
#指定此策略
ipvsadm -A -t 12.0.0.1:80 -s rr   #添加虚拟服务器指定vip地址指定调度策略为轮询
ipvsadm -a -t 12.0.0.1:80 -r 192.168.239.20:80 -m  #添加节点服务器及IP地址指定模式lvs
ipvsadm -a -t 12.0.0.1:80 -r 192.168.239.30:80 -m
ipvsadm  #加载
ipvsadm -ln   #查看状态

客户机配置

修改ip

测试

过会再次刷新

posted @ 2022-05-15 23:38  GENGBO  阅读(96)  评论(0编辑  收藏  举报