管理集群工具之LVS
集群概念
将很多机器组织在一起,作为一个整体对外提供服务 集群在扩展性、性能方面都可以做到很灵活 集群分类
负载均衡集群:Load Balance
高可用集群:High Availability
高性能计算:High Performance Computing
LVS
LVS
:Linux Virtual Server
,Linux
虚拟服务器实现负载均衡集群 作者:章文嵩。国防科技大学读博士期间编写 LVS
的工作模式
NAT
:网络地址转换DR
:路由模式TUN
:隧道模式 术语
调度器:LVS
服务器 真实服务器:提供服务的服务器 VIP
:虚拟地址,提供给用户访问的地址DIR
:指定地址,LVS
服务器上与真实服务器通信的地址RIP
:真实地址,真实服务器的地址 常见的调度算法,共10个,常用的有4个
轮巡rr
:真实服务器轮流提供服务(一共有两台服务器,第一个给A,第二个给B,第三个再给A…) 加权轮巡wrr
:根据服务器性能设置权重,权重大的服务器得到分配的请求就越多 最少连接lc
:根据真实服务器的连接数分配请求,优先分配连接少的 加权最少连接wlc
:类似wrr
,根据权重分配请求 ipvsadm
使用说明
-A
:添加虚拟服务器-E
:编辑虚拟服务器-D
:删除虚拟服务器-t
:添加tcp
服务器-u
:添加udp
服务器-s
:指定调度算法。如轮巡rr
、加权轮巡wrr
、最小连接lc
、加权最小连接wlc
-a
:添加虚拟服务器后,向虚拟服务器中加入真实服务器-r
:指定真实服务器-w
:设置权重-m
:指定工作模式为NAT
-g
:指定工作模式为DR
配置LVS NAT模式
NAT
模式:通过lvs
服务器来接收用户的请求,然后通过调度算法分配请求到真实服务器,然后真实服务器返回数据给lvs
服务器,再有lvs
服务器返回给用户
client
:eth0
->192.168.88.10,gateway
->192.168.88.5lvs
:eth0
->192.168.88.5;eth1
->192.168.99.5web1
:eth0
->192.168.99.100,gateway
->192.168.99.5web2
:eth0
->192.168.99.200,gateway
->192.168.99.5
环境准备
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168 .88.10/24 ipv4.gateway 192.168 .88.5 connection.autoconnect yes
nmcli connection up eth0
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168 .88.5/24 connection.autoconnect yes
nmcli connection up eth0
nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168 .99.5/24 connection.autoconnect yes
nmcli connection up eth1
sysctl -a
sysctl -a | grep ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168 .99.100/24 ipv4.gateway 192.168 .99.5 connection.autoconnect yes
nmcli connection up eth0
yum install -y httpd
systemctl enable httpd --now
echo "web1" > /var/www/html/index.html
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168 .99.200/24 ipv4.gateway 192.168 .99.5 connection.autoconnect yes
nmcli connection up eth0
yum install -y httpd
systemctl enable httpd --now
echo "web1" > /var/www/html/index.html
相关配置
yum install -y ipvsadm
ipvsadm -A -t 192.168 .88.5:80 -s rr
ipvsadm -a -t 192.168 .88.5:80 -r 192.168 .99.100 -m
ipvsadm -a -t 192.168 .88.5:80 -r 192.168 .99.200 -m
ipvsadm -Ln
ipvsadm -D -t 192.168 .88.5:80 -s wrr
ipvsadm -a -t 192.168 .88.5:80 -r 192.168 .99.100 -w 1 -m
ipvsadm -a -t 192.168 .88.5:80 -r 192.168 .99.200 -w 2 -m
配置LVS DR模式
DR
模式相比于NAT
模式,它不会因为lvs
服务器的带宽而影响业务DR
模式:通过lvs
服务器来接收请求,然后分配请求到真实服务器,然后通过真实服务器的虚拟网卡直接返回给用户
client
:eth0
->192.168.88.10lvs
:eth0
->192.168.88.5;eth0:0
->192.168.88.15web1
:eth0
->192.168.88.100;lo:0
->192.168.88.15/32web2
:eth0
->192.168.88.200;lo:0
->192.168.88.15/32
环境准备
nmcli connection delete eth1
vim ifcfg-eth0
TYPE = Ethernet
BOOTPROTO = none
NAME = eth0
DEVICE = eth0
ONBOOT = yes
IPADDR = 192.168 .88.5
PREFIX = 24
GATEWAY = 192.168 .88.254
ifdown eth0; ifup eth0
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
TYPE = Ethernet
BOOTPROTO = none
NAME = eth0:0
DEVICE = eth0:0
ONBOOT = yes
IPADDR = 192.168 .88.15
PREFIX = 24
ifdown eth0:0; ifup eth0:0
ifconfig
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0
TYPE = Ethernet
BOOTPROTO = none
NAME = eth0
DEVICE = eth0
ONBOOT = yes
IPADDR = 192.168 .88.200
PREFIX = 24
GATEWAY = 192.168 .88.254
ifdown eth0; ifup eth0
cp ifcfg-eth0 ifcfg-lo:0
TYPE = Ethernet
BOOTPROTO = none
NAME = lo:0
DEVICE = lo:0
ONBOOT = yes
IPADDR = 192.168 .88.15
PREFIX = 32
ifdown lo:0; ifup lo:0
ifconfig
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0
TYPE = Ethernet
BOOTPROTO = none
NAME = eth0
DEVICE = eth0
ONBOOT = yes
IPADDR = 192.168 .88.100
PREFIX = 24
GATEWAY = 192.168 .88.254
ifdown eth0; ifup eth0
cp ifcfg-eth0 ifcfg-lo:0
TYPE = Ethernet
BOOTPROTO = none
NAME = lo:0
DEVICE = lo:0
ONBOOT = yes
IPADDR = 192.168 .88.15
PREFIX = 32
ifdown lo:0; ifup lo:0
ifconfig
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
相关配置
ipvsadm -D -t 192.168 .88.5:80
ipvsadm -A -t 192.168 .88.15:80 -s lc
ipvsadm -a -t 192.168 .88.15:80 -r 192.168 .88.100 -w 100 -g
ipvsadm -a -t 192.168 .88.15:80 -r 192.168 .88.200 -w 200 -g
ipvsadm -E -t 192.168 .88.15:80 -s wlc
ipvsadm -Ln