LVS(Linux虚拟服务器)全拼:Linux Virtual Server
是一个虚拟的服务器集群系统
三种模式:
LVS-NAT:地址转换,
原理简述
客户端向VIP发起请求连接,DS在经过调度之后选取RS,然后RS返还数据给DS,DS将数据返还客户端,数据包来回都要经过NAT转换,所以DS将成为系统瓶颈。NAT支持10-20台服务器。需要有两个网卡。
=====================================================================
LVS-TUN:隧道
原理简述
客户端向VIP发送请求时,DS经过调度轮询后选择一个RS后使用隧道技术再次封装后向RS发送,RS通过隧道收到请求后拆开数据后得到目的IP,找到数据后将数据直接通过公网返还给客户端,可以跨网段。速度快。
=====================================================================
LVS-DR: 路由模式
原理简述
直接路由,此种方式是最常用的方式,当客户端向VIP发起请求时,数据包通过路由器发送到DS。然后DS不修改其源IP目的iP。经过调度后将目的MAC改为RS的MAC,然后RS找到数据后直接通过公网返回给客户端。
速度快,所有的DS和RS都在同一个物理网络中(交换机)并且都只有一块网卡。
=====================================================================
调度常用算法:
手动:
1. 轮叫调度 rr
2. 加权轮叫 wrr
自动:
3. 最少链接 lc
4. 加权最少链接 wlc
步骤:
所需环境,一台DS,两台RS,一台客户机,在一个网段中,全部关闭防火墙。操作过程中不可重启。
DS:
1.
#yum -y install ipvsadm #下载ipvsadm命令
参数:
-C:–clear 清除内核虚拟服务器表中的所有记录。
-A:增加一台新的虚拟服务器,也就是VIP
-a:在虚拟服务器中增加一台新的真实服务器
-t:–tcp 说明虚拟服务器提供的是tcp 的服务
-r:后跟真实的服务器ip
-s:指定调度算法
-g:指定LVS 的工作模式为直接路由模式
2.
#ipvsadm -C
#ipvsadm -A -t 192.168.29.250:80 -s rr
#ipvsadm -a -t 192.168.29.250:80 -r 192.168.29.138:80 -g
#ipvsadm -a -t 192.168.29.250:80 -r 192.168.29.139:80 -g
#ifconfig ens33:0 192.168.29.250 broadcast 192.168.29.250 netmask 255.255.255.255 up
给ens33网卡添加一块子网卡,IP地址设为250,并且设置为广播地址
#route add -host 192.168.29.250 dev ens33:0
访问192.168.29.250的时候指定一条路由,走子网卡,
RS:
1.
# ifconfig lo:0 192.168.29.250 broadcast 192.168.29.250 netmask 255.255.255.255 up
给LOOPBACK添加子网卡,设置IP为250,并设置为广播地址
# route add -host 192.168.29.250 dev lo:0
访问250指定路由是从设备LOOPBACK走
2.
配置内核参数文件
arp_ignore: 定义接收到ARP请求时的响应级别
0:默认,只有本地配置的有相应的地址才给与回应
1:仅仅在目标地址是本地地址,并是配置在请求进来的接口上的时候才给予响应
arp_announce:定义将自己的地址向外通告时的级别
0:默认,表示使用配置在任何接口的任何地址向外通告
1:尽量仅向目标网络通过余其网络匹配地址
2:仅向与本地接口上地址匹配的网络进行通告
# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
该配置文件重启失效,是写在内存中的。
如果要永久生效,要把参数写在/etc/sysctl.conf中
3.
给RS和DS端都安装httpd服务
在RS1,RS2端/var/www/html目录下创建index.html文件
编辑:this is 138 host
this is 139 host
启动httpd服务
4.
测试:
自己做实验时DS端的子IP不在了,所以不成功,记得检查一下!!!
在客户机执行 curl 192.168.29.250,或者在浏览器输入网址
在DS上查看ipvsadm的
ipvsadm -Ln --stats
-L:显示内核虚拟服务器表
-n:输出IP地址和端口的数字形式
ipvsadm --zero :清空流量
为防止服务重启失败
cd /etc/sysconfig
touch ipvsadm文件
扩展:
tun隧道模式
DS端配置:
ifconfig tunl0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.0 up
route add -host 192.168.254.250 dev tunl0
ipvsadm -A -t 192.168.254.250:80 -s rr
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18 -i
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19 -i
# tunl0是隧道网卡的名字,可以随意起名字
RS端的配置
ifconfig tunl0 192.168.254.250 netmask 255.255.255.255 broadcast 192.168.254.250 up
route add -host 192.168.254.250 dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
0:不开启源地址校验。
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。
如果反向路径不是最佳路径,则直接丢弃该数据包。
2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),
如果反向路径不同,则直接丢弃该数据包。
LVS集群搭建