LVS负载均衡群集架构:NET模式群集部署
Posted 可乐卷儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS负载均衡群集架构:NET模式群集部署相关的知识,希望对你有一定的参考价值。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、群集的含义
1、概念
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机
2、问题
主要来源于市场需求(企业需求),以及企业管理维护人员的合理性和效率;为了解决互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用性的要求
3.、解决方法
主要是:增强单体和集群化
使用价格昂贵的小型机、大型机
使用多台相对廉价的普通服务器构建服务集群
二、集群的分类
根据功能性角度、决绝问题的角度可以分为三种类型
- 负载均衡群集:LVS实现
- 高可用群集:MHA manager实现,LVS的HA是由keepalive实现的
- 高性能运算群集
1、负载均衡群集:聚合和负载均衡
- 服务器集群:压力的均衡、合理性
- 集群作为整体,提高整体的抗压、负载能力
- 依赖的机制:LB的负载分配依赖于主节点的分流算法
2、高可用群集(High Availability Cluster)
- 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果
- HA的工作方式包括双工和主从两种模式
3、高性能运算群集(High Performance Computer Cluster)
- 提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC) 能力
- 高性能依赖于”分布式运算”、”并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
三、负载均衡群集架构
1、负载均衡的结构
第一层:负载调度器(Load Balancer或Director)
第二层:服务器池(Server Pool)
第三层:共享存储(Share Storage)
2、负载均衡群集工作模式分析
负载均衡群集是目前企业用得最多的群集类型
群集的负载调度技术有3种工作模式
2.1、地址转换(NAT模式)
- 类似于防火墙的私有网络结构,请求的出和入均有调度器服务控制(LVS)
- 所有服务器在同一个物理网络内,安全性要优于其他两种方式
2.2、IP隧道(TUN模式)
- real servers在公网环境(公网IP)
- Ivs只接收请求,响应请求由对应接收请求的real server以隧道形式直接响应
2.3、 直接路由(DR模式)
- 接受请求由LVS处理,响应请求也是由real server处理
- 他们在同一物理网络(内部网) ,响应请求(不同网段的),需要通过公共路由器实现
四、关于LVS虚拟服务器
1、LVS简述
- 针对Linux内核开发的负载均衡解决方案
- 1998年5月,由我国的章文嵩博士创建
- LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法
2、负载调度算法
2.1、基于请求控制
- 轮询
- 简单来说就是按照顺序一个个来;将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载
- 加权轮询
- 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
- 保证性能强的服务器承担更多的访问流量
2.2、基于连接数
首先看最少连接数,若连接数一样的情况下,看权重的优先级高
- 最少连接
- 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
- 加权最小连接
- 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
- 性能较高的节点将承担更大比例的活动连接负载
以接近实时连接的请求数(连接数)做为基础
以权重的方式,决定在real servers中连接数相同的情况下,该如何分配请求(以权重的方式判断)
五、LVS群集创建与管理
1、步骤
- 创建虚拟服务器
- 添加、删除服务器节点
- 查看群集及节点情况
- 保存负载分配策略
2、LVS的管理工具–ipvsadm
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 以数字形式显示地址、端口等信息,常与 “-l” 选项组合使用;ipvsadm -ln
3、实际案例
环境:LVS调度器作为Web 服务器池的网关,LVS具有两块网卡,分别连接内外网,使用轮询(rr)调度算法
六、NAT模式 LVS负载均衡群集部署
1、实验准备
LVS负载调度器:ens33:192.168.35.40(net模式) ens37:192.168.10.100(vmnet1)
Web 节点服务器1:192.168.35.10
Web 节点服务器2:192.168.35.20
NFS服务器:192.168.35.30
客户端(win10模拟外网):192.168.10.200 (Vmnet1)
本机vm1的配置:
注意点:
win10虚拟机(客户端)网关设置为192.168.10.100
web服务器 网关设置为 192.168.35.40
2、部署共享存储
NFS服务器:192.168.35.30
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y nfs-utils rpcbind
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/klkl /opt/zwzyt
chmod 777 /opt/klkl /opt/zwzyt
vim /etc/exports
/opt/klkl 192.168.35.10/24(rw,sync,no_root_squash)
/opt/zwzyt 192.168.35.20/24(rw,sync,no_root_squash)
exportfs -rv ##验证共享
3、配置负载调度器LVS(ens33:192.168.35.40 ens36:192.168.10.100)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#ifconfig ens36 192.168.10.100 ##临时虚拟网卡,也可以使用此种方法增加网卡,方法自选
- 配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p ##刷新生效
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
systemctl start firewalld ##开启防火墙
iptables -F ##全部清空规则
iptables -t nat -F ##清空nat表内的规则
[root@lvs ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
iptables -t nat -A POSTROUTING -s 192.168.35.0/24 -o ens37 -j SNAT --to-source 192.168.10.100
## http服务器的流量通过ens37接口,把192.168.35.0网段通过LVS映射192168.10.100
nat表:修改数据包中的源、目标IP地址或端口
POSTROUTING: 在进行路由判断之"后"所要进行的规则(SNAT/MASQUERADE)
PREROUTING: 在进行路由判断之"前"所要进行的规则(DNAT/REDIRECT)
-A: 在规则链的末尾加入新规则
-s:匹配来源地址IP/MASK.
-o 网卡名称匹配从这块网卡流出的数据
-i 网卡名称匹配从这块网卡流入的数据
-j 控制类型
- 加载LVS内核模块
ll /proc/nat ##查询没有ip_vs模块
modprobe ip_vs ##手动加载ip_vs模块
cat /proc/net/ip_vs ##查看ip_vs版本信息
- 安装ipvsadm管理工具
yum install -y ipvsadm
#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm ##ipvsadm-save:策略保存;>:覆盖
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm ##开启管理工具
若是没有创建保存策略的文件就会报错,如下
- 配置负载分配策略
NAT模式只要在服务器上配置,节点服务器不需要特殊配置
ipvsadm -C #清除原有策略
ipvsadm -A -t 192.168.10.100:80 -s rr ##指定分流算法是rr轮询
-A ##添加虚拟服务器
-s ##指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a ##表示添加真实服务器 (后端节点服务器)
-t ##指定 VIP地址及 TCP端口
-m ##表示使用 NAT群集模式
-w ##设置权重 (权重为 0 时表示暂停节点)
ipvsadm -a -t 192.168.10.100:80 -r 192.168.35.10:80 -m -w 1
ipvsadm -a -t 192.168.10.100:80 -r 192.168.35.20:80 -m -w 1
-r ##real server
-m ##mode;模式
-w ##weight;权重
ipvsadm #启动策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
4、3台服务器(lvs/)时间同步
ntpdate ntp.aliyun.com
5、2台节点服务器
vim /etc/reslove.conf ##地址映射
nameserver 114.114.114.114
6、配置两台节点服务器(后端服务器)
两台节点服务器(192.168.35.10、192.168.35.20)都更改网关为192.168.35.40,重启,安装apache
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y httpd ##下载http服务
systemctl start httpd.service ##开启http服务
systemctl enable httpd.service
yum install -y nfs-utils rpcbind ##下载nfs服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
showmount -e 192.168.35.30
web1:192.168.35.10
mount.nfs 192.168.35.30:/opt/klkl /var/www/html/
echo 'this is klkl' > /var/www/html/index.html
vim /etc/fstab ##永久挂载
192.168.35.30:/opt/klkl /var/www/html nfs defaults,_netdev 0 0
mount -a
web2:192.168.35.20
mount.nfs 192.168.35.30:/opt/zwzyt /var/www/html/
echo 'this is zwzyt' > /var/www/html/index.html
vim /etc/fstab
192.168.35.30:/opt/zwzyt /var/www/html nfs defaults,_netdev 0 0
mount -a
7、虚拟windows测试
在win10上使用浏览器访问192.168.10.100,刷新浏览器测试负载均衡
刷新出来网页之后最好清除一下浏览记录,再次刷新网页轮询
此时更改虚拟win的配置
以上是关于LVS负载均衡群集架构:NET模式群集部署的主要内容,如果未能解决你的问题,请参考以下文章