首页 > 其他分享 >LVS集群

LVS集群

时间:2024-06-30 19:09:17浏览次数:20  
标签:network LVS ipvsadm 192.168 集群 scripts 80 root

LVS集群

LVS 调度算法

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

分为两种:

静态方法: 不管后端真实服务器的 状态,根据自身 算法进行调度

动态方法: 会根据后端服务器的状态来进行调度

仅根据算法本身进行调度

静态:

1、RR:roundrobin,轮询,较常用

2、WRR:Weighted RR,加权轮询,较常用 先算总权重 再用自己的 权重去除以 总权重

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

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

动态: 一个参考值 来确定服务器是否忙 这个值越小 代表服务器 闲 就会优先调度给闲的服务器

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

1、LC:least connections 适用于长连接应用 最小连接数 不考虑权重

Overhead=activeconns*256+inactiveconns

2、WLC:Weighted LC,默认调度方法,较常用 默认调度 加权最小连接数 第一轮不合理 都是 一样的 优先级

Overhead=(activeconns*256+inactiveconns)/weight

3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接 权重小的 空闲的

Overhead=(activeconns+1)*256/weight

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

5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等 检查 后端服务器忙不忙

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

内核版本 4.15 版本后新增调度算法:FO和OVF

FO(Weighted Fail Over)调度算法,在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_F_OVERLOAD标志)的且权重最高的真实服务器,进行调度,属于静态算法

OVF(Overflow-connection)调度算法,基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。,属于动态算法

一个可用的真实服务器需要同时满足以下条件:

  • 未过载(未设置IP_VS_DEST_F_OVERLOAD标志)
  • 真实服务器当前的活动连接数量小于其权重值
  • 其权重值不为零

ipvsadm工具选项

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
-w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

安装ipvsadm

#安装ipvsadm
[root@GW opt]# yum install ipvsadm -y

#打开路由转发功能
[root@GW opt]# vim /etc/sysctl.conf 
[root@GW opt]# sysctl  -p
net.ipv4.ip_forward = 1

#生成一个规则文件
[root@GW opt]# ipvsadm-save  >   /etc/sysconfig/ipvsadm

#启动并查看当前规则
[root@GW opt]# systemctl start ipvsadm.service
[root@GW opt]# ipvsadm  -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

#新建一个代理服务器规则(-A:增加代理主机,-t:tcp协议后面跟代理地址与端口号,-s:指定算法)
[root@GW opt]# ipvsadm  -A  -t 12.0.0.1:80 -s rr
[root@GW opt]# ipvsadm  -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr

#增加真实服务器(-a:增加真实服务器,-r:指定目标服务器地址加端口号,-m:表示使用nat规则)
[root@GW opt]# ipvsadm  -a  -t 12.0.0.1:80 -r 192.168.10.103:80 -m
[root@GW opt]# ipvsadm  -a  -t 12.0.0.1:80 -r 192.168.10.104:80 -m
[root@GW opt]# ipvsadm  -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr
  -> 192.168.10.103:80            Masq    1      0          0         
  -> 192.168.10.104:80            Masq    1      0          0   

NAT模式 LVS负载均衡部署

[root@7-1 ~]#systemctl stop firewalld
[root@7-1 ~]#setenforce 0
[root@7-1 ~]#cd /etc/sysconfig/network-scripts/
[root@7-1 network-scripts]#cp ifcfg-ens33 ifcfg-ens37
[root@7-1 network-scripts]#vim ifcfg-ens37
#去掉网关
[root@7-1 network-scripts]#vim ifcfg-ens37
#去掉网关重启服务

[root@7-1 network-scripts]#vim /etc/sysctl.conf
#打开路由转发功能
net.ipv4.ip_forward = 1 
[root@7-1 network-scripts]#sysctl -p
net.ipv4.ip_forward = 1




[root@7-1 network-scripts]#cat /proc/net/ip_vs
[root@7-1 network-scripts]#modprobe ip_vs
#加载内核模块
[root@7-1 yum.repos.d]#yum install ipvsadm* -y
#安装软件
[root@7-1 yum.repos.d]#systemctl start ipvsadm.service 
Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details.
/etc/sysconfig/ipvsadm: 没有那个文件或目录
[root@7-1 yum.repos.d]#ipvsadm-save >/etc/sysconfig/ipvsadm
#保存配置文件
[root@7-1 yum.repos.d]#systemctl start ipvsadm.service 

[root@7-1 yum.repos.d]#ipvsadm -C
#清空策略
[root@7-1 yum.repos.d]#ipvsadm -A -t 12.0.0.1:80 -s rr
#指定IP地址 外网的入口  -s rr  轮询
[root@7-1 yum.repos.d]#ipvsadm -a -t 12.0.0.1:80 -r 192.168.10.101:80 -m
#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
[root@7-1 yum.repos.d]#ipvsadm -a -t 12.0.0.1:80 -r 192.168.10.103:80 -m
#
[root@7-1 yum.repos.d]#ipvsadm
#启动
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  7-1.localdomain:http rr
  -> 192.168.10.101:http          Masq    1      0          0         
  -> 192.168.10.103:http          Masq    1      0          0         
