目录
一 理解负载均衡群集的原理
1.1 企业群集应用概述群集的含义
Cluster,集群、群集
由多台主机构成,但对外只表现为一个整体
问题
●互联网应用中,随着站点对硬件性能、响应速度、服务稳
●定性、数据可靠性等要求越来越高,单台服务器力不从心
群集的含义
●Cluster,集群、群集
●由多台主机构成,但对外只表现为一个整体
解决方法
●使用价格昂贵的小型机、大型机
●使用普通服务器构建服务群集
1.2 企业群集分类
根据群集所针对的目标差异,可分为三种类型
●负载均衡群集
●高可用群集
●高性能运算群集
负载均衡群集(Load Balance Cluster)
●提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
●LB的负载分配依赖于主节点的分流算法
高可用群集(High Availability Cluster)
●提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
●HA的工作方式包括双工和主从两种模式
高性能运算群集(High Performance Computer Cluster)
●提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标获得相当于大型、超级计算机的高性能运算(HPC)能力
●高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
1.3 负载均衡群集架构
负载均衡的结构
●第一层,负载调度器(Load Balancer或Director)
●第二层,服务器池(Server Pool)
●第三层,共享存储(Share Storage)
负载均衡的结构
1.4 负载均衡群集工作模式分析
负载均衡群集是目前企业用得最多的群集类型
群集的负载调度技术有三种工作模式
地址转换
IP隧道
直接路由
1.5 NAT模式
地址转换
●Network Address Translation,简称NAT模式
●类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
●服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
1.6 直接路由(Direct Routing)
●简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
●负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
1.7 关于LVS虚拟服务器
Linux Virtual Server
针对Linux内核的负载均衡解决方案
1998年5月,由我国的章文嵩博士创建
官方网站:http://www.linuxvirtualserver.org/
1.8 LVS的负载调度算法
1、轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
2.加权轮询(Weighted Round Robin)
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
3、最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
4、加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载
1.9 NFS共享存储服务
1.Network File System,网络文件系统
依赖于RPC(远端过程调用)
需安装nfs-utils.rpcbind软件包
系统服务:nfs、rpcbind
共享配置文件:/etc/exports
2、使用NFS发布共享资源
安装nfs-utils.rpcbind软件包
设置共享目录
启动NFS服务程序
查看本机发布的NFS共享目录
3、在客户机中访问NFS共享资源
安装rpcbind软件包,并启动rpcbind服务
手动挂载NFS共享目录
fstab自动挂载设置
二 案列:LVS-NAT负载均衡集群搭建
2.1 部署配置
一台调度器:配置双网卡VM1: 192168.100.23桥接网卡:20.0.0.23
二台WEB服务器集群池:192.168.100:24、192.168.100:25 这边的网关必须指向192.168.100.23这个地址
一台NFS共享服务器:192.168.100:21
2.2 调度器上设置
#虚拟机添加网卡##
[root@localhost network-scripts]# nmcli connection
NAME UUID TYPE DEVICE
ens33 49511b41-e51a-41f0-a43e-d13274d3ce10 ethernet ens33
virbr0 1816178ee-807e-3499-9d19-20507cbb8ad3 ethernet ens36
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost ~]# vi ifcfg-ens36
UUID 改一下
ens33换成36
只需要下面两个就可以了
IPADDR=192.168.100.23
NETMASK=255.255.255.0
##查看一下三台的网关
yum -y install net-tools 最小安装需要
####192.168.100.23的主机:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
20.0.0.0 0.0.0.0 255.255.255.0 U 102 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
###192.168.100.24的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.23 0.0.0.0 UG 100 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
###192.168.100.25的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.23 0.0.0.0 UG 100 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
###192.168.100.25的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.23 0.0.0.0 UG 100 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
这个网关可以不用配192.168.100.23的,配置你VM1网卡的就行
2.3 下面开始实验配置
###LVS主机192.168.100.23的配置
[root@localhost~ ]# yum -y install ipvsadm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos | 3.6 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================
Package Arch Version Repository Size
===========================================================================
Installing:
ipvsadm x86_64 1.27-7.el7 centos 45 k
Transaction Summary
===========================================================================
Install 1 Package
Total download size: 45 k
Installed size: 75 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : ipvsadm-1.27-7.el7.x86_64 1/1
Verifying : ipvsadm-1.27-7.el7.x86_64 1/1
Installed:
ipvsadm.x86_64 0:1.27-7.el7
Complete!
#########
[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# 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
1)创建虚拟服务器(注意:NAT模式要两块网卡,调度器的地址是外网口地址)
群集的VIP地址为192.168.100.23,针对TCP80端口提供负载分流服务,使用的轮询调度算法。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
[root@localhost ~]# ipvsadm -A -t 20.0.0.23:80 -s rr
2)添加服务器节点
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.24:80 -m
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.25:80 -m
3)保存LVS策略并查看
[root@localhost ~]# ipvsadm-save > /opt/ipvsadm
[root@localhost ~]# cat /opt/ipvsadm
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.100.24:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.100.25:http -m -w 1
4)开启调度服务器路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
##查看是否开启
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
########存储服务器192.168.100.21 配置########
rpm -q nfs-utils ###如果没装,yum -y install nfs-utils
rpm -q rpcbind ###如果没装,yum -y install rpcbind
[root@localhost~ ]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
##创建挂载点内容
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "你好,我是51" > /opt/51xit/index.html
[root@localhost ~]# echo "你好,我是52" > /opt/51xit/index.html
##宣告挂载什么内容
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)
##查看一下
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost~]# systemctl restart nfs
[root@localhost~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
2.3 NAT轮询主机1:192.168.100.24的配置
[root@localhost~]# yum -y install nfs-utils rpcbind ####必须要装nfs-untils否则mount不识别nfs格式,系统最小化安装带要装
[root@localhost~]# showmount -e 192.168.100.21 ####如果还没发布,请到存储服务器发布下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/51xit /var/www/html/
[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/51xit/ /var/www/html/ nfsdefaults,_netdev 0 0 ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost~] systemctl enable httpd
###登录192.168.100.24测试网站是否正常####
2.4 NAT轮询主机2:192.168.100.25的配置
[root@localhost~]# yum -y install nfs-utils rpcbind ####必须要装nfs-untils否则mount不识别nfs格式,系统最小化安装带要装
[root@localhost~]# showmount -e 192.168.100.21 ####如果还没发布,请到存储服务器发布下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/52xit /var/www/html/
[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/52xit/ /var/www/html/ nfsdefaults,_netdev 0 0 ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost~]# systemctl enable httpd
###登录192.168.100.24测试网站是否正常####
三 常用命令的解释如下:
LVS的负载调度算法有四种最常用的:轮询算法(rr)、加权轮询(wrr)、最少轮询(Ic)、加权最少轮询(wlc)
1)创建虚拟服务器(注意: NAT模式要两块网卡,调度器的地址是外网口地址)
群集的VIP地址为192.168.100.23,针对TCP 80端口提供负载分流服务,使用的轮询调度算法。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
ipvsadm -A -t 192.168.100.23:80 -s rr
//选项"-A"表示添加虚拟服务器,"-t"用来指定VIP地址及TCP端口,"-s"用来指定负载调度算法——rr、wrr、lc、wlc
2添加服务器节点
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.33:80 -m
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.44:80 -m
/选项"-a"表示添加真实服务器,"-“用来指定VIP地址及TCP端口,“以"用来指定RIP地址及TCP端口,“m"表示使用NAT群集模式(“-g"是DR模式,”-“是TUN模式)
{-m参数后面还可以跟-w的参数,这里没有做的”-w“用来设置权重(权重为0时表示暂停节点)}
4)删除服务器节点
ipvsadm -d -r 192.168.90.22:80 -t 192.168.80.88:80
//需要从服务器池中删除某一个节点时,使用选项"-d”。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。如上所示的操作将会删除LVS群集192.168.80.8中的节点
192.168.90.22
若需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需要指定节点。例如:“ipvsadm -D-t 192.168.80.11:80",则删除此虚拟服务器
ipvsadm -L 查看节点状态,加个”"-n“将以数字形式显示地址、端口信息
ipvsadm-save >/etc/sysconfig/ipvsadm//保存策略
使用导出/导入工具ipvsadm-save/ipvsadm-restore可以保存、恢复LVS策略,方法类似于iptables的规则的导出、导入