Linux虚拟服务器(LVS)了解使用
LVS术语
DIP:调度器连接后端节点服务器的IP地址
VIP:虚拟IP地址一公布给用户访问的虚拟IP地址
RIP:真实IP地址一集群节点上使用的IP地址
Director Server: 调度服务器,将负载分发到RealServer的服务器
Real Server: 真实服务器,真正提供应用服务的服务器
LVS工作模式
NAT -通过网络地址转换实现的虚拟服务器,-大并发访问时,调度器的性能成为瓶颈
DR -直接使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意忽略MAC地址广播
TUN -通过隧道方式实现虚拟服务器
LVS目前实现了10种调度算法常用调度算法有4种
-轮询(Round Robin)
-加权轮询(Weighted Round Robin)
-最少连接(Least Connections)
-加权最少连接(Weighted Least Connections)
-源地址散列(Source Hashing)
-目标地址散列(Destination Hashing)
-基于局部性的最少链接
-带复制的基于局部性最少链接
-最短的期望的延迟
-最少队列调度
部署LVS-NAT集群
client proxy web1 web2 配置ip 网关如下
[root@client ~]# ifconfig ens33
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255
[root@client ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.100 0.0.0.0 UG 100 0 0 ens33
[root@proxy ~]# ifconfig ens33
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
[root@proxy ~]# ifconfig ens37
inet 192.168.4.100 netmask 255.255.255.0 broadcast 192.168.4.255
[root@web1 ~]# ifconfig ens33
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.4.255
[root@web1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.100 0.0.0.0 UG 100 0 0 ens33
[root@web1 html]# ip route show #也可以查看网关
default via 192.168.4.100 dev ens33 proto static metric 100 #网关
192.168.4.0/24 dev ens33 proto kernel scope link src 192.168.4.11 metric 100
[root@web2 ~]# ifconfig ens33
inet 192.168.4.12 netmask 255.255.255.0 broadcast 192.168.4.255
[root@web2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.100 0.0.0.0 UG 100 0 0 ens33
设置Web服务器
[root@web1 ~]# yum -y install httpd #安装软件,web2 同web1操作
[root@web1 ~]# echo "192.168.4.11" > /var/www/html/index.html #创建网页文件
[root@web2 ~]# systemctl restart httpd
[root@proxy ~]# curl http://192.168.4.11
192.168.4.11
部署LVS-NAT模式调度器proxy
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #开启转发
[root@proxy ~]# sysctl -p
[root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@proxy ~]# yum -y install ipvsadm
2)创建集群服务器
[root@proxy ~]# ipvsadm -A -t 192.168.1.100:80 -s wrr
# -A(add)是创建添加虚拟服务器集群
# -t(tcp)后面指定集群VIP的地址和端口,协议是tcp协议 -u是UDP
# -s后面指定调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等等
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.11:80 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.12:80 -w 1 -m
#-a(add)往虚拟服务器集群中添加后端真实服务器IP,指定往-t 192.168.1.100:80这个集群中添加
#-r(real)后面跟后端真实服务器的IP和端口,这里不写端口默认是80端口
#-w(weight)指定服务器的权重,权重越大被访问的次数越多,英语词汇:weight(重量,分量)
#-m指定集群工作模式为NAT模式,如果是-g则代表使用DR模式,-i代表TUN模式
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 wrr
-> 192.168.4.11:80 Masq 1 0 0
-> 192.168.4.12:80 Masq 1 0 0
[root@client ~]# curl 192.168.1.100
192.168.4.12
[root@client ~]# curl 192.168.1.100
192.168.4.11
[root@client ~]# curl 192.168.1.100
192.168.4.12
[root@client ~]# curl 192.168.1.100
192.168.4.11
2.4 ipvsadm命令用法
使用命令增、删、改LVS集群规则
[root@proxy ~]# ipvsadm -A -t 192.168.1.100:80 -s wrr
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.11:80 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.12:80 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.13:80 -w 2 -m
[root@proxy ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 wrr
-> 192.168.4.11:80 Masq 1 0 0
-> 192.168.4.12:80 Masq 1 0 0
-> 192.168.4.13:80 Masq 2 0 0
3)修改调度器算法,-E -s将加权轮询修改为轮询)
[root@proxy ~]# ipvsadm -E -t 192.168.1.100:80 -s rr
[root@proxy ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 rr ... #之前是wrr
修改模式为DR模式 -e -t web真机 -g
[root@proxy ~]# ipvsadm -e -t 192.168.1.100:80 -r 192.168.4.11 -g
(使用-g为DR模式、-m为NAT模式、-i为tun)
6)创建另一个集群(算法为最少连接算法;使用-m选项,设置工作模式为NAT模式)
[root@proxy ~]# ipvsadm -A -t 192.168.1.100:3306 -s lc
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:3306 -r 192.168.4.11:3306 -m
[root@proxy ~]# ipvsadm -a -t 192.168.1.100:3306 -r 192.168.4.12:3306 -m
7)清空所有规则ipvsadm -C
[root@proxy ~]# ipvsadm -C
8)永久保存所有规则(非必须的操作)一般不这么操作
[root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
注意:ipvsadm只能临时生成。关机后会失效。永久规则需要确保ipvsadm服务为开机启动服务才可以。
(systemctl enable ipvsadm)。
ipvsadm命令用法
虚拟服务器
ipvsadm -A (add)添加盘拟服务器
ipvsadm -E (edit)修改虚拟服务器
ipvsadm -D (delete)删除虚拟服务器
ipvsadm -C (clear)清空所有
ipvsadm -L (list)查看LVS 规则表
-s [rwrr|le|wlc|sh] (scheduler)指定集群算法
ipvsadm -A -t|u 192.168.4.5:80 -s [算法] #添加虚拟服务器,协议为tcp (-t) 或者udp (-u)
ipvsadm -E -t|u 192.168.4.5:80 -s [算法] #修改虚拟服务器,协议为tcp或udp
ipvsadm -D -t|u 192.168.4.5:80 [算法] #删除虚拟服务器,协议为tcp或udp
ipvsadm -C #清空所有添加真实服务器
真实服务器
ipvsadm -a (add)添加真实服务器
ipvsadm -e (edit)修改真实服务器
ipvsadm -d (delete)删除真实服务器
ipvsadm -a -t|u 192.168.4.5:80 -r 192.168.2.100 [-g|i|m] [-w权重] #一般是-m(NAT模式) -g(DR模式),-i(隧道模式)
ipvsadm -e -t|u 192.168.4.5:80 -r 192.168.2.100 [-g|i|m] [-w权重] #修改真实服务器
ipvsadm -d -t|u 192.168.4.5:80 -r 192.168.2.100 #删除真实服务器
ipvsadm -Ln #查看LVS 规则表