857432 发表于 2016-7-14 10:55:28

LVS配置

官方文档:http://www.linuxvirtualserver.org/zh

准备]
# lsmod | grep ip_vs
#
lsmod是检查内核运行状况,表明没有运行ipvsadm
# uname -r
3.10.0-327.el7.x86_64
# ln -s/usr/src/kernels/3.10.0-327.13.1.el7.x86_64/ /usr/src/linux
注意:1.lvs安装一定要设定这个软连接,否则编译的时候会报错。    2.在/usr/src/kernel/下没有内核版本信息,则需要安装kernel-devel包,并且内核信息一定跟uname -r 对应。   3.编译安装前 yum install -y libnl* popt*
安装]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
CentOS-5.x版本的推荐安装ipvsadm-1.24版本。
CentOS-6.x版本的推荐安装ipvsadm-1.26版本。
这里在CentOS-7.x下就下载最新的一个版本
# tar xf ipvsadm-1.26.tar.gz
# make
# make install
编译安装,如果失败,缺包就yum install-y libnl* popt*;
注意此时在lsmod | grep ip_vs依旧是没有的,因为ipvsadm并没有运行
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port         ForwardWeight ActiveConn InActConn
# lsmod | grep ip_vs
ip_vs                1409440
nf_conntrack         1057451 ip_vs
libcrc32c             126442 xfs,ip_vs
ipvsadm运行接下来配置。
配置]lvs配置主要用ipvsadm管理,这里以DR模式为例子设置lvs
使用说明]
Usage:
①ipvsadm -A|E -t|u|f service-address [-s scheduler][-p ] [-M netmask] [--pe persistence_engine]
这里的t|u|f 表示tcp、udp、iptables标记,下面与这里一致
# ipvsadm-A -t 192.168.131.200:80 -s wlc
# ipvsadm -E -t192.168.131.200:80 -s wwc
②ipvsadm -D -t|u|f service-address
# ipvsadm -L
IP Virtual Server version1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
# ipvsadm-D -t 192.168.131.200:80
# ipvsadm-L
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:Port SchedulerFlags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
③ ipvsadm -C
清除所有规则,注意是所有,与iptables -F功能类似
# ipvsadm-L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
# ipvsadm-C
# ipvsadm-L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
④ ipvsadm -R
载入保存在文件中的规则
#ipvsadm -L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
   -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
# ipvsadm-R < a
# ipvsadm-L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
   -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
⑤ ipvsadm -S [-n]
保存规则到指定文件
#ipvsadm -L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
   -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
# > a
# cat a
# ipvsadm-S > a
# cat a
-A -t 192.168.131.200:http -swlc
⑥ipvsadm -a|e -t|u|f service-address -rserver-address
添加RS节点。-a为添加,-e为编辑,与-E类似这里就不对-e进行专门的说明了。
# ipvsadm -a -t 192.168.131.200:80-r 192.168.131.133 -g -w 5
# ipvsadm -L   
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port         ForwardWeight ActiveConn InActConn
TCP 192.168.131.200:http wlc
->192.168.131.133:http         Route   5   0          0
⑦      ipvsadm -d -t|u|f service-address -r server-address
这里表示删除一个RS节点。
# ipvsadm-L   
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
   -> 192.168.131.133:http         Route5      0          0      
# ipvsadm-d -t 192.168.131.200:80 -r 192.168.131.133
# ipvsadm-L
IP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
   -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:http wlc
⑧      ipvsadm -L|l
显示虚拟服务器信息
常用的选项:
-n数字格式显示主机地址和端口
--stats统计数据
--rate速率
--timeout显示tcp、tcpfin、udp的会话超时时长
-c 显示当前ipvs连接情况 ⑨ipvsadm -Z [-t|u|f service-address]⑩      ipvsadm --set tcp tcpfin udp
设置tcp、tcpfin、udp的超时时间
      ipvsadm --start-daemon state [--mcast-interfaceinterface] [--syncid sid]      ipvsadm --stop-daemon state      ipvsadm -h
查看ipvsadm的帮助信息



实战]
①配置DNS
按照实际的配置,这里会涉及到DNS解析的问题。一般会自建立DNS服务器或者购买域名,由于时间关系,这里提及一下。之后的访问以IP为主。
②配置LVS虚拟IP VIP
# ifconfig eno16777736:0192.168.131.200/24 up
# ifconfig
eno16777736:0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
      inet192.168.131.200netmask255.255.255.0broadcast 192.168.131.255
      ether00:0c:29:68:85:catxqueuelen 1000(Ethernet)
#特别提示:ifconfigeno16777736:0 192.168.131.200 netmask 255.255.255.0 up或或者网上也有添加主机路由的方法         
route add -host 192.168.131.200 dev eno16777736ping测试,如果Ping通,说明配置OK了。      ③手工添加2台RS
服务端配置:
# ipvsadm -C
# ipvsadm --set 30 5 60                     
# ipvsadm -A -t 192.168.131.200:80 -s rr -p 20
# ipvsadm -a -t 192.168.131.200:80 -r 192.168.131.133 -g -w 3
# ipvsadm -a -t 192.168.131.200:80 -r 192.168.131.135 -g -w 3
# ipvsadm -L -n
IPVirtual Server version 1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.131.200:80 rr persistent 20
-> 192.168.131.133:80         Route   3   0          0      
-> 192.168.131.135:80         Route   3   0          0   
RS配置:
# ifconfig lo:0 192.168.131.200/32 up
routeadd -host 192.168.131.200 dev lo
在LVS-DR模式中,负载均衡服务器与真实服务器在同一个局域网内,所以必须要抑制真实服务器的ARP广播,不然会导致用户无法访问,造成严重的后果。
④抑制ARP
抑制方法如下:
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
arp_ignore: 定义对目标地址为本地的IP的ARP询问不同的应答模式;
0(默认值):只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标地址配置在到达的接口上的时候,才给予响应;DR模型使用;
2:仅响应目标IP地址是来访问网络接口本地地址的ARP查询请求,且IP必须在该网络接口的子网段内。arp_announce:对网络接口上,本地IP地址的发出的ARP回应做出相应级别的限制;
    0(默认):将本地任何接口上的任何地址向外通告;
    1:试图仅向目标网络通告与其网络匹配的地址;
    2:仅向与本地接口上地址匹配的网络进行通告;DR模型使用
⑤测试LVS服务的转发
首先在客户端浏览器访问RS地址是否正常,然后访问DR的VIP地址,多次测试出现不同的结果说明LVS服务正常。
提示:测试过程中,会话保持的时间,浏览器缓存等可能会影响测试。

页: [1]
查看完整版本: LVS配置