[root@7-1 yum.repos.d]#ipvsadm -ln
#查看策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr
  -> 192.168.10.101:80            Masq    1      0          0         
  -> 192.168.10.103:80            Masq    1      0          0         

LVS的负载调度算法

LVS的负载调度算法有四种最常用的:轮询算法(rr)、加权轮询(wrr)、最少轮询(lc)、加权最少轮询(wlc)

1)创建虚拟服务器(注意:NAT模式要两块网卡,调度器的地址是外网口地址)
群集的VIP地址为192.168.80.33,针对TCP 80端口提供负载分流服务,使用的轮询调度算法。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
ipvsadm -A -t 192.168.20.11:80 -s rr

//选项 "-A"表示添加虚拟服务器,"-t"用来指定VIP地址及TCP端口,"-s"用来指定负载调度算法——rr、wrr、lc、wlc

2)添加服务器节点
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.33:80 -m
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.44:80 -m

//选项 "-a"表示添加真实服务器,"-t"用来指定VIP地址及TCP端口,"-r"用来指定RIP地址及TCP端口,"-m"表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)
{ -m参数后面还可以跟-w的参数,这里没有做的"-w"用来设置权重(权重为0时表示暂停节点)}

4)删除服务器节点
ipvsadm -d -r 192.168.90.22:80 -t 192.168.80.88:80

//需要从服务器池中删除某一个节点时,使用选项"-d"。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。如上所示的操作将会删除LVS群集192.168.80.88中的节点192.168.90.22

若需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需要指定节点。例如:“ipvsadm -D -t 192.168.80.11:80",则删除此虚拟服务器。

ipvsadm -L	//查看节点状态,加个"-n"将以数字形式显示地址、端口信息
ipvsadm-save  > /etc/sysconfig/ipvsadm	//保存策略

使用导出/导入工具ipvsadm-save/ipvsadm-restore可以保存、恢复LVS策略,方法类似于iptables的规则的导出、导入

DR模式部署

客户机发起请求,经过调度服务器(lvs),经过算法调度,去访问真实服务器(RS)

由于不原路返回,客户机不知道,真实主机的ip地址,

所以只能通过调度服务器的外网ip(vip)去反回报文信息。
配置负载调度器
systemctl stop firewalld.service
setenforce 0
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]#yum install ipvsadm.x86_64 -y
#安装服务

#配置虚拟IP地址(VIP:192.168.91.188)

[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens33:0
#配置虚拟网卡,若为隧道模式ifcfg-tunl0
[root@localhost network-scripts]#vim ifcfg-ens33:0
#删除dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ifup ifcfg-ens33:0
#启动网卡
[root@localhost network-scripts]#ifconfig ifcfg-ens33:0


#调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost network-scripts]#sysctl -p
#刷新配置
#调整/proc响应参数  对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

#配置负载分配策略
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs
#加载模块
[root@localhost network-scripts]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost network-scripts]#systemctl start ipvsadm.service
[root@localhost network-scripts]#ipvsadm -C
[root@localhost ~]#ipvsadm -A -t 192.168.91.188:80 -s rr
[root@localhost ~]#ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.101:80 -g
[root@localhost ~]#ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.103:80 -g
#添加真实服务器-a  指定VIP地址及TCP端口-t   指定RIP地址及TCP端口 -r 指定DR模式-g
[root@localhost network-scripts]#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.91.101:http          Route   1      0          0         
  -> 192.168.91.103:http          Route   1      0          0         
[root@localhost network-scripts]#ipvsadm-save >/etc/sysconfig/ipvsadm
#保存设置
6.2.2节点服务器
节点1
[root@7-1 ~]#systemctl stop firewalld.service
[root@7-1 ~]#setenforce 0
[root@7-1 ~]#yum install httpd -y
[root@7-1 ~]#systemctl start httpd
[root@7-1 ~]#cd /etc/sysconfig/network-scripts/
[root@7-1 network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@7-1 ~]#ifconfig lo:0 192.168.91.188/32
[root@7-1 ~]#ifconfig lo:0 192.168.91.188 255.255.255.255
[root@7-1 network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@7-1 network-scripts]#route add -host 192.168.91.188 dev lo:0
#设置路由
[root@7-1 network-scripts]#route -n
#开机执行命令,或者写入 /etc/profile 文件
[root@7-1 network-scripts]#vim /etc/rc.d/rc.local 
/usr/sbin/route add -host 192.168.91.188 dev lo:0
[root@7-1 network-scripts]#chmod +x /etc/rc.d/rc.local
[root@7-1 network-scripts]#ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 484 11月 17 16:56 /etc/rc.d/rc.local

[root@7-1 network-scripts]#vim /etc/sysctl.conf 
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@7-1 network-scripts]#sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2


