lvs集群

avatar
作者
筋斗云
阅读量:1

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 高性能集群,对响应时间,处理能力要求更高。

共LB、HA、HPC三种类型

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模式:隧道模式

常用的模式:NAT和DR

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

#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模式

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

算法和加权演示

#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地址的时候才能指定负载均衡的算法,不是在真实服务器添加算法,没有办法修改,只能推到重来

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!