0.调度算法
0.1.静态调度
●rr - 轮询调度
●lr - 最少连接调度
●wlr - 加权最少连接调度
0.2.静态调度
1.LVS-nat模式
1.1.实验结构:
●LVS Server(双网卡)
●Real Server1(后台服务器)
●Real Server2(后台服务器)
●Client pc(客户端)
1.2.IP地址规划:
Client pc:8.8.8.1/24
VIP:无vip
LVS Server:8.8.8.8/24;192.168.10.1/24
Real Server1:192.168.10.2/24
Real Server2:192.168.10.3/24
配置“负载均衡” [root@LVS_Server ~]# ifconfig eth0 8.8.8.8 netmask 255.255.255.0 [root@LVS_Server ~]# ifconfig eth1 192.168.10.1 netmask 255.255.255.0
配置“后台服务器1” [root@Real_Server1 ~]# ifconfig eth0 192.168.10.2 netmask 255.255.255.0 [root@Real_Server1 ~]# route add default gw 192.168.10.1
配置“后台服务器2” [root@Real_Server2 ~]# ifconfig eth0 192.168.10.3 netmask 255.255.255.0 [root@Real_Server2 ~]# route add default gw 192.168.10.1
ping测试,全网通(路由生效,网络层贯通)。
1.3.配置过程:
LVS配置方法
检查、打开路由表转发功能 # cat /proc/sys/net/ipv4/ip_forward # echo 1 > /proc/sys/net/ipv4/ip_forward # ipvsadm -C 设定调度算法 # ipvsadm -At 8.8.8.8:80 -s rr 设定工作模式 # ipvsadm -at 8.8.8.8:80 -r 192.168.10.2:80 -m # ipvsadm -at 8.8.8.8:80 -r 192.168.10.3:80 -m
* IP装发表 1 开启路由表 ; 0 关闭路由管道
* -s 调度算法
* -m nat模式
* -i ip tuns模式
* -g dr模式
#!/bin/bash #lvs.sh #启动脚本 echo 1 > /proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -At 8.8.8.8:80 -s rr ipvsadm -at 8.8.8.8:80 -r 192.168.10.2:80 -m ipvsadm -at 8.8.8.8:80 -r 192.168.10.3:80 -m
# chmod a+x ipvs.sh # ./ipvs.sh # ipvsadm -L -n
1.4.测试:
客户端浏览器访问 http://8.8.8.8;多次刷新。
2.LVSip-tun模式
2.1.实验结构(所有机器处于同一网段)
●LVS Server(单网卡)
●Real Server1(后台服务器)
●Real Server2(后台服务器)
●Client pc(客户端)
2.2.IP地址规划:
Client pc:200.168.10.4/24
VIP:200.168.10.10
LVS Server:200.168.10.1/24;200.168.10.10/24
Real Server1:192.168.10.2/24
Real Server2:192.168.10.3/24
配置“负载均衡” [root@LVS_Server ~]# ifconfig eth0 200.168.10.1 netmask 255.255.255.0 up 添加虚拟网卡,配置虚拟IP [root@LVS_Server ~]# ifconfig tun0 200.168.10.10 netmask 255.255.255 up 添加主机路由 [root@LVS_Server ~]# route add -host 200.168.10.10 dev tunl0
配置“后台服务器1”网卡 [root@Real_Server1 ~]# ifconfig eth0 200.168.10.2 netmask 255.255.255.0 up 在后台服务器配置虚拟IP [root@Real_Server1 ~]# ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up 添加主机路由 [root@Real_Server1 ~]# route add -host 200.168.10.10 dev tunl0 删除默认路由 [root@Real_Server1 ~]# route del default [root@Real_Server1 ~]# route -n
#!/bin/bash #arp.sh #修改网卡属性 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
[root@Real_Server1 ~]# chmod +x arp.sh
执行脚本,修改网卡配置
[root@Real_Server1 ~]# ./arp.sh
同样需要在另外的后台服务器执行相同配置
[root@Real_Server1 ~]# scp arp.sh 200.168.10.3:~
配置“后台服务器2”网卡 [root@Real_Server2 ~]# ifconfig eth0 200.168.10.3 netmask 255.255.255.0 up 在后台服务器配置虚拟IP [root@Real_Server2 ~]# ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up 添加主机路由 [root@Real_Server2 ~]# route add -host 200.168.10.10 dev tunl0 删除默认路由 [root@Real_Server2 ~]# route del default [root@Real_Server2 ~]# route -n 修改网卡配置 [root@Real_Server2 ~]# ./arp.sh
ping测试,全网通(路由生效,网络层贯通)。
2.3.配置过程:
LVS配置方法
# cat /proc/sys/net/ipv4/ip_forward # echo 0 > /proc/sys/net/ipv4/ip_forward # ipvsadm -C # ipvsadm -A -t 200.168.10.10:80 -s rr # ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i # ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i
* IP装发表 1 开启路由表 ; 0 关闭路由管道
* -s 调度算法
* -m nat模式
* -i ip tuns模式
* -g dr模式
#!/bin/bash #lvs.sh #启动脚本 echo 1 > /proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -At 200.168.10.10:80 -s rr ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i
# chmod a+x ipvs.sh # ./ipvs.sh # ipvsadm -L -n
2.4.测试:
客户端浏览器访问 http://200.168.10.10;多次刷新。
3.LVS-dr模式
DR模式的优点:
●不会形成瓶颈*(相对nat模式)
●适应面广*(相对于IP tuns)
●只需要一块网卡*(借助lo0接口)
VS/DR 工作原理 ( Virtual Server via Direct Routing )
VS/DR 通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回
给客户。同 VS/TUN技术一样,VS/DR 技术可极大地提高集群系统的伸缩性。却没有IP 隧道的开
销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有
一块网卡连在同一物理网段上。
3.1.实验结构(所有机器处于同一网段)
●LVS Server(单网卡)
●Real Server1(后台服务器)
●Real Server2(后台服务器)
●Client pc(客户端)
3.2.IP地址规划:
Client pc:200.168.10.4/24
VIP:200.168.10.10
LVS Server:200.168.10.1/24;200.168.10.10/24
Real Server1:192.168.10.2/24
Real Server2:192.168.10.3/24
[root@LVS_Server ~]# ifconfig eth0 200.168.10.1 netmask 255.255.255.0 [root@LVS_Server ~]# ifconfig eth0:0 200.168.10.10 netmask 255.255.255 up [root@LVS_Server ~]# route add -host 200.168.10.10 dev eth0:0 [root@LVS_Server ~]# route -n
设定后台服务器的真实ip地址 [root@Real_Server1 ~]# ifconfig eth0 200.168.10.2 netmask 255.255.255.0 [root@Real_Server1 ~]# route del default [root@Real_Server1 ~]# route -n
#!/bin/bash #arp.sh #修改网卡属性 echo 1 > /proc/sys/net/ipv4/conf/lo0/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo0/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@Real_Server1 ~]# chmod a+x arp.sh 用上边的脚本修改网卡属性 [root@Real_Server1 ~]# ./arp.sh 同样需要在另外的后台服务器执行相同配置 [root@Real_Server1 ~]# scp arp.sh 200.168.10.3:/root/
为后台服务器设定VIP [root@Real_Server1 ~]# ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up [root@Real_Server1 ~]# route add -host 200.168.10.10 dev lo:0
[root@Real_Server2 ~]# ifconfig eth0 200.168.10.3 netmask 255.255.255.0 [root@Real_Server2 ~]# route del default [root@Real_Server2 ~]# route -n 执行类似上边的脚本,修改网卡配置 [root@Real_Server2 ~]# ./arp.sh 添加虚拟ip(vip) [root@Real_Server2 ~]# ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up [root@Real_Server2 ~]# route add -host 200.168.10.10 dev lo:0 up [root@Real_Server2 ~]# route add -host 200.168.10.10 dev lo:0 up
ping测试,全网通(路由生效,网络层贯通)。
3.3.配置过程:
LVS配置方法
# cat /proc/sys/net/ipv4/ip_forward # echo 1 > /proc/sys/net/ipv4/ip_forward # ipvsadm -C # ipvsadm -A -t 200.168.10.10:80 -s rr # ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g # ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g
* IP装发表 1 开启路由表 ; 0 关闭路由管道
* -s 调度算法
* -m nat模式
* -i ip tuns模式
* -g dr模式
#!/bin/bash #lvs.sh #启动脚本 echo 0 > /proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -At 200.168.10.10:80 -s rr ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g
# chmod a+x ipvs.sh # ./ipvs.sh # ipvsadm -L -n
3.4.测试:
客户端浏览器访问 http://200.168.10.10;多次刷新。
4.0.附
4.1.RealServer
#!/bin/bash VIP=192.168.10.200 ./etc/rc.d/init.d/function case “$1” in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 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 sysctl -p >/dev/null 2>$1 echo “RealServer Stsrt OK” ;; stop) ifconfig lo:0 down route del $VIP >/dev/null 2>$1 echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce echo “RealServer Stoped” ;; *) echo “Usage: $0 {start|stop}” exit 1 esac exit 0
4.2.Directory Server
#!/bin/sh #description:Start LVS of Director server VIP=10.10.10.200 RIP1=172.16.10.10 RIP2=172.16.10.20 . /etc/rc.d/init.d/functions case “$1” in start) echo “start LVS of Directory Server” #set the Virtual IP Address and sysctl parameter /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up echo “1” > /proc/sys/net/ipv4/ip_forward #Clear IPVS table /sbin/ipvsadm -C #set LVS /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g #run LVS /sbin/ipvsadm ;; stop) echo “close LVS Directory server” echo “0” > /proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down ;; *) echo “Usage:$0{start|stop}” exit 1 esac exit 0
转载于:https://blog.51cto.com/sunnybay/1375288