一、lvs-nat
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器。是由章文嵩博士开发的一个在内核层面的负载均衡调度器。
lvs是在netfilter的INPUT链上根据我们制定的调度规则将特定目标地址和端口的数据包转发到后面的特定主机的,由于是工作于内核空间,所以工作效率高,经过优化最高可达400万的并发量调度。
lvs的实现需要两部分:ipvs, ipvsadm
ipvs是协议规则,ipvsadm是实现ipvs的工具,跟iptables具有极高的相似性。
定义规则时,需要先定义集群服务是什么,然后在定义调度方法。
lvs的类型有四种:lvs-nat,lvs-dr,lvs-tun,lvs-fullnat。受限于物理设备状况,本次试验只做lvs-nat的lvs测试。拓扑结构如下:
选择了lvs类型后,还需要选择lvs的scheduler调度法则。调度法则有多种:
RR: round-robin, 轮询;轮叫、轮调、轮流;
WRR:weighted round-robin, 加权轮询;
SH:Source ip Hashing,源地址哈希;把来自同一个地址请求,统统定向至此前选定的RS;
DH:Destination ip Hashing, 目标地址哈希;把访问同一个目标地址的请求,统统定向至此前选定的某RS;
LC: least connection
Overhead=Active*256+Inactive,overhead值越小的越优先被访问
WLC: weighted least connection
Overhead=(Active*256+Inactive)/weight,overhead值越小的越优先被访问
SED:Shorted Expection Delay
Overhead=(Active+1)*256/weight,overhead值越小的越优先被访问
NQ:Never Queue
LBLC:Local-Based Least Connection,动态方式的DH算法;
LBLCR:Replicated LBLC
最常用的也是默认的调度法则是wlc。
二。配置
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
[root@localhost ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
在lvs dector安装ipvsadm
[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -At 172.16.1.128:80 rr
[root@localhost ~]# ipvsadm -at 172.16.1.128:80 -r10.255.255.2:80 -m
[root@localhost ~]# ipvsadm -at 172.16.1.128:80 -r10.255.255.3:80 -m
配置web服务器
[root@localhost ~]# yum -y install httpd
三。LVS_TUN模式
在ipvsadm管理器上yum -y install ipvsadm 然后配置
[root@localhost ~]# ifconfig tunl0 172.16.1.127 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 172.16.1.127 dev tunl0
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects
[root@localhost ~]# ipvsadm -At 172.16.1.127:80 -s rr
[root@localhost ~]# ipvsadm -at 172.16.1.127:80 -r 172.16.1.130:80 -i
[root@localhost ~]# ipvsadm -at 172.16.1.127:80 -r 172.16.1.131:80 -i
[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
在realhost上安装 httpd后
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
[root@localhost ~]# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
三。LVS_dr模式