LVS全称是Linux Virtual Server,即Linux虚拟服务器。是章文嵩开发的一个国产开源负载均衡软件。LVS主要用于多服务器的负载均衡,工作在网络层,可以实现高性能、高可用的服务器集群技术。
LVS部署命令ipvsadm
集群服务的增删改
ipvsadm 增删选项 服务选项 IP地址:端口号 其它选项
增删选项:
-A:添加
-E:修改
-D :删除
服务选项:
-t :tcp服务
-u:udp服务
其它选项:
-s:指定调度算法,在此次实验中使用rr(轮询调度算法),wrr(带权重的轮询调度算法)
-p:设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f:firewall mask 火墙标记,是一个数字
集群中RealServer的增删改
ipvsadm 增删改选项 服务选项 集群服务IP地址:端口号 -r 真实访问的IP地址:端口号 连接模式 -w
增删改选项:
-a:添加一个realserver
-e:修改realserver
-d:删除一个realserver
服务选项:
-t:tcp协议
-u:udp协议
-f:火墙标签
-r:realserver地址
连接模式:
-g:直连路由模式
-i: 隧道模式
-m:nat模式
-w:设置权重
部署命令补充:
ipvsadm -Z 服务选项 服务IP地址:端口号
清空对应IP的集群服务计数器
ipvsadm -C:清空lvs策略
ipvsadm -Ln --rate:查看lvs策略,并显示输出速率信息
部署NAT模式集群
实验环境准备:
四台虚拟机,1台LVS,1台测试客户机,两台提供http服务的主机
LVS配置
双网卡,nat模式的ens160,仅主机模式的ens224;nat模式的ens160用来于客户机连接,仅主机模式的ens224用来连接两个Server主机
nmcli device connect ens224 #连接增加的网卡
nmcli connection modify ens160 ipv4.address 172.25.254.10/24 ipv4.gateway 172.25.254.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli connection modify ens224 ipv4.address 192.168.0.10/24 ipv4.gateway 192.168.0.2 ipv4.method manual autoconnect yes
nmcli c up ens224
打开内核路由功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
安装ipvsadm
dnf install ipvsadm -y
添加策略
ipvsadm -A -t 172.25.254.10:80 -s rr
ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.11:80 -m
ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.12:80 -m
关闭防火墙和SELinux
systemctl disable --now firewalld
setenforce 0
WebServer1配置
WebServer服务机网卡使用主机模式
nmcli c modify ens160 ipv4.address 192.168.0.11/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html
WebServer2配置
WebServer服务机网卡使用主机模式
nmcli c modify ens160 ipv4.address 192.168.0.12/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server2 > /var/www/html/index.html
客户机配置
客户机网卡使用nat模式并关闭防火墙和SELinux
nmcli c modify ens160 ipv4.address 172.25.254.11/24 ipv4.gateway 172.25.254.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
systemctl disabel --now firewalld
setenforce 0
在客户机中测试
部署DR模式集群
实验环境准备:
五台虚拟机,1台router路由器,1台LVS,1台测试客户机,两台提供http服务的主机
Router配置:
双网卡,nat模式的ens160,仅主机模式的ens224;nat模式的ens160用来于客户机连接,仅主机模式的ens224用来连接LVS主机
nmcli device connect ens224 #连接增加的网卡
nmcli connection modify ens160 ipv4.address 172.25.254.20/24 ipv4.gateway 172.25.254.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli connection modify ens224 ipv4.address 192.168.0.20/24 ipv4.gateway 192.168.0.2 ipv4.method manual autoconnect yes
nmcli c up ens224
关闭防火墙和SELinux
systemctl disable --now firewalld.service
setenforce 0
LVS配置
LVS服务机网卡使用主机模式并设置VIP
nmcli c modfiy ens224 ipv4.address 192.168.0.10/24 ipv4.gateway 192.168.0.20 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens224
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo
安装ipvsadm
dnf install ipvsadm -y
添加策略
ipvsadm -A -t 192.168.0.100:80 -s wrr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.12:80 -g
关闭防火墙和SELinux
systemctl disable --now firewalld
setenforce 0
WebServer1配置
WebServer服务机网卡使用主机模式并添加VIP
nmcli c modify ens160 ipv4.address 192.168.0.11/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo
安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html
解决VIP相应问题
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
WebServer2配置
WebServer服务机网卡使用主机模式并添加VIP
nmcli c modify ens160 ipv4.address 192.168.0.12/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo
安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html
解决VIP相应问题
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
客户机配置
客户机网卡使用nat模式并关闭防火墙和SELinux
nmcli c modify ens160 ipv4.address 172.25.254.11/24 ipv4.gateway 172.25.254.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
systemctl disabel --now firewalld
setenforce 0
在客户机中测试
防火墙标签解决轮询错误
在这个实验中,我们可以继续使用上个实验的模式
在WebServer1和WebServer2上安装mod_ssl,使用https服务
dnf install mod_ssl -y
systemctl restart httpd
清空原有的策略,增加新的策略
ipvsadm -C
ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -A -t 192.168.0.100:443 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.12:80 -g
ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.12:80 -g
测试问题
在LVS中设定端口标签并更改策略
iptables -t mangle -A PREROUTING -d 192.168.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
ipvsadm -A -f 66 -s rr
ipvasdm -a -f 66 -r 192.168.0.11 -g
ipvsadm -a -f 66 -r 192.168.0.11 -g
ipvsadm -a -f 66 -r 192.168.0.12 -g
测试结果