Linux服务之lvs集群与dr模式部署

目录

一.lvs相关概述

1.lvs集群的工作模式

2.lvs调度算法

3.ipvsadm工具

二.DR模式部署


一.lvs相关概述

1.lvs集群的工作模式

  • lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
  • lvs-dr:操纵封装新的MAC地址(直接路由)
  • lvs-tun:隧道模式
  • lvs-fullnat:修改请求报文的源和目标IP

2.lvs调度算法

根据其调度时是否考虑各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缓存

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

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

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

Overhead=activeconns*256+inactiveconns

active 活动连接

inactive 非活动连接

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等

3.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

二.DR模式部署

调度器 - ubunutu 2204

apt update

apt install ipvsadm -y

ifconfig ens33:0 192.168.91.188/24 #添加虚拟ip

ipvsadm -A -t 192.168.91.188:80 -s rr

ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.100:80 -g

ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.101:80 -g

ipvsadm -Ln

vim /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

sysctl -p

真实服务器1:

yum install epel-release -y

yum install nginx -y

systemctl start nginx

echo "7-1" > /usr/share/nginx/html/index.html

vim /etc/sysctl.conf

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

sysctl -p

ifconfig ens33:0 192.168.91.188/24 #添加虚拟ip

真实服务器2:

yum install epel-release -y

yum install nginx -y

systemctl start nginx

echo "7-2" > /usr/share/nginx/html/index.html

vim /etc/sysctl.conf

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

sysctl -p

ifconfig ens33:0 192.168.91.188/24 #添加虚拟ip

不要再集群内测试

新打开一台测试

curl 192.168.91.188

相关推荐
余厌厌厌40 分钟前
go语言学习 第9章:映射(Map)
服务器·学习·golang
waving-black1 小时前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha1 小时前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
筏.k2 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao2 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC2 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
科文小白狼2 小时前
Linux下VSCode开发环境配置(LSP)
linux·vscode·里氏替换原则·lsp
jugt4 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
多多*5 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
何双新6 小时前
第21讲、Odoo 18 配置机制详解
linux·python·开源