lvs是一款IP负载均衡软件,是通过ipvs模块来实现ip负载均衡的。

三种机制:NAT     用户请求和服务器响应都经过调度器,调度器修改数据包IP和PORT  

                 TUN     用户请求被调度器通过IP隧道技术转发给realserver,realserver直接返回数据给用户,调度器和realserver

                             可以不再相同网段

                 DR       通过改写请求报文MAC地址将请求发到realserver,realserver直接响应用户。避免了IP隧道开销。

                             DR模式下directorserver和realserver必须有一个网卡在同一个网段上


负载调度算法(常用为前4个)

1 轮叫 (rr)  单纯轮询方式,按顺序分配给realserver

2 加权轮叫 (wrr) 带权重的轮询方式,根据服务器处理能力分配权重,也属于循环飞陪,但是给权重高的机器飞陪更多任务

3 最少链接 (lc)  调度器根据连接数量进行分配,谁不干活给谁分配

4 加权最少链接 (wlc) 带权重的谁不干活给谁分配

5 基于局部性的最少链接 (lblc)

6 带复制的基于局部性最少链接(lblcr)

7 目标地址散列(dh)

8 源地址散列(sh)

9 最短的期望的延迟

10 最少队列调度


lvs安装

yum安装

   yum -y install ipvsadm 自动解决依赖

源码安装

 1  ipvsadm安装依赖包有三个libnl-devel   popt-devel  popt-static 可通过yum直接安装

 2  tar - zxf  ipvsadm-1.26.tar.gz 解压缩包

 3  进入解压后目录

    

lvs 官方文档_lvs 官方文档

 4 make && make install

    

lvs 官方文档_权重_02

5 安装完成后可通过ipvsadm --help查看命令是否可用(没有安装lvs系统默认不带ipvsadm命令)

    

lvs 官方文档_lvs 官方文档_03

  

ipvsadm用法

ipvsadm  -L|l    显示内核中虚拟服务器列表

ipvsadm -A|E     -t|u|f     VIP:端口    -s  调度算法   -p  timeout  -M  netmask

-A  --add-service添加虚拟IP,也就是添加虚拟服务器

-E编辑已有的虚IP

-t|u|f分别表示虚拟服务器提供的是tcp,udp,被防火墙标记过的服务三种

-s  后面跟调度算法rr|wrr|lc|wlc|lblc|lblcr|dh|sh,默认为wlc

-p后面跟在某个realserver上的持续时间,同一个用户请求调度到同一个realserver处理


lvs 官方文档_lvs 官方文档_04

ipvsadm  -D    -t|u|f   VIP:PORT    删除内核内指定虚拟服务器记录

lvs 官方文档_权重_05

ipvsadm  -C     清楚内核内所有虚拟服务器记录

lvs 官方文档_权重_06

ipvsadm  -S      保存虚拟服务器规则

ipvsadm  -R     恢复虚拟服务器规则


ipvsadm  -a|e    -t|u|f    VIP:PORT  -r  real-server-address:port   -g|i|m   -w   weight

-a    在虚拟服务器规则添加一条real server记录

-e  

-d    删除一条虚拟服务器中的real server记录

-r指定real server 的IP地址

-g 指定lvs的工作模式为直接路由模式DR模式

-i 指定lvs的工作模式为隧道模式

-m   指定lvs的工作模式为NAT模式

-w 指定real server的权重值

lvs 官方文档_lvs 官方文档_07

lvs 官方文档_lvs 官方文档_08

lvs 官方文档_服务器_09

ipvsadm   -Z  -t|u|f   VIP:PORT    虚拟服务器列表计数器清零(清空当前的连接数等)

ipvsadm   --set tcp tcpfin udp   设置连接超时值

lvs 官方文档_lvs 官方文档_10

 

上方使用测试机器为2.60,这里不使用60做调度机器,更换2.71为调度机

调度机配置如下VIP192.168.2.100是其他配置在这里忽略掉

lvs 官方文档_IP_11

lvs 官方文档_服务器_12

两台real server配置如下,这里使用了lo:1,是因为之前配置过其他VIP用了lo:0(忽略)

ifconfig lo:1 192.168.2.85 broadcast 192.168.2.85 netmask 255.255.255.255 up

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

lvs 官方文档_权重_13

lvs 官方文档_lvs 官方文档_14

配置完成浏览器测试访问192.168.2.85

补充:

ipvsadm   -L   -c                   显示lvs目前的链接信息

ipvsadm   -L   --timeout      显示“”tcp   tcpfin    udp“”的timeout值

ipvsadm   -L   --daemon      显示同步守护进程状态

ipvsadm   -L   --stats            显示统计信息

ipvsadm   -L   --rate             显示速率信息

ipvsadm   -L   --sort             对虚拟服务器和真实服务器排序输出