lvs集群

lvs集群

概念

linux virtual server-----章文嵩发起的开源项目

作用:在linux的内核层面,实现负载均衡的软件

主要作用:将多个后端服务器,组成一个高可用、高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上,来实现高可用和负载均衡。

阿里的SLB:server load balance,是通过lvs+keepalive实现的

一、集群和分布式

1.1 系统的拓展方式

1.1.1 垂直拓展:向上拓展,起到增强的作用(针对性能更强的计算机),瓶颈:计算机本身设备的限制,硬件本身的性能瓶颈

1.1.2 水平拓展:向外扩展,增加设备。可以并行的运行多个服务,依靠网络解决内部通信的问题,cluster集群。

集群:为了解决某个特定的问题,将多台计算机组合起来形成的单个系统

1.2 集群的类型

LB:load balance 负载均衡集群,多个主机组成,每个主机只承担一部分的访问请求

HA:high availablity 高可用集群,在设计系统时,采取一定的措施,确保系统当中某一组件或者部分出现故障,整个系统依然可以正常运行,为了维护整个系统的可用性、可靠性、容错性。

HPC:high-performance computing 高性能集群,对响应时间,处理能力要求更高。

LBHAHPC三种类型

1.3 系统可靠性指标

MTBF:Mean time Between Failure 平均无故障时间

MTTR:Mean TimeTo Repair 平均故障恢复时间

A=MTBF/(MTBF+MTTR)

A指标要在0~1之间,A指标就是系统可用性的度量,0表示系统越不可用,1表示系统越可用,A指标要无限接近于1,

90~95% 不合格

98~98% 合格

都是以小时为单位,一年365天=8760小时

1.4 停机时间

1.4.1 计划内时间:可以忽略不计,但是现在也计算在内

1.4.2 计划外时间:就是故障时间,从故障发生到故障解决的总时间,尤其是运维,计划外时间是我们必须要关注的指标

dy------当天事必须当天解决-----没有解决之前,人是不可以离开的-----解决完成之后必须生成报告,备案-----日报、周报、月报、年报

运维精神:7*24小时待命(及时响应、及时处理、及时总结)

1.5 lvs适用场景

小集群不需要使用lvs,大集群使用lvs

1.6 lvs集群中的术语

VS:virtual server,是lvs的逻辑名称,也就是我们在外部访问lvs集群时使用的ip地址和端口

DS:director server,是lvs当中的主服务器,也是调度器(nginx的代理服务器),是集群的核心,调度器就是用来接收客户端的请求转发到后端的服务器

RS:real server,是lvs集群中的真实服务器(后端服务器),用来接收调度器转发过来的请求,并且响应结果。

CIP:client ip,即客户端的地址,也就是发起请求的客户端的IP地址

VIP:virtual ip,是lvs集群使用的ip地址,是对外提供集群访问的虚拟ip地址

DIP:director ip,即调度器在集群当中的地址,用于和RS进行通信

RIP:real ip,即后端服务器在集群当中的ip地址

1.7 lvs的工作方式

NAT模式:要由调度器响应给客户端

DR模式:直接路由模式,由真实路由器直接响应给客户端

TUN模式:隧道模式

常用的模式:NATDR

NAT模式

nat模式是常用lvs的模式之一,在nat模式下,lvs会将来自客户端的请求报文的目的ip地址和端口,修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器

响应结果返回客户端的过程中,响应报文也要经过lvs的处理,把目标ip和端口修改成客户端的ip地址和端口

好处:对于客户端来说请求的目标地址始终不变,因此客户端的配置不需要做特殊修改,只是调度器在对ip地址和端口进行转换,后端的服务器也不需要修改任何配置

缺点:性能损失,请求和响应每次都经过调度器进行地址转换,影响性能。nat模式只能有一个调度器,调度器故障,整个集群就不能正常工作了

1.8 地址转换

内网-------外网 转换的是源ip地址 snat

外网-------内网 转换的是目的地址 dnat

1.8.1 客户端发起请求,访问vip地址,到达调度器

1.8.2 调度器接收请求之后,根据负载均衡算法选一个后端服务器

1.8.3 请求地址,转化成可以直接和内部RS通信的ip地址

1.8.4 后端服务器处理请求

1.8.5 目的地址转换,转换成vip地址

1.8.6 调度器的vip响应给客户端

1.9 lvs的工具

ipvsadm工具:用来配置和管理lvs集群的工具

-A:添加虚拟服务器(vip)

-D:删除虚拟服务器地址

-s:指定负载均衡的调度算法

1.10 lvs算法

rr默认,轮询

wrr,加权轮询

lc,最小连接

wlc,加权最小连接

-a:添加真实服务器

-d:删除真实服务器

-t:指定vip的地址和端口

-r:指定rip的地址和端口

-m:使用nat模式

-g:使用DR模式

-i:使用隧道模式

-w:设置权重

-p:设置连接的保持时间

-l:列表查看

-n:数字化展示

二、地址转换实验

nginx1 RS1 192.168.100.11

nginx2 RS2 192.168.100.12

test1:调度器 ens33 192.168.100.13 ens36 12.0.0.1

test2:客户端 12.0.0.10

bash 复制代码
#test1#
添加虚拟网卡,ifconfig查看后为ens36

#test1和2#
systemctl stop firewalld
setenforce 0

