LVS集群调度器

目录

集群和分布式

LVS运行原理

LVS概念

LVS的集群类型

实验配置

安装LVS

ipvsadm命令参数

1.管理集群服务中的增删改

2.管理集群服务中的RS增删改

3.lvs调度策略的备份与恢复

4.lvs调度策略的开机启动

LVS-NAT模式

LVS-DR模式


集群和分布式

集群(Cluster),解决某个问题将多台计算机组合形成的系统群。

常见的集群类型:

  • 负载均衡(LoadBalancing,简称LB):由多个相同配置的主机组成,每个主机经过调度承担部分访问,防止单点故障提高系统可用性。常用的负载均衡实现方式由Nginx,LVS等。
  • 高可用(High Availiablity,简称HA) : ,是指系统或服务在规定时间内持续正常运行的能力,核心目标是最大限度减少停机时间,确保业务或功能在面对故障(如硬件损坏、软件错误、网络中断等)时仍能稳定提供服务。

MTBF:Mean Time Between Failure 平均无故障时间,正常时间 MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间

可用性等级计算方式:A=MTBF/(MTBF+MTTR),计算结果越接近"1"高可用性越高

  • **高性能计算(High-performance computing,HPC):**高性能计算,国家战略资源

负载均衡与高可用的关系:

负载均衡是实现高可用的核心手段之一,高可用的目标是 "不中断服务",而负载均衡通过分散流量和自动剔除故障节点,直接避免了 "单台服务器故障导致整体崩溃" 的风险。

分布式

一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务

分布式常见应用

  • 分布式应用-服务按照功能拆分,使用微服务

  • 分布式静态资源--静态资源放在不同的存储集群上

  • 分布式数据和存储--使用key-value缓存系统

  • 分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

分布式图解

集群和分布式的区别:

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

LVS运行原理

LVS概念

LVS(Linux virtual server):是一种负载调度器,是负载均衡的一种实现方式。

  • VS:虚拟服务器,LVS调度器

  • RS:内网真实服务器,提供服务

  • CIP:客户端IP

  • VIP:LVS的外网IP

  • DIP:LVS的内网IP

  • RIP:RS的IP

LVS的集群类型

集群类型 说明
nat 修改请求报文的目标IP,多目标IP的DNAT
dr 操纵封装新的MAC地址
tun 在原请求IP报文之外添加一个IP首部
fullnat 修改请求报文的源和目标IP

实验配置

安装LVS

bash 复制代码
[root@client ~]# dnf install ipvsadm -y

ipvsadm命令参数

核心功能:

  • 集群服务器管理:增、删、改

  • 集群服务的RS管理:增、删、改

  • 查看

1.管理集群服务中的增删改

bash 复制代码
#命令格式
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

-A #添加

-E #修改

-t #tcp服务

-u #udp服务

-s #指点调度算法,默认为WLC,rr为轮询,wrr为权重轮询

-p #设置吃就连接超时,将同一个时间段将一个访问请求调度给同一个RS

-f #firewall mask 火墙标记,是一个数字

-L #查看lvs策略 + n 不做解析

ipvsadm -Ln #不做解析查看lvs策略

bash 复制代码
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr	
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -D -t 172.25.254.100:80
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -L	#查看lvs调度策略	
[root@lvs ~]# ipvsadm -Ln	#n不做解析的查看调度策略

2.管理集群服务中的RS增删改

bash 复制代码
#命令格式
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]

-a #添加

-e #更改

-t #tcp / -u #udp

-f #火墙标签

-r #指定RS地址

-g #直连路由模式

-i #ipip隧道模式

-m #nat模式

-w #设定权重

-C #清空lvs策略

-L #查看lvs策略 + n 不做解析

ipvsadm -Ln #不做解析查看lvs策略

--rate #输出速率信息

ipvsadm -Ln --rate

-Z #清空计数器

