lvs负载均衡全网最最最详细

目录

目录

NET模式

NET模式原理

所需要的环境

DR模式

环境配置

在客户端clinet测试

lvs算法

类型

静态

动态

防火墙标记解决轮询调度问题

环境与上面DR一致

在client客户端进行测试,相当成功

NET模式

NET模式原理

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口

(9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口

(9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)

5.VS服务器把修改过报文的响应数据包回传给客户端

6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通

过PREROUTING后被ipvs结果并作nat转发

因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工

作。所以在做lvs时要把iptables的火墙策略全清理掉。

所需要的环境

环境三台红帽9

关闭三台主机的防火墙,和selinux指令如下

systemctl stop firewalld

setenforce  0

分为lvs,webserver1,webserver2

lvs主机双网卡一个网卡用NTE桥接网络172.25.254.100/24,网关为172.25.254.2;一个网卡用仅主机网络192.168.0.100/24,网关为本主机地址的网关

第二块网卡,选为仅主机

webserver1一个网卡仅主机的ip为192.168.0.10/24,网关为192.168.0.100

网卡选为仅主机,ip地址网关如下:

webserver2一个网卡仅主机的ip为192.168.0.20/24,网关为192.168.0.100

选为仅主机

在lvs主机上进行设置

sysctl -a | grep ip_forward

查询内核路由功能是否开启

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

lvs中打开内核路由功能

sysctl -p

启动

在两台webserver上,注意两台

yum install httpd -y

下载httpd服务

systemctl restart httpd

重启服务

echo webserver1 - 192.168.0.10 >  /var/www/html/index.html

webserver1上

echo webserver2 - 192.168.0.20 >  /var/www/html/index.html

webserver2上

将内容写入httpd配置文件中

systemctl restart httpd

在lvs中检测

curl 192.168.0.10

curl 192.168.0.20

可以通

在lvs上配置ipvsadm

dnf install ipvsadm -y

安装lvs服务

服务的信息

ipvsadm -A -t 172.25.254.100:80 -s rr

ipvsadm -Ln

查看是否配置成功

服务有啦,rr表示轮流调度10一次,20一次,但不知道要调度那些主机

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

写入192.168.0.10和192.168.0.20

保存到/etc/sysconfig/ipvsadm

成功两次20,一次10

管理集群服务中的增删改

-A  #添加
-E #修改
-t  #tcp服务
-U #udp服务
-s  #指定调度算法,默认为WLC
-p  #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f #firewall mask 火墙标记,是一个数字

管理集群中 RealServer 的增删改
-a # 添加 realserver
-e # 更改 realserver
-t #tcp 协议
-u #udp 协议
-f # 火墙 标签
-r #realserver 地址
-g # 直连路由模式
-i #ipip 隧道模式
-m #nat 模式
-w # 设定权重
-Z # 清空计数器
-C # 清空 lvs 策略
-L # 查看 lvs 策略
-n # 不做解析
--rate :输出速率信息

DR模式

环境配置

共5台红帽9,一台lvs一台router路由器一台client客户端两台webserver主机

lvs,一个网卡是仅主机ip地址及网关如下回环接口lo为192.168.0.200

仅主机

router路由器

两个网卡一个对外一个仅主机,IP地址及网关如下

vim  /etc/sysctl.conf

进入配置文件

net.ipv4.ip_forward=1

sysctl -p

打开内核路由功能

client客户端主机

一个网卡对外,网关路由如下

两个webserver

要设置回环接口不对外通信,回环地址为192.168.0.200

websever1

webserver2

在lvs中配置ipvsadm

在客户端clinet测试

成功

lvs算法

类型

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态被分为两种:

静态方法和动态方法静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

静态

1、RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐

2、WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

动态

主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度

1、LC:least connections(最少链接发)

适用于长连接应用Overhead(负载值)=activeconns(活动链接数)x256+inactiveconns(非活动链接数)

2、WLC:Weighted Lc(权重最少链接)

默认调度方法Overhead=(activeconnsx256+inactiveconns)/weight

3、SED:Shortest Expection Delay,

初始连接高权重优先Overhead=(activeconns+1+inactiveconns)x256/weight

但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接

4、NQ:Never Queue,第一轮均匀分配,后续SED

5、LBLC:Locality-Based Lc,动态的DH算法,使用场景:根据负载状态实现正向代理

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

防火墙标记解决轮询调度问题

环境与上面DR一致

两台webserver主机都下载

yum install mod_ssl -y

下载mod_ssl

systemctl restart httpd

重启服务

netstat -antlupe | grep httpd

查询端口是否开启

在lvs主机中

iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

这条命令是在 iptables 的 mangle 表的 PREROUTING 链中添加了一条规则。
具体作用如下:
 -t mangle:指定操作的表为 mangle 表。
-A PREROUTING:表示在 PREROUTING 链中添加规则。
-d 192.168.0.200:指定目标 IP 地址为 192.168.0.200 。
-p tcp:指定协议为 TCP 。
-m multiport --dports 80,443:表示匹配目标端口为 80 和 443 。
-j MARK --set-mark 66:表示对匹配的数据包进行标记,标记值为 66 。

检查是否成功

将之前的内容清楚,配置新的内容

在client客户端进行测试,相当成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值