LVS
lvs简介
LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩,阿里的四层SLB(Server LoadBalance)是基于LVS+keepalived实现。
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
lvs集群的类型
lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT
lvs-dr: 操纵封装新的MAC地址
lvs-tun: 在原请求IP报文之外新加一个IP首部
lvs-fullnat: 修改请求报文的源和目标IP
LVS的nat模式
实验环境:三台虚拟机:lvs主机、webserver1、webserver2
lvs配置
安装web服务:dnf install httpd -y
修改路由信息:(网卡eth0 nat模式,eth1仅主机模式)
在lvs中打开内核路由功能:vim /etc/sysctl.conf
webserver配置
下载httpd服务 dnf install httpd -y
修改路由信息:
webserver2配置同理,ip为192.168.0.20,三台主机均需要关闭防火墙。
测试
ipvsadm使用
lvs主机
安装ipvsadm:dnf install ipvsadm -y
查看 ipvsadm -Ln
测试
ipvasdm相关命令
1.管理集群服务中的增删改
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A #添加
-E #修改
-t #tcp服务
-u #udp服务
-s #指定调度算法,默认为WLC
-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f #firewall mask 火墙标记,是一个数字
2.管理集群中RealServer的曾增删改
-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
-i #ipip隧道模式
-m #nat模式
-w #设定权重
-Z #清空计数器
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate :输出速率信息
DR模式
实验环境需要五台主机:lvs,router,client,web1,web2
lvs
删除eth0网卡
[root@lvs ~]# nmcli connection delete eth0
配置eth1网卡信息
[root@lvs ~]# vmset.sh eth1 192.168.0.50
[root@lvs ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
[root@lvs ~]# nmcli connection reload
[root@lvs ~]# nmcli connection up eth1
查看网卡信息
router
router主机开启两个网卡
[root@router ~]# vmset.sh eth0 172.25.254.100
[root@router ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[root@router ~]# nmcli connection reload
[root@router ~]# nmcli connection up eth0
[root@router ~]# vmset.sh eth1 192.168.0.100
[root@router ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
[root@router ~]# nmcli connection reload
[root@router ~]# nmcli connection up eth1
打开内核路由功能
查看eth0网卡信息
[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual
查看eth1网卡信息
[root@client ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection
[connection]
id=eth1
type=ethernet
interface-name=eth1
[ipv4]
address1=192.168.0.100/24
method=manual
client
配置网卡信息
[root@client ~]# vmset.sh eth0 172.25.254.200
[root@client ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[root@client ~]# nmcli connection reload
[root@client ~]# nmcli connection up eth0
查看
[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
address1=172.25.254.200/24,172.25.254.100
method=manual
web
两台webserver配置基本相同
webserver1:192.168.0.10
webserver2:192.168.0.20
在两台webserver主机中设置vip不对外响应
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
lvs和两台webserver添加vip:ip a a 192.168.0.200/32 dev lo
测试
LVS火墙标记
两台web服务器安装
[root@webserver1 ~]# yum install mod_ssl -y
安装后重启httpd
[root@webserver1 ~]# systemctl restart httpd
lvs中配置策略:
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g
查询结果 curl -k https://192.168.0.200
lvs打标签
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
清除原先的策略
[root@lvs ~]# ipvsadm -C
设定新的调度规则
测试