LVS负载均衡群集——其一
LVS负载均衡群集
一、LVS简介
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。
(https://cloud.tencent.com/developer/article/2054205)
群集:
cluster,集群、群集
多台主机构成,表现为一个整体,只提供一个访问入口(域名、IP地址),相当于一台大型计算机,与集群相反的叫分布式
目的:满足互联网对站点性能、响应速度、稳定性、可靠性的高要求
特点:多台主机构成,都干同一件事,对外展现为一个整体
二、群集分三类
1.负载均衡群集(load balance cluster)LB
提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询” “反向代理”等
典型代表:软件类:LVS(基于内核转发)、Nginx(基于软件转发)、HAProxy等;硬件类:F5、绿盟等
2.高可用群集(high availability cluster)HA
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用 (HA)的容错效果(几个九,99.9%)
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点例如,“故障切换”“双机热备”等
典型代表:keepalived、heartbeat
3.高性能运算群集(high performance computer cluster)HPC
以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”“网格计算”等
通过云计算或分布式计算来获取高性能的CPU、内存等资源,来提高整体运算能力
三、负载均衡的结构类型
几个九,三个九(99.9%)五个久(99.999%)
第一层,负载调度器(load balabcer或director)
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
第二层,服务器池(Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
第三层,共享存储(Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器
资源池方便了集群里每个服务器调用相同资源,即为共享存储。
四、负载均衡集群工作模式
1.地址转换(NAT模式)
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
调度机会做网关,承载双向流通压力;有一定的安全性
调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,也就是说调度器会承载双向数据流量的负载压力,可能会成为整个群集的性能瓶颈。由于节点服务器都处于内网环境,使用私网IP地址,所有具有一定的安全性。
2.IP隧道(TUN模式)
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
服务器节点分散在互联网中的不同位置具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调度器与节点服务器是通过专用的IP隧道实现相互通信的,因此IP隧道模式的成本较高,安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定影响
3.直接路由(DR模式)
采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)
DR模式是企业首选的LVS模式
modprobe ip_vs
cat /proc/net/
ls /usr/lib/modules/3.10.0-1160.71.1.el7.x86_64/kernel/net/netfilter/ipvs
awk -F . '{print $1}'
[root@localhost ~]#for i in `ls /usr/lib/modules/3.10.0-1160.71.1.el7.x86_64/kernel/net/netfilter/ipvs`;
do k=`echo $i | awk -F . '{print $1}'`;
modprobe $k;
done
ls ip_vs.ko.xz | grep -o "^[^.]*"
LVS的负载调度算法
轮询(round robin)
将收到的访问请求按照顺序轮流分配给各节点
加权轮询(weighted round robin)
权重值高的优先获得任务,分配的请求数更高
保证性能强的服务器承担更多访问流量
最少连接(least connections)
将收到的访问请求优先分给连接数最少的节点
加权最少连接(weighted least connections)
连接数/权重=num,num越小越先被分配
LVS调度算法
rr轮询 wrr加权轮询 sh源地址哈希 dh目的地址哈希 lc最小连接 wlc加权最小连接 lblc基于地址的最小连接
LVS-NAT模式配置步骤:
1)配置NFS共享存储
2)节点服务器安装web服务(apache、nginx、tomcat),注意:默认网关要指向调度器的IP地址,测试的时候关闭连接保存
3)调度服务器要设置IP路由转发功能和设置SNAT等iptables规则,安装ipvsadm工具,配置虚拟服务器和真实节点服务器相关配置
4)客户端测试的时候,网关要指向调度器的IP地址
使用ipcsadm工具,工具选项:
ipvsadm 工具选项说明:
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: c、加权最少连接: wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w: 设置权重(权重为 时表示暂停节点)
-P 60: 表示保持长连接60秒(默认关闭连接保持)
-l:列表查看 Lvs 虚拟服务器(默认为查看所有 )
-n:以数字形式显示地址、端口等信息,常与"-l"选项组合使用。ipvsadm -ln [-t VIP:PORT]
五、LVS-NAT部署实战
前提准备,关闭防火墙,不然会出现403禁止
负载调度器:内网关 ens33:192.168.177.10,外网关 ens36:12.0.0.10 Web节点服务器1:192.168.177.104 Web节点服务器2:192.168.177.105 NFS服务器:192.168.177.106 客户端:12.0.0.120
1.部署共享存储
(NFS服务器:192.168.177.106)
06号机器做NFS共享端
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet
echo '内容' > /opt/kgc/index.html
echo '内容' > /opt/benet/index.html
[root@localhost ~]# rpm -q rpcbind nfs-utils
rpcbind-0.2.0-42.el7.x86_64
nfs-utils-1.3.0-0.48.el7.x86_64
[root@localhost opt]#vim /etc/exprots
/opt/ky31 192.168.177.0/24(rw,sync,no_root_squash)
/opt/ky32 192.168.177.0/24(rw,sync,no_root_squash)
[root@localhost opt]# systemctl enable --now rpcbind nfs
验证
06号机上
[root@localhost opt]# showmount -e
Export list for localhost.localdomain:
/opt/ky32 192.168.177.0/24
/opt/ky31 192.168.177.0/24
04机上
[root@localhost ~]# showmount -e 192.168.177.106
Export list for 192.168.177.106:
/opt/ky32 192.168.177.0/24
/opt/ky31 192.168.177.0/24
05机上
[root@localhost ~]# showmount -e 192.168.177.106
Export list for 192.168.177.106:
/opt/ky32 192.168.177.0/24
/opt/ky31 192.168.177.0/24
2.配置节点服务器
(192.168.177.105、192.168.177.104)
04号机,安装nginx,服务名nginx
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
###1、安装、启动
yum install -y nginx
systemctl start httpd.service
systemctl enable httpd.service
vim /etc/nginx/conf.d/default.conf #进入配置文件找默认根目录
#根目录在/usr/share/nginx/html
#移走根目录源文件
cd /usr/share/nginx/html/
mv * /opt/
###2、挂载到根目录
mount 192.168.177.106:/opt/ky31 /usr/share/nginx/html/
# 文件再移回来
mv /opt/* /usr/share/nginx/html/
####永久挂载
vim /etc/fstab
192.168.177.106:/opt/ky31 /usr/share/nginx/html nfs defaults,_netdev 0 0
05号机,安装apache,服务名httpd
###1、安装
yum install -y httpd
vim /etc/httpd/conf/httpd.conf
#95行
ServerName www.yml.com:80
#添加关闭长连接命令,提升实验流畅性
KeepAlive off
###2、挂载到根目录
mount 192.168.177.106:/opt/ky32 /var/www/html/
systemctl enable --now httpd
####永久挂载
vim /etc/fstab
192.168.177.106:/opt/ky32 /var/www/html nfs defaults,_netdev 0 0
验证:
3.配置负载调度器
(内网关 ens33:192.168.177.103,外网关 ens36:12.0.0.10)
03号机网关服务器,配置双网卡
cd /etc/sysconfig/network-scripts/
cp ens-33 ens-36
[root@localhost network-scripts]#vim ifcfg-ens36#192.168.177.103
[root@localhost network-scripts]#vim ifcfg-ens33#12.0.0.10
#注释网关、DNS服务器地址
测试
网关服务器再开启IP转发功能
#vim /etc/sysctl.conf
#写入
net.ipv4.ip_forward=1
[root@localhost ~]#sysctl -p
net.ipv4.ip_forward = 1
#仅仅给网关增加路由转发功能还不够
节点服务器04号、05号将网关改成网关服务器的地址(192.168.177.103)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.177.103
#刷新
systemctl restart network
实现内网访问外网:
(1)网关配置SNAT转发规则
# 网关服务器上
iptables -nL
iptables -F#清除规则
iptables -F -t nat#清除nat表规则
#添加snat
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.177.0/24 -o ens36 -j SNAT --to 12.0.0.10
#36:12.0.0.10;33:192.169.177.103
(2)加载LVS内核模块
[root@localhost ~]#cd /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/
[root@localhost ipvs]#ls
ip_vs_dh.ko.xz ip_vs_lblc.ko.xz ip_vs_nq.ko.xz ip_vs_sed.ko.xz ip_vs_wrr.ko.xz
ip_vs_ftp.ko.xz ip_vs_lblcr.ko.xz ip_vs_pe_sip.ko.xz ip_vs_sh.ko.xz
ip_vs.ko.xz ip_vs_lc.ko.xz ip_vs_rr.ko.xz ip_vs_wlc.ko.xz
#使用for循环加载所以模块
[root@localhost ipvs]#for i in ` ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/ | grep -o "^[^.]*"`
> do
> modprobe $i
> done
#查看
[root@localhost ipvs]#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)安装ipvs工具
yum install -y ipvsadm
04号机上永久挂载nfs
vim /etc/fstab
192.168.177.106:/opt/ky31 /var/www/html nfs defaults,_netdev 0 0
#启动
#先失败,缺文件,看日志
9月 08 23:57:33 localhost.localdomain bash[57712]: /bin/bash: /etc/sysconfig/ipvsadm: 没有那个文件或目录
#解决方法——创建文件
touch /etc/sysconfig/ipvsadm
#或
ipvsadm-save /etc/sysconfig/ipvsadm
(4)配置负载均衡,利用工具
大致三步
1、先看是否已经有策略
ipvsadm -ln
存在则删除ipvsadm -C
2、进行配置
[root@localhost ~]#ipvsadm -A -t 12.0.0.10:80 -s rr
[root@localhost yum.repos.d]#ipvsadm -a -t 12.0.0.10:80 -r 192.168.177.104:80 -m
[root@localhost yum.repos.d]#ipvsadm -a -t 12.0.0.10:80 -r 192.168.177.105:80 -m
-A用于确定具体服务器
-D删除整个虚拟服务器
-t指定虚拟服务器的vip地址(与外网对接的ip地址)
-s指定调度算法(rr:轮询、wrr:加权轮询、lc:最少连接、wlc:加权最少连接)
-p 60指定长连接,等待60秒(默认关闭)
ipvsadm -a -t 12.0.0.10:80 -r 192.168.177. -s rr
-a确定真实服务器
-t指定虚拟服务器的IP地址与端口号
-r指定真实服务器的IP地址与端口号
-m使用NAT模式
-g使用DR模式
-i使用TUN模式
-w设置权重(为0表示暂停节点)
-l列表查看LVS虚拟服务器(默认查看所有)
-n以数字形式显示地址、端口等信息(常与"-l"共同使用)
3、激活
[root@localhost ~]#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.177.104:http Masq 1 0 0
-> 192.168.177.105:http Masq 1 0 0
验证:客户机(12.0.0.120)访问网关
测试时需要关闭NGINX上的长连接
04号机安装的Nginx
04机上
cd /etc/httpd/conf/
vim httpd.conf
KeepAlive 0;
后记:ipvsadm工具
策略配置是临时的,工具一关闭策略就消失
#保存
ipvsadm-save > /opt/ipvsadm#任意文件
#删除
[root@localhost ~]#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.177.104:http Masq 1 0 0
-> 192.168.177.105:http Masq 1 0 0
#删除单条策略-d
[root@localhost ~]#ipvsadm -d -t 12.0.0.10:80 -r 192.168.177.105:80 -m
[root@localhost ~]#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.177.104:http Masq 1 0 0
#删除全部策略-D
[root@localhost ~]#ipvsadm -D -t 12.0.0.10:80
[root@localhost ~]#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
恢复
[root@localhost ~]#ipvsadm-restore < /opt/ipvsadm#之前保存的文件位置
[root@localhost ~]#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 192.168.177.104:http Masq 1 0 0
-> 192.168.177.105:http Masq 1 0 0
LVS负载均衡群集——其一的更多相关文章
- LVS负载均衡群集部署——DR模式
LVS负载均衡群集部署--DR模式 1.LVS-DR概述 2.部署实验 1.LVS-DR概述: LVS-DR(Linux Virtual Server Director Server)工作模式,是生产 ...
- LVS负载均衡群集部署——NAT模式
LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...
- 21.LVS负载均衡群集-DR群集
LVS负载均衡群集-DR群集 目录 LVS负载均衡群集-DR群集 数据包流向分析 DR模式的特点 LVS-DR中的ARP问题 IP地址冲突 解决办法 路由根据ARP表项,会将新来的请求报文转发给Rea ...
- 20.LVS负载均衡群集—NAT模式实例
LVS负载均衡群集-NAT模式实例 目录 LVS负载均衡群集-NAT模式实例 群集引用概述 群集的含义 问题 解决方法 企业群集分类 群集的三种类型 负载均衡群集(Load Balance Clust ...
- NAT模式 LVS负载均衡群集部署
NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...
- LVS负载均衡群集
概述 群集的类型:无论是哪种服务器,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机.根据群集所针对的目标差异,可以分为以下三个类型: 1.负 ...
- 搭建Lvs负载均衡群集
一.Lvs详解 lvs内核模型 1.模型分析 用户访问的数据可以进入调度器 匹配调度器分配的虚拟IP|IP+端口(路由走向) 根据调度器的算法确定匹配的服务器 2.调度条件:基于IP.基于端口.基于内 ...
- LVS负载均衡群集(NAT)
----构建NAT模式的LVS群集----------client---------------LVS----------------WEB1-----------WEB2------------NF ...
- LVS负载均衡集群--DR模式部署
目录: 一.LVS-DR数据包流向分析 二.DR 模式的特点 三.LVS-DR中的ARP问题 四.DR模式 LVS负载均衡群集部署 一.LVS-DR数据包流向分析 1.为方便进行原理分析,将clien ...
- LVS负载均衡集群--NAT模式部署
目录: 一.企业群集应用概述 二.负载均衡群集架构 三.负载均衡群集工作模式分析 四.关于LVS虚拟服务器 五.NAT模式 LVS负载均衡群集部署 一.企业群集应用概述 1.群集的含义 Cluster ...
随机推荐
- Oracle批量处理SQL
批量更新且更新字段数字需要递增 示例: DECLARE n int; -- 定义变量 BEGIN n:=1000010; --为n 赋值 FOR i IN (SELECT AGENCY.ID FROM ...
- JavaWeb和MVC三层架构
JavaWeb 概述 网站发布和部署一定要依托技术语言吗: 不一定,一个网站可以直接发布和部署,因为因为浏览器能够识别网页只需要两样东西,网络和静态页面,还有一个装在他们的容器,比如 nginx. 静 ...
- 使用 VirtualBox+Vagrant 创建 CentOS7 虚拟机
一.准备工作 1.1 软件下载 VirtualBox:Downloads – Oracle VM VirtualBox Vagrant:Install | Vagrant | HashiCorp De ...
- 一文了解react中定义样式(css/less/sass)的常用方法
react中通过jsx的语法方式,将html标签和js语法联系在一起,而css的编写方式,没有明确的指定编写方式,目前就有很多不同方法,每个方式各有其优缺点,我们一起来看看常用的定义方式有哪些. 最基 ...
- 新一代开源流数据湖平台Apache Paimon入门实操-下
@ 目录 实战 写表 插入和覆盖数据 更新数据 删除数据 Merge Into 查询表 批量查询 时间旅行 批量增量查询 流式查询 时间旅行 ConsumerID 查询优化 系统表 表指定系统表 分区 ...
- 应用性能监控工具(pinpoint)部署
Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控.方法执行详情查看.应用状态信息监控等功能.pinpoint使用HBASE储存数据. 下面介绍pinpoint部署及应用. 1. 安装 ...
- Java BigDecimal 分析
1.使用理由: Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度.所以使用BigDecimal类来精确计算超过16位有效数字的数. 2.引入包 ...
- 推荐工具!使终端便于 DevOps 和 Kubernetes 使用
如果你熟悉 DevOps 和 Kubernetes 的使用,就会知道命令行界面(CLI)对于管理任务有多么重要.好在现在市面上有一些工具可以让终端在这些环境中更容易使用.在本文中,我们将探讨可以让工作 ...
- [ABC132D] Blue and Red Balls
2023-01-16 题目 题目传送门 翻译 翻译 难度&重要性(1~10):3 题目来源 AtCoder 题目算法 dp 解题思路 因为蓝球的数量是固定的,题目让我们求,在取 \(i\) 次 ...
- 【Ubuntu】Ubuntu 配置记录
目录 系统文件夹改回英文 Ubuntu 镜像 pypi 镜像 临时使用 设为默认 Doxygen + Graphviz 分析代码并画图 Graphviz 安装 Doxygen 安装 配置 运行 系统文 ...