#nginx1和2#
systemctl stop firewalld
setenforce 0
systemctl restart nginx

#test1#
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm* -y

#test1#
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33  ifcfg-ens36
vim ifcfg-ens33
# 注释网关和dns,直接用本机的ip地址做网关
vim ifcfg-ens33
# 注释网关和dns,修改ens=36,ip=12.0.0.1(vip地址)
systemctl restart network
ifconfig  # 查看一下

#nginx1和nginx2#
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
# 修改网关指向内网网关即test1的ip地址(test1 192.168.100.13)
systemctl restart network

# 修改访问内容

#nginx1#
vim /usr/local/nginx/html/index.html
this is nginx1
wq!

#nginx2#
vim /usr/local/nginx/html/index.html
this is nginx2
wq!

#test1#
iptables -t nat -vnL
# 查看nat表是否有策略,没有直接往里面加就可以了
iptables -t nat -A POSTROUTING -s 192.168.100.0/24  -o ens36 -j SNAT --to 12.0.0.1
iptables -t nat -vnL
# 查看nat表策略,新增一条含义为,从ens36设备出的所有网段,将其转化为12.0.0.1(内---->外,源地址转化)

cd /opt
systemctl restart ipvsadm.service
# 会出现报错 tail -f /var/log/message
# 原因:没有配置,即/etc/sysconfig/ipvsadm里面的配置是空的,空的就会报错
# 处理方法:先设置,设置完把配置保存在这个目录里面,生成这个文件就可以了
# 设置:先添加,如果之前有就先清空后再添加

ipvsadm -C   # 清空原有策略

#添加设置
ipvsadm -A -t 12.0.0.1:80 -s rr
#指定好的vip的地址和端口
#先添加vip,虚拟服务器的ip和端口,然后再添加真实服务器
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.11:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.12:80 -m

ipvsadm -ln
# 出现vip为12.0.0.1:80,指定算法为rr(这个需要自己指定,一定要写),192.168.100.11:80和192.168.100.12:80表示指向的后端服务器,其中Masq代表的意思就是nat模式,不设置权重的话,默认权重就是1
 
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
# 可能会出现bug,地址错误(vip为12.0.0.1:80发生变化),解决办法:只能删除重改

#下面是删除策略操作
ipvsadm -D -t 错误地址    #删除策略
ipvsadm -ln
# 删除策略操作完毕

重新操作上面步骤
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.11:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.12:80 -m
systemctl restart ipvsadm
ipvsadm -ln
# 此时为正确vip地址(12.0.0.1:80)
ipvsadm -save > /etc/sysconfig/ipvsadm
ipvsadm -ln

vim /etc/sysctl.conf
# 在最后一行添加
net.ipv4.ip_forward=1
wq!
sysctl -p

#test2客户端#
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改网关指向vip地址(12.0.0.1)
# ip地址修改为和外网一个网段,随便改12.0.0.20
systemctl restart network

此时打开nginx1和nginx2
tail -f /usr/local/nginx/logs/access.log
进入客户端(test2)虚拟机访问12.0.0.1

ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.11:80 -m

-a:添加真实服务器

-t:指定vip地址

-r:指定真实服务器的地址和端口

-m:指定模式为nat模式

bash 复制代码
## 如何删除节点服务器
## ipvsadm -d -r 192.168.100.11:80 -t 12.0.0.1:80

添加节点服务器和删除节点服务器的区别?
添加:vip在前,真实服务器在后
删除:真实服务器在前,vip在后
#添加节点和删除顺序反过来,前面是-d,-D表示删除策略

算法和加权演示

bash 复制代码
#test1#

ipvsadm -D -t 12.0.0.1:80
# 没有办法修改,只能推到重来,删除策略

ipvsadm -A -t 12.0.0.1:80 -s wrr
# wrr加权轮询
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.11:80 -m -w 2
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.12:80 -m -w 3
ipvsadm -ln
# 查看 不需要重启直接生效

此时打开nginx1和nginx2
tail -f /usr/local/nginx/logs/access.log
进入客户端(test2)虚拟机访问12.0.0.1,nginx2的权重高,访问页面出现次数多

# 加权最小连接操作
# ipvsadm -A -t 12.0.0.1:80 -s wlc
# 把加权轮询wrr,修改为wlc,其余不变

创建vip地址的时候才能指定负载均衡的算法,不是在真实服务器添加算法,没有办法修改,只能推到重来

相关推荐
会飞的爱迪生5 天前
centos7之LVS-DR模式传统部署
网络·lvs
会飞的爱迪生6 天前
centos7之LVS-TUNNEL模式
lvs·tunnel
IT-民工211109 天前
LVS Nginx HAProxy的优缺点
运维·nginx·lvs
会飞的爱迪生9 天前
centos7配置keepalive+lvs
lvs·keepalive
打败4049 天前
lvs知识点归纳
负载均衡·lvs
阳排10 天前
Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS
lvs·layout·版图·virtuoso·drc
mqiqe14 天前
Linux LVS详解
linux·运维·lvs
运维小白。。14 天前
企业级调度器 LVS
运维·服务器·lvs
happy_king_zi14 天前
高并发负载均衡——nginx与lvs
nginx·负载均衡·lvs
abandondyy19 天前
LVS+Keepalived
lvs