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

相关推荐
珊珊而川9 分钟前
ChatPromptTemplate创建方式比较
服务器·langchain
欧先生^_^2 小时前
Linux内核可配置的参数
linux·服务器·数据库
若风的雨2 小时前
【deekseek】P2P通信路由过程
服务器·网络协议·p2p
海尔辛2 小时前
学习黑客5 分钟读懂Linux Permissions 101
linux·学习·安全
Python私教2 小时前
征服Rust:从零到独立开发的实战进阶
服务器·开发语言·rust
王RuaRua3 小时前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
曼岛_3 小时前
[架构之美]linux常见故障问题解决方案(十九)
linux·运维·架构
tan180°4 小时前
Linux进程信号处理(26)
linux·c++·vscode·后端·信号处理
大神的风范4 小时前
从0开始学linux韦东山教程第三章问题小结(4)
linux·服务器
sz66cm4 小时前
Linux基础 -- SSH 流式烧录与压缩传输笔记
linux·笔记·ssh