LVS(Linux virual server)

LVS 全称 Linux Virtual Server ,是 Linux 内核层实现的高性能、高可用的负载均衡集群技术,由章文嵩博士开发,目前是 Linux 内核的标准模块之一。它的核心作用是将前端的请求流量分发到后端多台真实服务器(Real Server)上,从而提升服务的并发处理能力和可用性。

一、NAT模式环境设定

vs主机的IP配置

eth0(NAT)

root@vs /# ./vmset.sh eth0 172.25.254.10 rs1 noroute

root@vs /# nmcli connection modify eth0 ipv4.gateway 172.25.254.2

eth1(仅主机)

root@vs /# ./vmset.sh eth1 192.168.1.10 vs noroute

root@vs system-connections# nmcli connection modify eth1 ipv4.gateway 192.168.1.2

root@vs system-connections# dnf install ipvsadm.x86_64 #下载ipvsadm工具

rs1主机配置

eth0(仅主机)

root@rs1 /# ./vmset.sh eth0 192.168.1.20 rs1 noroute

root@rs1 /# nmcli connection modify eth0 ipv4.gateway 192.168.1.2

root@rs1 /# dnf install httpd-y

root@rs1 /# echo rs1 192.168.1.20 > /var/www/html/index.html

rs2

eth0(仅主机)

root@rs2 /# ./vmset.sh eth0 192.168.1.30 rs2 noroute

root@rs2 /# nmcli connection modify eth0 ipv4.gateway 192.168.1.2

root@rs2 /# dnf install httpd-y

root@rs2 /# echo rs2 192.168.1.30 > /var/www/html/index.html

vs主机ipvsadm配置

root@vs system-connections# ipvsadm -A -t 172.25.254.10:80 -s wrr

root@vs system-connections# ipvsadm -a -t 172.25.254.10:80 -r 192.168.1.20:80 -m -w 1

root@vs system-connections# ipvsadm -a -t 172.25.254.10:80 -r 192.168.1.30:80 -m -w 1 #10和20主机都采用权重轮询算法

root@vs system-connections# ipvsadm -Ln #写完查看规则

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.25.254.10:80 wrr

-> 192.168.1.20:80 Masq 1 0 0

-> 192.168.1.30:80 Masq 1 0 0

运行结果

规则持久化

root@vs system-connections# ipvsadm-save -n > /mnt/ipvs.rule #将写完后的规则保存到/mnt/ipvs.rule

DR模式

路由器设置

开启内核路由功能并查看是否开启

root@router \~# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf

root@router \~# sysctl -p

net.ipv4.ip_forward = 1

数据转发策略

root@router \~# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.100

root@router \~# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.20

rs1和rs2主机lo接口配置

root@rs1 system-connections# cp -p eth1.nmconnection lo.nmconnection

root@rs1 system-connections# vim lo.nmconnection

connection

id=lo

type=loopback

interface-name=lo

ipv4

method=manual

address1=127.0.0.1/8

address2=192.168.1.201/32

禁止arp响应

#arp禁止响应

root@rs1 \~# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

root@rs1 \~# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

root@rs1 \~# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

root@rs1 \~# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

调度器配置

root@vs system-connections# vim lo.nmconnection

connection

id=lo

type=loopback

interface-name=lo

ipv4

method=manual

address1=127.0.0.1/8

address2=192.168.1.201/32 #192.168.1.201是vip

ipvsadm配置

root@vs system-connections# ipvsadm -A -t 192.168.1.201:80 -s rr

root@vs system-connections# ipvsadm -a -t 192.168.1.201:80 -r 192.168.1.20:80 -g

root@vs system-connections# ipvsadm -a -t 192.168.1.201:80 -r 192.168.1.30:80 -g

测试结果

利用火墙标记轮询错误

rs主机下载mod_sll工具

root@rs1 \~# dnf install mod_ssl -y

root@rs2 \~# dnf install mod_ssl -y

两台主机重启httpd服务

root@rs1 \~# systemctl restart httpd

root@rs2 \~# systemctl restart httpd

修改轮询策略

root@vs \~# ipvsadm -A -t 192.168.1.10:80 -s rr

root@vs \~# ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.20 -g

root@vs \~# ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.30 -g

root@vs \~# ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.20:443 -g

root@vs \~# ipvsadm -a -t 192.168.1.10:443 -r 192.168.1.20:443 -g

root@vs \~# ipvsadm -a -t 192.168.1.10:443 -r 192.168.1.30:443 -g

使用火墙标记访问vip的80和443的所有数据包,设定标记为6666,然后对此标记进行负载

root@vs system-connections# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666

root@vs system-connections# ipvsadm -A -f 6666 -s rr

root@vs system-connections# ipvsadm -a -f 6666 -r 192.168.1.20 -g

root@vs system-connections# ipvsadm -a -f 6666 -r 192.168.1.30 -g

测试结果

利用持久连接实现会话粘滞

root@vs system-connections# ipvsadm -A -f 6666 -s rr -p 1

测试结果

相关推荐
码农学院2 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
大耳朵-小飞象11 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技11 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++12 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室13 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
生活爱好者!14 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
groundhappy15 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
尽兴-16 小时前
企业业务系统架构选型与渐进式演进
运维·系统架构·devops
通信小小昕16 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
壮哥_icon16 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化