lvs分为3种模式 :
1:
lvs-nat:
本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统
2:LVS-DR模式
LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
Director和各RS都配置有VIP
(1) 确保前端路由器将目标IP为VIP的请求报文发往Director
在前端网关做静态绑定VIP和Director的MAC地址
在RS上使用arptables工具
arptables-A IN -d $VIP -j DROP
arptables-A OUT -s $VIP -j mangle –mangle-ip-s $RIP
在RS上修改内核参数以限制arp通告及应答级别
arp_announce
arp_ignore
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向 DIP,以确保响应报文不会经由Director
(3) RS和Director要在同一个物理网络
(4) 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
(5) 不支持端口映射(端口不能修败)
(6) RS可使用大多数OS系统
3
lvs-tun:
转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)
(1) DIP, VIP, RIP都应该是公网地址
(2) RS的网关不能,也不可能指向DIP
(3) 请求报文要经由Director,但响应不能经由Director
(4) 不支持端口映射
(5) RS的OS须支持隧道功能
4
种lvs负载 均衡技术优缺点下表:
命令 :
ipvsadm命令
管理集群服务:增、改、删
增、改:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
删除:
ipvsadm-D -t|u|fservice-address
service-address:
-t|u|f:
-t: TCP协议的端口,VIP:TCP_PORT
-u: UCP协议的端口,VIP:UDP_PORT
-f:firewall MARK,标记,一个数字
[-s scheduler]:指定集群的调度算法,默认为wlc
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
以。
-A –add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也
就是增加一台新的虚拟服务器。
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a –add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器
记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list 显示内核虚拟服务器表
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
–set tcp tcpfin udp 设置连接超时值
–start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说
明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的
VRRP 功能。
–stop-daemon 停止同步守护进程
-h –help 显示帮助信息
其他的选项:
-t –tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-server-ip:port]
-u –udp-service service-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-server-ip:port]
-f –fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s –scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默认的调度算法是: wlc.
-p –persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客
户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M –netmask netmask persistent granularity mask
-r –real-server server-address 真实的服务器[Real-Server:port]
-g –gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i –ipip 指定LVS 的工作模式为隧道模式
-m –masquerading 指定LVS 的工作模式为NAT 模式
-w –weight weight 真实服务器的权值
–mcast-interface interface 指定组播的同步接口
-c –connection 显示LVS 目前的连接 如:ipvsadm -L -c
–timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L –timeout
–daemon 显示同步守护进程状态
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–numeric -n 输出IP 地址和端口的数字形式
5、配置ipvsadm服务
备注:以下步骤分别按照LVS的三种包转发方式进行配置
实验环境如下:
lvsserver 192.168.1.49(eht0) vip: 192.168.1.40 8.8.8.8(nat模式下)
serverA 192.168.1.46(eth0)
serverB 192.168.1.47(eth0)
1、vs/nat模式下各服务器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
ifconfig eht1 8.8.8.8 netmask 255.255.255.0
(注:由于nat模式需要两块真实网卡,所以又额外加了一块网卡 ,此网卡的IP地址同时也是VIP的地址)
vi ipvsadm.sh (创建脚本文件)
————————————————————————————————————————————————————-
#!/bin/bash
echo 1 > /porc/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.1.46:80 -m (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 8.8.8.8:80 -r 192.168.1.47:80 -m
#chmod u+x ipvsadm.sh (增加可执行权限)
——————————————————————————————————————————————————————
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此网关是lvsserver的eth0的IP地址)
service httpd start (开启测试用的web服务)
echo ‘192.168.1.46’ > /var/www/html/index.html (制作测试用的html网页)
——————————————————————————————————————————————————————-
serverB配置如下:
ifconfig eth0 192.168.1.47 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此网关是lvsserver的eth0的IP地址)
service httpd start (开启测试用的web服务器
echo ‘192.168.1.47’ > /var/www/html/index.html (制作测试用的html网页)
——————————————————————————————————————————————————————–
2、vs/tun模式下各服务器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
(注:tun 模式下只需要一块物理网卡,可将eth1网卡禁用)
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up
(注:tunlo接口配置的地址为vip地址)
route add -host 192.168.1.40 dev tunlo
vi ipvsadm.sh (创建脚本文件)
——————————————————————————————————————————————————————-
#!/bin/bash
ipvsadm -C (清除之前的转换表)
ipvsadm -At 192.168.1.40:80 -s rr (指定带有调度算法转换的服务器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -i (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -i
#chmod u+x ipvsadm.sh (增加可执行权限)
#./ipvsadm.sh
———————————————————————————————————————————————————————–
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up
route add -host 192.168.1.40 dev tunlo
vi arp.sh (创建脚本文件)
#!/bin/bash
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
———————————————————————————————————————————————————————–
serverB配置同severA一样
———————————————————————————————————————————————————————–
3、vs/dr模式下各服务器的配置
lvsserver配置如下:
ifconfig eth0 192.168.1.49 netmsk 255.255.255.0
(注:dr 模式下只需要一块物理网卡,可将eth1网卡禁用)
ifconfig eth0:0 192.168.1.40 netmask 255.255.255.255 up
(注:eth0:0接口配置的地址为vip地址)
route add -host 192.168.1.40 dev eth0:0
vi ipvsadm.sh (创建脚本文件)
———————————————————————————————————————————————————————-
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward (开启路由功能)
ipvsadm -C (清除之前的转换表)
ipvsadm -At 192.168.1.40:80 -s rr (指定带有调度算法转换的服务器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -g (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -g
#chmod u+x ipvsadm.sh (增加可执行权限)
./ipvsadm.sh
———————————————————————————————————————————————————————–
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig lo:0 192.168.1.40 netmask 255.255.255.255 up (在lo接口上增加vip地址)
route add -host 192.168.1.40 dev lo:0 (增加到环回接口的路由)
vi arp.sh (创建脚本文件)
#!/bin/bash
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
#chmod u+x arp.sh (增加可执行权限)
#./arp.sh
———————————————————————————————————————————————————————–
serverB配置和serverA一样
———————————————————————————————————————————————————————–
测试:1、显示LVS 目前的连接
如:ipvsadm -L -c ipvsadm -L –stats
2、将46和47的WEB服务启用。直接输入vip的地址不停的刷新你将会看到不同页面的切换
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88031