目录
一、LVS负载均衡群集基础知识
(一)群集基本定义
(二)群集分类
1.负载均衡群集(LB)
2.高可用群集(HA)
3.高性能运算群集(HPC)
(三)负载均衡群集架构
1.第一层:负载调度器
2.第二层:服务器池
3.第三层:共享存储
(四)LVS负载均衡群集三种工作模式
1.地址转换模式(NAT)
2.IP隧道模式(TUN)
3.直接路由模式(DR)
(五)LVS的负载调度算法
1.固定调度算法
(1)轮询(rr)
(2)加权轮询(wrr)
(3)源地址哈希(sh)
(4)目的地址哈希(dh)
2.动态调度算法
(1)加权最小连接数调度(wlc)
(2)最小连接数调度(lc)
(3)基于地址的最小连接数调度(lblc)
二、LVS-NAT模式部署(示例)
(一)部署NFS共享存储
1.关闭防火墙和安全机制
2.安装nfs服务
3.新建目录,并创建站点文件
4.开启服务
5.增加权限
6.设置共享策略
7.发布共享
(二)部署web节点服务器
1.部署web服务器1
(1)关闭防火墙和安全机制
(2)本地yum安装nginx程序
(3)开启nginx服务
(4)指定网关
(5)重启网关
2.部署web服务器2
(三)部署负载调度服务器
(1)关闭防火墙和安全机制
(2)开启路由转发功能
(3)配置网卡
(4)加载ip_vs模块
(5)下载ipvsadm服务
(6)保存并开启ipvsadm
(7)制定策略
(8)查看策略
(四)Windows客户机验证
1.修改客户机IP地址
2.访问虚拟windows网页进行验证
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机,使用LVS来达到服务器的高可用和负载均衡。
提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能。
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
代表:软件类nginx、LVS、HAProxy、SLBD
硬件类FS、绿盟
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。
通常用n个9来表示高可用的指标,例如:99.9%
代表:keepalived、hearbeat
提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。
高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如“云计算”、“网格计算”
Load Balancer或Director,负载均衡层,访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
Server Poo,web应用层,群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
Share Storage,为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
承载双向流量的压力,可能成为整个群集的性能瓶颈。
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。
服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。企业首选。
服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
Round Robin,将收到的访问请求安装顺序轮流分配给群集指定各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载。
Weighted Round Robin,依据不同RS的权值分配任务。权重值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
source hashing,以源地址为关键字查找--个静态hash表来获得需要的RS。
destination hashing,以目的地址为关键字查找一个静态hash表来获得所需RS。
Weighted Least Connections,假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次取Ti/Wi为最小的RS作为下一个分配的RS。
Least Connections,ipvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
locality-based least-connection,将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。
负载调度器配置
systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭安全机制
yum install nfs-utils rpcbind -y
#安装nfs服务
mkdir /var/www/html/ {accp,benet} -p
#在/var/www/html/目录下递归创建accp,benet文件
cd /var/www/html/
#切换目录
echo `this is web01 page!` > accp/test.html
echo `this is web02 page!` > benet/test.html
#创建站点文件
systemctl start rpcbind
systemctl start nfs
#开启服务
chmod 777 accp/ benet/
#增加权限
vim /etc/exports
#配置共享策略
/var/www/html/accp 172.16.72.30/24(rw,sync)
/var/www/html/benet 172.16.72.30/24(rw,sync)
#添加要发布的共享目录
exportfs -rv
#发布共享
systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭安全机制
mount /dev/sr0 /mnt
#磁盘挂载
cd /etc/yum.repos.d
#切换目录
mkdir bak
#创建备份文件
mv *.repo bak
#将当前目录下所有以repo结尾的文件移动到bak文件中
vim local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
systemctl start nginx
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.233.40
#指向调度器内网IP地址
#DNS1=8.8.8.8
systemctl restart network
web服务器2的部署与web服务器1一致,不在赘述
systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭安全机制
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
#将默认值修改为1,即为开启路由转发功能
sysctl -p
cd /etc/sysconfig/network-scripts
#切换目录
ls
#查看目录下文件
cp ifcfg-ens33 ifcfg-ens36
#复制ifcfg-ens33文件并改名为ifcfg-ens36
vim ifcfg-ens36
#修改配置文件,配置ens36网卡IP地址
vim ifcfg-ens33
#修改配置文件,配置ens33网卡IP地址
ifconfig
#查看网卡信息
modprobe ip_vs
#加载ip_vs模块
cat /proc/net/ip_vs
#查看ip_vs模块版本信息
yum install ipvsadm -y、
#安装ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
#保存负载分配策略
systemctl start ipvsadm.service
#开启负载分配策略
systemctl status ipvsadm.service
#查看状态
ipvsadm -A -t 12.0.0.1:80 -s rr
#指定IP地址 外网的入口 -s rr 轮询
ipvsadm -a -t 12.0.0.1:80 -r 192.168.79.220:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.79.230:80 -m
#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
ipvsadm
#开启服务
ipvsadm -ln -t 12.0.0.100:80
在地址栏访问IP地址,不断刷新浏览器测试负载均衡效果,刷新间隔需长点