bash 复制代码
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.20 -g
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.20 -m -w 2
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.30 -i -w 2
[root@lvs ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

3.lvs调度策略的备份与恢复

bash 复制代码
#备份与恢复
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule

4.lvs调度策略的开机启动

由于缺少备份到/etc/sysconfig/ipvsadm规则调度文件,所以不能开机启动。

bash 复制代码
#需要先把调度策略导入生成调度规则文件,具有调度规则文件后才能开启服务进程
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# systemctl enable --now ipvsadm
#开机启动后就会自动重载保存在调度规则的文件

LVS-NAT模式

环境

主机名 网卡类型 网卡配置
client NAT eth0:172.25.254.111/24
lvs NAT与仅主机 eth0:172.25.254.100/24,eth1:192.168.44.100/24
RS1 仅主机 eth0:192.168.44.10/24
RS2 仅主机 eth0:192.168.44.20/24

配置

bash 复制代码
#lvs配置
#lvs开启内核路由功能
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
sysctl -p
net.ipv4.ip_forward = 1
#添加规则策略
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr	
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.20 -m

测试

bash 复制代码
#测试的服务使用http所以要在lvs调度器上火墙放行80端口
#还要把RS网关指向为lvs的DIP
[root@lvs ~]# for i in {1..10};
> do
> curl 172.25.254.100;
> done

LVS-DR模式

环境

主机名 网卡类型 网卡配置
client NAT eth0:172.25.254.111/24
router NAT/仅主机 eth0:172.25.254.100/24,eth1:192.168.44.100/24
lvs 仅主机 eth0:192.168.44.200/24,192.168.44.220/24
RS1 仅主机 eth0:192.168.44.10/24,lo:192.168.44.220/32
RS2 仅主机 eth0:192.168.44.20/24,lo:192.168.44.220/32

配置

bash 复制代码
#client配置
#由于要经过路由器router去通信VIP所以要配置指向router的网关
[root@client ~]# ip route add default via 172.25.254.100


#router配置
#开启内核路由功能
[root@router ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1
#要充当路由器就要开启地址伪装
[root@router ~]# firewall-cmd --permanent --add-masquerade
[root@router ~]# firewall-cmd --reload	#由于地址命令是生效在配置文件中所以要重载

#lvs配置
#火墙放行80端口或者关闭火墙
[root@lsv-dr ~]# systemctl disable --now firewalld
#编写规则策略
[root@lsv-dr ~]# ipvsadm -A -t 192.168.44.220:80 -s rr
[root@lsv-dr ~]# ipvsadm -a -t 192.168.44.220:80 -r 192.168.44.10 -g
[root@lsv-dr ~]# ipvsadm -a -t 192.168.44.220:80 -r 192.168.44.20 -g
[root@lsv-dr ~]# 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.44.220:80 rr
  -> 192.168.44.10:80             Route   1      0          0
  -> 192.168.44.20:80             Route   1      0          0

#RS1
#安装并开启httpd服务供client访问
[root@RS1 ~]# dnf install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo RS1 > /var/www/html/index.html	#生成测试文件
#火墙放行80端口或者关闭火墙
[root@lsv-dr ~]# systemctl disable --now firewalld
#设定lo接口上的VIP不对外相应
[root@RS1 ~]# echo net.ipv4.conf.all.arp_ignore = 1 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf
[root@RS1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#配置网关指向路由器内网接口
[root@RS1 ~]# ip route add default via 192.168.44.100

#RS2同RS1配置一样

测试

相关推荐
Tina学编程2 小时前
HTML基础P1 | HTML基本元素
服务器·前端·html
半梦半醒*2 小时前
H3CNE综合实验之机器人
java·开发语言·网络
FCM663 小时前
HCIA第三次综合实验:VLAN
网络·计算机网络
逆羽飘扬3 小时前
【云原生网络】Istio基础篇
网络·云原生·istio
武汉唯众智创3 小时前
职业院校网络安全攻防对抗实训室解决方案
网络·安全·web安全·网络安全·攻防对抗·网络安全攻防对抗实训室·网络安全攻防对抗
liulilittle4 小时前
游戏加速器核心技术:动态超发
开发语言·网络·c++·网络协议·游戏·加速器·游戏加速
Bella的成长园地4 小时前
linux 系统依赖包查询命令汇总
linux·运维·服务器
hweiyu005 小时前
Linux 命令:uname
linux·运维·服务器
不想写bug呀5 小时前
HTTP协议介绍
网络·网络协议·http
原点安全6 小时前
原点安全签约金网络数科,共建一体化数据安全防护体系
网络·安全