lvs原理及其相关实验内容

目录

集群和分布式

集群和分布式

lvs功能简介

查看内核有没有lvs

lvs的概念

lvs的集群类型

管理集群服务中的增删改

练习

管理RealServer

永久保存策略

NAT模式原理以及部署方法

原理

实验

lvs部分

webserver1 2 部分

测试

DR模式原理以及部署方法

nat模式的缺点:

如何解决?

工作特点:

实验

client 

router

lvs

webserver1 2

TUN模式

FULLNET模式

lvs算法

静态算法

RR

WRR

SH

DH

动态算法

LC

WLC

SED

NQ

LBLC

LCLCR

mark标记解决调度问题

错误示例

正确示例

lvs的持久连接


集群和分布式

集群和分布式

集群:一个业务系统,部署在多台主机上,数据和代码都是完全一致的

分布式:把一个复杂的请求,按照功能拆分,使用微服务来完成(RS)

结合在一起去使用,性能更优

lvs功能简介

LVS:负载调度器,分为四层(最多到端口,可以更改MAC,IP,端口),也叫四层负载

查看内核有没有lvs

[root@lvs ~]# cd /boot/
[root@lvs ~]# ls
[root@lvs ~]# less config-
#IPVS scheduler
#内核默认支持lvs,内核级别,转发速度快!!

lvs的概念

VS:lvs服务器

RS:后端服务器

CIP:客户IP

VIP:客户访问lvs的IP

DIP:访问RS的IP

RIP:提供服务的主机的IP

访问流程:CIP<--->VIP==DIP<--->RIP

lvs的集群类型

DIP<--->RIP

lvs-nat:修改请求报文的目标,多目标IP的DNAT(常用)

lvs-dr:操作封装新的MAC地址(常用)

lvs-tun:在原请求报文之外新加一个IP首部

lvs:fullnat:修改请求报文的源和目标IP (内核不支持)

ipvsadm常见参数详解

管理集群服务中的增删改

[root@localhost ~]# ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A #添加
-E #修改
-t #tcp服务
-u #udp服务
-s #指定调度算法,默认为WLC
-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver(例如加入购物车的东西刷新不会消失)
-f #firewall mask 火墙标记,是一个数字

练习

[root@localhost ~]# ipvsadm -A -t 172.25.254.200:80 -s rr