节点2
[root@7-1 ~]#systemctl stop firewalld.service
[root@7-1 ~]#setenforce 0
[root@7-1 ~]#yum install httpd -y
[root@7-1 ~]#systemctl start httpd
[root@7-1 ~]#cd /etc/sysconfig/network-scripts/
[root@7-1 network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@7-1 network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=192.168.91.188
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@7-1 network-scripts]#route add -host 192.168.91.188 dev lo:0
#设置路由
[root@7-1 network-scripts]#route -n
#开机执行命令,或者写入 /etc/profile 文件
[root@7-1 network-scripts]#vim /etc/rc.d/rc.local 
/usr/sbin/route add -host 192.168.91.188 dev lo:0
[root@7-1 network-scripts]#chmod +x /etc/rc.d/rc.local
[root@7-1 network-scripts]#ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 484 11月 17 16:56 /etc/rc.d/rc.local

[root@7-1 network-scripts]#vim /etc/sysctl.conf 
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@7-1 network-scripts]#sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

标签:network,LVS,ipvsadm,192.168,集群,scripts,80,root
From: https://www.cnblogs.com/GrandOB/p/18276817

相关文章

  • Oracle 11gR2 RAC 集群服务启动与关闭总结
      关闭过程(CRS集群关闭->关闭数据库)1.关闭数据库:用oracl用户执行srvctl命令语法:srvctlstopdatabase-ddbname[-oimmediate]作用:可以一次性关闭dbname的所有实例[oracle@rac1 ~]$ srvctl stop database -d racdb  -停止所有节点上的实例然后查看状态:[oracle@ra......
  • 实战教你ElasticSearch-8.13集群搭建
    elasticsearch8.13集群部署elasticsearch8.13analysis-ikelastiknn环境准备(每台节点都需要修改)修改系统参数-----https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html(官方推荐)#vim/etc/security/limits.conf新增内容如下:*har......
  • 深入探索YARN集群:NodeManager内存配置与管理全攻略
    深入探索YARN集群:NodeManager内存配置与管理全攻略引言ApacheHadoopYARN(YetAnotherResourceNegotiator)作为Hadoop生态系统中的一个关键组件,为集群资源管理和作业调度提供了强大的支持。在YARN集群中,NodeManager(NM)扮演着资源管理和任务执行的重要角色。本文将深入探讨......
  • YARN集群的高可用性秘诀:ResourceManager故障转移全指南
    标题:YARN集群的高可用性秘诀:ResourceManager故障转移全指南引言在大数据时代,YARN作为Hadoop生态系统中的资源管理器,其稳定性和可靠性对于整个数据处理流程至关重要。当ResourceManager(RM)遇到故障时,如何快速恢复并继续执行任务,是衡量YARN集群健壮性的重要指标。本文将深入......
  • HBase:从基础操作到集群管理
    HBase简介HBase,一个由Apache软件基金会开发的分布式、面向列的NoSQL数据库,以其高性能和可扩展性在大数据领域占据着重要地位。HBase的基本概念HBase是基于Google的Bigtable模型构建的,它是一个分布式、可扩展、面向列的存储系统,适合于存储大量的非结构化和半结构化的稀疏数据集......
  • elasticsearch-7.17.15 集群安装部署及kibana配置
    一、物料准备(注意:必须版本一致):1、安装包 elasticsearch-7.17.15-linux-x86_64.tar.gz(这个版本的插件需要在线使用命令安装:/es/elasticsearch-7.17.15/bin/elasticsearch-plugininstallhttps://get.infini.cloud/elasticsearch/analysis-ik/7.17.15,或者用我的传送门) an......
  • 09--keepalived高可用集群
    前言:高可用集群配置是大型网站的一个基础,网站可用性的基础保障之一,这里将对应的概念知识和实操步骤进行整理与收集。1、基础概念详解1.1、高可用集群高可用集群(HighAvailabilityCluster,简称HACluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务......
  • 详解 ClickHouse 的分片集群
    一、简介分片功能依赖于Distributed表引擎,Distributed表引擎本身不存储数据,有点类似于MyCat之于MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据ClickHouse进行分片集群的目的是解决数据的横向扩容,通过分片把一份完整......
  • k8s集群搭建及对一些组件的简单理解(一)
    背景k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题。要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的;后来买了一台便宜的,所以就有了两台,但是不在一个zone,一个是广州,一个是成都,内网不通,感觉搭起来很麻烦,还没试过。要么是在本机的虚拟机上搞(vm......
  • 在线方式部署k8s+prometheus集群(kubesphere环境)
    前言:半月前在公司生产环境上离线部署了k8s集群和Prometheus+Grafana监控平台的搭建,下面我租用3台华为云服务器演示在线方式部署k8s(单master节点)+prometheus集群。下期再出一版离线方式部署k8s(双master节点)集群。安装步骤:安装Docker安装Kubernetes安装KubeSphere前置环境安......