LVS(Linux virual server)

LVS概念

VS:Virtual Server

RS:Real Server

CIP:Client IP

VIP: Virtual serve IP VS外网的IP

DIP: Director IP VS内网的IP

RIP: Real server IP

访问流程:CIP<-->VIP == DIP<-->RIP

lvs集群的类型

lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和 PORT实现转发 RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈 支持端口映射,可修改请求报文的目标PORT VS必须是Linux系统,RS可以是任意OS系统

lvs-dr: 操纵封装新的MAC地址

DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源 IP/PORT,以及目标IP/PORT均保持不变

lvs-tun: 在原请求IP报文之外新加一个IP首部

lvs-fullnat: 修改请求报文的源和目标IP

lvs集群中的增删改

管理集群服务中的增删改

-A #添加

-E #修改

-t #tcp服务

-u #udp服务

-s #指定调度算法,默认为WLC

-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver

-f #firewall mask 火墙标记 一个数字

管理集群中RealServer的曾增删改

-a #添加realserver

-e #更改realserver

-t #tcp协议

-u #udp协议

-f #火墙 标签

-r #realserver地址

-g #直连路由模式

-i #ipip隧道模式

-m #nat模式

-w #设定权重

-Z #清空计数器

-D #删除某条lvs策略

-C #清空lvs策略

-L #查看lvs策略

-n #不做解析

--rate :输出速率信息

NAT模式:

以rhel9为例:

环境配置

本地软件仓库:

mkdir /rhel9

mount /dev/sr0 /rhel9

echo mount /dev/sr0 /rhel9 >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

rm -fr /etc/yum.repos.d

mkdir /etc/yum.repos.d

cd /etc/yum.repos.d

vim rhel9.repo

dnf makecache

关闭所有火墙与selinux

systemctl  diable --now  firewalld

setenforce 0

四台虚拟机

一台做客户端

ip为 172.25.254.100

一台lvs

nat  ip :172.25.254.200

仅主机网卡ip:192.168.0.100

在lvs中打卡内核路由功能

vim /etc/sysctl.conf

两台web服务

webserver1:192.168.0.10 网关:192.168.0.100

安装http服务

dnf  install  httpd -y

echo webserver1 - 192.168.0.10 > /var/www/html/index.html

systemctl enable --now httpd

webserver2:192.168.0.20 网关:192.168.0.100 

安装http服务

dnf  install  httpd -y

echo webserver2 - 192.168.0.20 > /var/www/html/index.html

systemctl enable --now httpd

测试:

在lvs上:

            

环境配置完成

LVS配置:

下载lvs软件(ipvsadm)

dnf install ipvsadm

在lvs添加调度策略

ipvsadm -A -t 172.25.254.200:80 -s rr
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -m
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -m

查看策略

在客户机上测试:

修改为权重调用算法

ipvsadm -C(清除lvs策略)
ipvsadm -E -t 172.25.254.200:80 -s wrr
ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -m -w 2
ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.20:80 -m -w 1

测试

DR模式:

环境配置

本地软件仓库:

mkdir /rhel9

mount /dev/sr0 /rhel9

echo mount /dev/sr0 /rhel9 >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

rm -fr /etc/yum.repos.d

mkdir /etc/yum.repos.d

cd /etc/yum.repos.d

vim rhel9.repo

dnf makecache

关闭所有防火墙与selinux

systemctl disable --now firewalld
setenforce 0

rhel9为例:

五台虚拟机:一台client(客户机),一台route(路由器),一台LVS,两台web服务器

client                ip(网卡为nat模式)           172.25.254.100   网关:172.25.254.200

route                ip1(网卡为nat模式)         172.25.254.200

                        ip2(网卡为仅主机模式)    192.168.0.100

LVS                  ip1(网卡为仅主机模式)   192.168.0.50       网关:192.168.0.100

                        ip2(VIP)                           192.168.0.30

将VIP加到环回网卡上(子网掩码为32,不然会崩)

ip a a 192.168.0.30/32 dev lo

webserver1      ip(网卡为仅主机模式) 192.168.0.10       网关:192.168.0.100

将VIP加到环回网卡上(子网掩码为32,不然会崩)

ip a a 192.168.0.30/32 dev lo

VIP不对外响应

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

​echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

​echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

​echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

安装http服务

dnf install httpd -y

echo webserver1 - 192.168.0.10 > /var/www/html/index.html

systemctl enable --now httpd

webserver2       ip(网卡为仅主机模式)  192.168.0.20      网关:192.168.0.100

将VIP加到环回网卡上(子网掩码为32,不然会崩)

ip a a 192.168.0.30/32 dev lo

VIP不对外响应

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

​echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

​echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

​echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

安装http服务

dnf install httpd -y

echo webserver2 - 192.168.0.20 > /var/www/html/index.html

systemctl enable --now httpd

测试:

在lvs上:

环境配置完成

LVS配置

LVS策略

ipvsadm   -A  -t  192.168.0.30:80  -s  wrr

ipvsadm   -a  -t  192.168.0.30:80  -r  192.168.0.10:80  -g(直连路由模式)  -w  1  

​ipvsadm   -a  -t  192.168.0.30:80  -r  192.168.0.20:80  -g  -w  2        

查看策略:

测试:

火墙标签(在DR模式的基础上)

FWM:FireWall Mark

MARK target 可用于给特定的报文打标记

--set-mark value

在两台web服务器上都安装mod_ssl并重启http服务(同时开放80和443端口)

dnf install mod_ssl -y

systemctl restart httpd

轮询规则中可能会遇到的错误

以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出现了一个轮询错乱的问题

删除并重写lvs策略:

ipvsadm -A -t 192.168.0.30:80 -m rr

ipvsadm -A -t 192.168.0.30:443 -m rr

ipvsadm -a -t 192.168.0.30:80 -r 192.168.0.10:80 -g

ipvsadm -a -t 192.168.0.30:443 -r 192.168.0.10:443 -g

ipvsadm -a -t 192.168.0.30:80 -r 192.168.0.20:80 -g

ipvsadm -a -t 192.168.0.30:443 -r 192.168.0.20:443 -g

查看策略:

测试:

当访问vip时两次调度都到了webserver1

解决轮询错误:

LVS中为端口做标记

iptables -t mangle -A PREROUTING -d 192.168.0.30 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

删除并重写lvs策略

ipvsadm -C

ipvsadm -A -f 66 -s rr

ipvsadm -a -f 66 -r 192.168.0.10 -g

ipvsadm -a -f 66 -r 192.168.0.20 -g

查看策略:

测试:

LVS持久连接(在DR模式火墙标签的基础上)

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把这个源的主机调度到了那个RS上

如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到 同一台RS上。

如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS上

更改lvs策略:

ipvsadm -E -f 66 -m rr -p 3000

测试:

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值