[root@localhost ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr

#查看数据
[root@localhost ~]# ipvsadm Ln --rate
CPS	   总链接个数
InPPS  出去的所有链接总量
OutPPS 出去的所有链接总量
InBPS  进入的所有数据总量
OutBPS 出去的所有数据总量

#删除指定某条
[root@localhost ~]# ipvsadm -D -t 172.25.254.200:80

#删除全部策略
[root@localhost ~]# ipvsadm -C

管理RealServer

[root@localhost ~]# ipvsadm -A -t 172.25.254.200:80 -s rr

[root@localhost ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr

#查看数据
[root@localhost ~]# ipvsadm Ln --rate
CPS	   总链接个数
InPPS  出去的所有链接总量
OutPPS 出去的所有链接总量
InBPS  进入的所有数据总量
OutBPS 出去的所有数据总量

#删除指定某条
[root@localhost ~]# ipvsadm -D -t 172.25.254.200:80

#删除全部策略
[root@localhost ~]# ipvsadm -C

永久保存策略

[root@localhost ~]# ipvsadm > /etc/sysconfig/ipvsadm

[root@localhost ~]#ipvsadm -n > /etc/sysconfig/ipvsadm 


#恢复策略
[root@localhost ~]# ipvsadm-restore < /etc/sysconfig/ipvsadm 

#ipvsadm服务会记录当前状态,开启的时候文件有没有内容,重启后就有或者没有
[root@localhost ~]# systemctl stop ipvsadm.service
[root@localhost ~]# vim /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm.service

NAT模式原理以及部署方法

原理

RS需要设定网关,必须是DIP

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的调度机容易阻塞

实验

lvs部分
[root@lvs ~]# sysctl -a | grep ip_forward

#lvs中打开内核路由服务
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1

#生效
[root@lvs ~]# sysctl -p

#安装lvs软件
[root@lvs ~]# dnf search lvs
[root@lvs ~]# dnf install ipvsadm -y

#策略文件
[root@localhost ~]# cat /etc/sysconfig/ipvsadm

#增加策略
[root@localhost ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
# -A 增加虚拟server 
# -t 协议
# 172.25.254.100:80 客户访问100的时候开始调度
# -s 指定调度算法
# rr 轮询(静态算法) 你一个我一个

#查看策略
[root@localhost ~]# ipvsadm -Ln

#调度主机
[root@localhost ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m 
# -r real server
# -m lvs模式 
# -w 权重 (wrr算法) 
[root@localhost ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m 

#查看策略
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0     
 
#保存策略
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
webserver1 2 部分
[root@webserver1 ~]# vmset.sh eth0 192.168.0.10 webserver1.example.org
[root@webserver1 ~]# vim /etc/NetworkMangaer/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

#一定要修改这个地方的网关,因为要和lvs在同一个网段下
[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual

#检查网关是否生效
[root@webserver1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

#安装apache服务
[root@webserver1 ~]# dnf install httpd -y
[root@webserver1 ~]# echo webserver1 - 192.168.0.10 > /var/www/html/index.html

#开机自启httpd服务
[root@webserver1 ~]# systemctl enable --now httpd 
测试
[root@localhost ~]# for i in {1..10}; do curl 172.25.254.100; done
webser1 192.168.0.10
webserver2 192.168.0.20
webser1 192.168.0.10
webserver2 192.168.0.20
webser1 192.168.0.10
webserver2 192.168.0.20
webser1 192.168.0.10
webserver2 192.168.0.20
webser1 192.168.0.10
webserver2 192.168.0.20

DR模式原理以及部署方法

nat模式的缺点:

所有流量都要去访问lvs,nat后面最多挂10台主机

如何解决?

引进DR模式:解决lvs压力过大的问题

工作特点:

lvs只进不发

RS直接回到客户端,

特点:lvs与RS相同网段,不能跨vlan,否则lvs不知道RS的mac地址

如果要跨就得用隧道模式

实验

client 
[root@client ~]# vmset.sh eth0 172.25.254.200 client.example.com

[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.200/24,172.25.254.100
method=manual
router
[root@router ~]# vmset.sh eth0 172.25.254.100 router.example.org
[root@router ~]# vmset.sh eth1 192.168.0.100
[root@router ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-name=eth1

[ipv4]
address1=192.168.0.100/25
method=manual

[root@router ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual

#内核路由功能要打开
[root@router ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1

#检查内核路由功能是否打开
[root@router ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
lvs
[root@lvs ~]# ip a a 192.168.0.200/32 dev lo
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80 wrr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80              Route   2      0          0
webserver1 2
[root@webserver1 ~]# vmset.sh eth0 192.168.0.10 webserver1.example.org

#可以在回环网卡做
#必须先开启禁用lo的功能
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#才能设定某个网卡
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#以上操作做了之后,lo只对eth0响应

[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0 
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual
dns=114.114.114.114;

[root@webserver1 ~]# systemctl stop firewalld
[root@webserver1 ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@webserver1 ~]# echo webserver1-192.168.0.10 > /var/www/html/index.html

TUN模式

ip层都可以跨网络

客户端发送了一个CIP+VIP的包到达lvs后

lvs在数据包前面添加DIP+RIP

数据包从DIP出去后达到RIP,RS拆开包发现CIP+VIP

然后直接回到客户机

模式和DR模式类似,但是是增加的IP,不是MAC地址

FULLNET模式

lvs

客户端发送出CIP+VIP的包

lvs将其转换为DIP+RIP

回来的时候又转变为CIP+VIP

类似nat模式的增强版

lvs算法

静态算法

RR

轮询,当RS配置有差别时不推荐

WRR

加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

SH

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

弊端:多个用户使用同一个IP

DH

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

动态算法

LC

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

缺点:后端服务器性能不一致,可能会调度到性能差的主机

WLC

默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight

缺点:会导致其中一台RS负载过高

SED

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

缺点:会导致其中一台RS负载过高

NQ

Never Queue,第一轮均匀分配,后续SED

LBLC

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

LCLCR

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

mark标记解决调度问题

为什么要引进呢?

因为当我们想访问80和443端口时,他还是进行的分开控制,没有轮询

错误示例

#client部分
#这是因为防火墙标签解决轮询调度(错误)问题
# -k 忽略证书
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver1 - 192.168.0.10
webserver1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20

正确示例

#LVS部分
#lvs中为端口做标记
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

[root@lvs ~]# iptables -t mangle -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       tcp  --  0.0.0.0/0            192.168.0.200        multiport dports 80,443 MARK set 0x42

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (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         

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 在主机基于标记定义集群服务
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g

[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr
  -> 192.168.0.10:0               Route   1      0          0         
  -> 192.168.0.20:0               Route   1      0          0         
  

#webserver1 2部分
#下载加密模块协议,让rs支持https
[root@webserver1 ~]# yum install mod_ssl -y
Complete!
[root@webserver1 ~]# systemctl restart httpd
[root@webserver1 ~]# netstate -antlupe | grep httpd


#LVS解决后,成功实现
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10

lvs的持久连接

#LVS部分
#lvs中为端口做标记
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

[root@lvs ~]# iptables -t mangle -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       tcp  --  0.0.0.0/0            192.168.0.200        multiport dports 80,443 MARK set 0x42

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (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         

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 在主机基于标记定义集群服务
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g

[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr
  -> 192.168.0.10:0               Route   1      0          0         
  -> 192.168.0.20:0               Route   1      0          0         
  

#webserver1 2部分
#下载加密模块协议,让rs支持https
[root@webserver1 ~]# yum install mod_ssl -y
Complete!
[root@webserver1 ~]# systemctl restart httpd
[root@webserver1 ~]# netstate -antlupe | grep httpd


#LVS解决后,成功实现
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值