LVS 负载均衡群集 ---------- NAT(地址转换)模式
LVS 负载均衡群集 ---------- NAT(地址转换)模式
LVS 负载均衡群集 ---------- NAT(地址转换)模式负载均衡群集 ---- NAT(地址转换)模式
- 群集的概述
- LVS虚拟服务器
- 构建 LVS负载均衡群集 ----- NAT模式
- 一、组建思路(利用四台虚拟机进行演示)
- 二、开始搭建
- 配置负载调度器 (192.168.100.181)
- 配置 NFS 共享存储服务(192.168.100.184)
- 配置服务器池 1 (192.168.100.182)
- 配置服务器池 2 (192.168.100.183)
- 真机测试
群集的概述
-
群集(或集群,Cluster): 表示一群,一串的意思,用在服务器领域则表示大量服务器的集合体,以区分于单个服务器。
-
群集按所提供的功能的不同以及所针对目标的目标差异可以分为三类:
1、负载均衡群集
2、高可用群集
3、高性能运算群集
(无论哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址))
(!本次主要介绍 负载均衡群集 !)
-
负载均衡群集(Load Balance Cluster)特点:
1、以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能。
2、LB的负载分配依赖于主节点的分流算法 -
负载均衡的分层
前端至少有一个负载调度器负责响应并发来自客户机的访问请求;
后端由大量真实服务器构成服务器池,提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的;为了保持服务的一致性,所以节点使用共享存储设备。1、第一层:负载调度器
2、第二层:服务器池
3、第三层:共享存储 -
负载均衡的工作模式:
1、地址转换(Network Address Translation),简称 NAT模式;
类似于防火墙的私有网络结构,负责调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。
服务器节点使用私有IP地址,与负载调度器位于同一物理网络,安全性要优于其他两种方式2、IP隧道(IP Tunnel)简称 TUN模式;采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器;服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用ip隧道与负载调度器相互通信
3、直接路由(Direct Routing)简称 DR模式;采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一物理网络;负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
-
LVS是针对 Linux 内核开发的一个负载均衡项目,它实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法;LVS现在已成为 Linux内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用。
-
针对不同的网络服务和配置需求,LVS调度器提供多种不同的负载调度算法,其中最常见的四种算法:
1、轮询(Round Robin):将收到的请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载。2、加权轮询(Weighted Round Robin):根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多;保证性能强的服务器承担更多的访问流量。
3、最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。
4、加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大时,可以为真实服务器自动调整权重;性能较高的节点将承担更大比例的活动连接负载。
-
使用 ipvsadm 工具
ipvsadm 是在负载调度器上使用的 LVS 群集管理工具,通过调用 ip_vs 模块来添加、删除服务器节点,以及查看群集的运行状态 -
关于 ipvsadm 工具命令的用法:(举例说明)
1、创建虚拟服务器
例:ipvsadm -A -t 172.16.16.172:80 -s rr
(群集的VIP地址为 172.16.16.172 ,针对 TCP 80端口提供负载分流服务,使用调度算法为轮询;选项 -A 表示添加虚拟服务器,-t 用来指定VIP地址及TCP端口,-s 用来指定负载调度算法(轮询 rr ;加权轮询 wrr ;最少连接 lc ;加权最少连接 wlc)2、添加服务器节点
例:ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
(虚拟服务器 172.16.16.172 添加节点;选项 -a 添加真实服务器, -t 用来指定VIP地址及TCP端口, -r 用来指定RIP地址及TCP端口, -m 表示使用 NAT模式(-g DR模式、 -i TUN模式), -w 用来设置权重(权重为0时表示暂停节点))3、查看群集节点状态
例:ipvsadm -ln
(选项 -l 可以列表查看LVS虚拟服务器,可以指定只查看某一个VIP地址(默认查看所有),结合选项 -n 将以数字形式显示地址、端口等信息)4、删除服务器节点
例:ipvsadm -d -r 192.168.7.24:80 -t 172.16.16.172:80
(删除LVS群集 172.16.16.172中的节点 192.168.7.24 ; 需要从服务器池中删除某一个节点时,使用选项 -d 。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。需要删除整个虚拟服务器时,使用选项 -D 并指定 虚拟IP地址,无需指定节点。)例:ipvsadm -D -t 172.16.16.172:80
(删除此虚拟服务器)5、保存负载分配策略
例:ipvsadm-save > /etc/sysconfig/ipvsadm :保存策略
(ipvsadm-restore 表示恢复策略)例:service ipvsadm save :保存策略
例:service ipvsadm stop :停止服务(清除策略)
[确定]
[确定]例:service ipvsadm start :启动服务(重建规则)
[确定]
[确定]例: cat /etc/sysconfig/ipvsadm :确认保存结果
构建 LVS负载均衡群集 ----- NAT模式
一、组建思路(利用四台虚拟机进行演示)
1、一台负载调度器 (2张网卡)
NAT连接: 20.0.0.181 ------ 做外网地址
自定义vm1: 192.168.100.181 ------ 做内网地址(不需要网关)
2、一台服务器池 1
自定义vm1: 192.168.100.182 ------ 做内网地址(网关为负载调度器内网ip)
3、一台服务器池 2
自定义vm1: 192.168.100.183 ------ 做内网地址(网关为负载调度器内网ip)
4、一台 NFS 共享存储器
自定义vm1: 192.168.100.184 ------ 做内网地址(网关为负载调度器内网ip 或者 可以不用设置)
二、开始搭建
配置前提:关闭防火墙、核心防护; 安装yum源
配置负载调度器 (192.168.100.181)
1、网络环境
原有的网卡设置成:NAT连接方式 ; 新增网卡:自定义vm1连接方式
[[email protected] ~]# yum -y install net-tools #### 可以安装一个工具,用 route -n 查看 网关信息 ,不安装则显示 bash找不到命令
[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
........
IPADDR=20.0.0.181
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
DNS1=8.8.8.8
DNS2=114.114.114.114
[[email protected] ~]# systemctl restart network
[[email protected] ~]# nmcli connection
NAME UUID TYPE DEVICE
ens33 0749124f-65e5-4be7-ae4d-d6e34350a1bc ethernet ens33
ens36 147c26e4-8373-3454-bc50-9b0964d0e929 ethernet ens36 ####复制下这个 UUID 号
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ll
[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[[email protected] network-scripts]# vi ifcfg-ens36
..........
NAME=ens36
UUID=147c26e4-8373-3454-bc50-9b0964d0e929 ####在这之前复制的 UUID 号粘贴上去
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.181
NETMASK=255.255.255.0
[[email protected] network-scripts]# systemctl restart network
2、加载 ip_vs 模式,安装 ipvsadm 工具
[[email protected] ~]# yum -y install ipvsadm
.......
[[email protected] ~]# ipvsadm -v ####查看版本信息
[[email protected] ~]# modprobe ip_vs #####确认内核对 LVS 的支持
[[email protected] ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3、创建虚拟服务器
群集的VIP地址为 192.168.100.181 ,针对 TCP 80 端口提供负载分流服务,使用的 轮询 调度算法,对于负载均衡调度器来说,VIP地址必须是本机实际已启用的IP地址
[[email protected] ~]# ipvsadm -A -t 20.0.0.181:80 -s rr
4、添加服务器节点
[[email protected] ~]# ipvsadm -a -t 20.0.0.181:80 -r 192.168.100.182:80 -m
[[email protected] ~]# ipvsadm -a -t 20.0.0.181:80 -r 192.168.100.183:80 -m
5、保存 LVS 策略
[[email protected] ~]# ipvsadm-save > /opt/ipvsadm
[[email protected] ~]# cat /opt/ipvsadm
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.100.182:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.100.183:http -m -w 1
6、开启调度服务器路由转发功能
[[email protected] ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward =1 #####插入添加
配置 NFS 共享存储服务(192.168.100.184)
需要安装 nfs-utils 、rpcbind 这两个插件
[[email protected] ~]# rpm -q nfs-utils ####查看这俩个插件有没有安装,若已安装 则显示 Nothing to do
[[email protected] ~]# rpm -q rpcbind
[[email protected] ~]# yum -y install nfs-utils rpcbind
[[email protected] ~]# systemctl start nfs rpcbind
[[email protected] ~]# mkdir /opt/51xue /opt/52xue ####创建二个目录,存测试页面用
[[email protected] ~]# vi /etc/esports #####编辑共享配置文件
/opt/51xue 192.168.100.0/24(rw,sync) #####插入添加
/opt/52xue 192.168.100.0/24(rw,sync)
[[email protected] ~]# systemctl restart nfs rpcbind
[[email protected] ~]# systemctl enable nfs rpcbind
[[email protected] ~]# echo "this is www.51xue.top" >/opt/51xue/index.html ####导入测试网页至文件中
[[email protected] ~]# echo "this is www.52xue.top" >/opt/52xue/index.html
[[email protected] ~]# showmount -e #####查看挂载信息
Export list for localhost.localdomain:
/opt/52xue 192.168.100.0/24
/opt/51xue 192.168.100.0/24
配置服务器池 1 (192.168.100.182)
[[email protected] ~]# yum -y install nfs-utils #####必须要安装 nfs-utils 插件,否则 mount 不识别 nfs 格式;系统最小化安装要装,图形化界面的不要装
[[email protected] ~]# showmount -e 192.168.100.184
Export list for 192.168.100.184:
/opt/52xue 192.168.100.0/24
/opt/51xue 192.168.100.0/24
[[email protected] ~]# yum -y install httpd ####安装阿帕奇服务
[[email protected] ~]# mount 192.168.100.184:/opt/51xue /var/www/html ####手动挂载NFS共享目录
[[email protected] ~]# vi /etc/fstab ####永久挂载NFS共享目录
192.168.100.184:/opt/51xue /var/www/html nfs defaults,_netdev 0 0
[[email protected] ~]# systemctl start nfs httpd
[[email protected] ~]# systemctl restart nfs httpd
[[email protected] ~]# systemctl enable nfs httpd
可以先进行网页测试:输入192.168.100.182
出现 “this is www.51xue.top”
配置服务器池 2 (192.168.100.183)
[[email protected] ~]# yum -y install nfs-utils #####必须要安装 nfs-utils 插件,否则 mount 不识别 nfs 格式;系统最小化安装要装,图形化界面的不要装
[[email protected] ~]# showmount -e 192.168.100.184
Export list for 192.168.100.184:
/opt/52xue 192.168.100.0/24
/opt/51xue 192.168.100.0/24
[[email protected] ~]# yum -y install httpd ####安装阿帕奇服务
[[email protected] ~]# mount 192.168.100.184:/opt/52xue /var/www/html ####手动挂载NFS共享目录
[[email protected] ~]# vi /etc/fstab ####永久挂载NFS共享目录
192.168.100.184:/opt/52xue /var/www/html nfs defaults,_netdev 0 0
[[email protected] ~]# systemctl start nfs httpd
[[email protected] ~]# systemctl restart nfs httpd
[[email protected] ~]# systemctl enable nfs httpd
可以先进行网页测试:输入192.168.100.183
出现 “this is www.52xue.top”
真机测试
输入 公网地址