LVS/NAT负载均衡实操

添加规则,并做持久操作

1 添加规则

复制代码
[root@lvs ~]# ipvsadm -A -t 10.36.178.183:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3
[root@lvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1

[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  10.36.178.183:80 wrr
  -> 192.168.65.201:80            Masq    3      0          0
  -> 192.168.65.202:80            Masq    1      0          0

2 持久操作

单纯添加,重启服务器后,规则会失效。为了不让规则失效,我们可以这样做:

第一种:将规则导入到文本文件中,然后手动导入规则

复制代码
[root@lvs ~]# ipvsadm -S
-A -t lvs.com:http -s wrr
-a -t lvs.com:http -r node1:http -m -w 3
-a -t lvs.com:http -r node2:http -m -w 1

[root@lvs ~]# ipvsadm -S -n		# -n: 以数字形式显示
-A -t 10.36.178.183:80 -s wrr
-a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3
-a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1

# 将规则导入到ipvsrule文件中
[root@lvs ~]# ipvsadm -S -n > ./ipvsrule
[root@lvs ~]# cat ipvsrule
-A -t 10.36.178.183:80 -s wrr
-a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3
-a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1

# 清除规则
[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 -R < ipvsrule
# 查看规则

第二种:开启ipvsadm服务,创建存放规则的配置目录,最后设置ipvsadm开机自启

复制代码
[root@lvs ~]# systemctl start ipvsadm.service	# 启动失败
Job for ipvsadm.service failed because the control process exited with error code.
See "systemctl status ipvsadm.service" and "journalctl -xeu ipvsadm.service" for details.

[root@lvs ~]# journalctl -xeu ipvsadm.service
# 查看错误原因:"/etc/sysconfig/ipvsadm:没有那个文件" 故咱们自己创建一个
# 再次启动ipvsadm.service就成功了

[root@lvs ~]# touch /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -R < ipvsrule			    # 手动导入规则

[root@lvs ~]# systemctl start ipvsadm.service	# 启动ipvsadm.service
# 启动ipvsadm.service的时候干哪些事情:
	1.ipvsadm -R < /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl enable ipvsadm.service --now

[root@lvs ~]# systemctl stop ipvsadm.service	# 停止ipvsadm.service
# 停止ipvsadm.service时干哪些事情: 
	1.先保存规则到/etc/sysconfig/ipvsadm
	2.ipvsadm -C

LVS 负载均衡集群企业级应用实战

1LVS/NAT模式

1.配置规则

复制代码
[root@lvs ~]# ipvsadm -A -t 10.36.178.183:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3
[root@lvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1
[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  10.36.178.183:80 wrr
  -> 192.168.65.201:80            Masq    3      0          0
  -> 192.168.65.202:80            Masq    1      0          0

2.为负载均衡器添加一块网卡,保证负载均衡器和服务器正常通信

负载均衡器左边是桥接模式,连接客户端,右边是NAT模式连接后台服务器,因此负载均衡器需要两张网卡(桥接与NAT)。

​ 负载均衡器左边桥接模式ip作用:桥接网段用户能够通过负载均衡器连接到服务器。

​ 负载均衡器右边NAT模式ip作用:连接后端两台服务器。

  • 添加网卡时需要注意:

​ 因为我是直接复制的/etc/NetworkManager/system-connections/ens33.nmconnection为ens33.nmconnection,导致ens33和ens36网卡的uuid一样,一直起不来ens36。

  • 解决办法:删掉复制过来的uuid即可。

3.开启路由转发,让NAT可以连接到桥接

复制代码
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@lvs ~]# sysctl -p	# 确保打开路由转发,加载sysctl.conf配置

4.两台服务器将lvs作为网关

复制代码
# 添加一条指向到负载均衡器的路由,ip为负载均衡器内能够与后端服务器通信的ip
[root@node1 ~]# ip r add default via 192.168.65.168
[root@node2 ~]# ip r add default via 192.168.65.168
[root@node1 ~]# ip r		# 查看路由
default via 192.168.65.168 dev ens33
default via 192.168.65.2 dev ens33 proto static metric 100

如果不设置lvs作为网关的话,这两台服务器就只有输入,没有输出。

5.两台服务器安装nginx

复制代码
[root@node1 ~]# yum install -y nginx
[root@node2 ~]# yum install -y nginx
[root@node1 ~]# rm -rf /usr/share/nginx//html/*
[root@node2 ~]# rm -rf /usr/share/nginx//html/*

6.配置nginx文件

复制代码
[root@node1 ~]# vim /etc/nginx/nginx.conf
# keepalive_timeout:Nginx 处理的每个请求均有相应的超时设置
keepalive_timeout  65; ==> keepalive_timeout   0;
[root@node2 ~]# vim /etc/nginx/nginx.conf
keepalive_timeout  65; ==> keepalive_timeout   0;

# curl没有请求超时
[root@lvs ~]# curl http://10.36.178.183 

7.查看规则

复制代码
[root@lvs ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port         Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.36.178.183:80             63     1199      646   240404    68671
  -> 192.168.65.201:80            47     1031      552   223177    61187
  -> 192.168.65.202:80            16      168       94    17227     7484

[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  10.36.178.183:80 wrr
  -> 192.168.65.201:80            Masq    3      2          13
  -> 192.168.65.202:80            Masq    1      0          4
  
[root@lvs ~]# ipvsadm -Z	# 虚拟服务器表计数(当前连接数量)清零
[root@lvs ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port         Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.36.178.183:80           0        0        0        0        0
  -> 192.168.65.201:80          0        0        0        0        0
  -> 192.168.65.202:80          0        0        0        0        0
相关推荐
威嵌神州7 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
Decay__8 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
java_logo8 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
打工仔折腾 AI13 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
无奈笑天下13 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
fengkai454514 小时前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS16 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
雪落漂泊18 小时前
Liunux进程(七):程序控制篇(中)
linux·运维·windows
分布式存储与RustFS18 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准