LVS 服务器集群三种实现模式配置

LVS服务器集群中基于IP的负载均衡技术,有3种实现模式:VS/NET模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式)

一,【VS/NET 模式】

1,配置Linux Director(前端负载调度器)IP,并打开IP数据包转发功能

ifconfig eth0 192.168.1.2 broacast 192.168.1.255 netmask 255.255.255.0 up
ifconfig eth1 192.168.2.1 broacast 192.168.2.255 netmask 255.255.255.0 up
echo 1 > /proc/sys/net/ipv4/ip_forward

2,创建并执行 ipvs.sh 脚本(该脚本需要设置为可执行)。为前端负载调度器添加虚拟服务器记录和调度算法(轮询,基于连接请求),以及为此虚拟服务器添加真实服务器记录(以net模式添加)

#!/bin/bash
#ipvs.sh
ipvsadm -C
ipvsadm -A -t 192.168.2.1:80 -s rr
ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.2:80 -m
ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.3:80 -m

3,配置 Real Server 真实服务器(192.168.2.2),默认网关指向负载调度器,保证数据正确返回

ifconfig eth0 192.168.2.2 broadcast 192.168.2.255 netmask 255.255.255.0 up
route add default gw 192.168.2.1

4,配置 Real Server 真实服务器(192.168.2.3)

ifconfig eth0 192.168.2.3 broadcast 192.168.2.255 netmask 255.255.255.0 up
route add default gw 192.168.2.1

二,【VS/TUN】 IP隧道模式

1,配置 Linux Director 负载调度器,设置 tunl0(隧道网卡)的IP为VIP,并添加到本地路由(注:VIP的子网掩码为255.255.255.255,,使该网段只有一个IP)

ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev tunl0
ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up

2,创建 ipvs.sh脚本并执行,为前端负载调度器添加虚拟服务器记录和调度算法(轮询),以及为此虚拟服务器添加真实服务器(以IP隧道模式添加)

#!/bin/bash
#ipvs.sh
ipvsadm -C
ipvsadm -A -t 192.168.1.3:80 -s rr
ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.4:80 -i
ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.5:80 -i

3,配置 Real Server 真实服务器(192.168.1.4),将VIP绑定到tunl0网卡上

ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev tunl0
ifconfig eth0 192.168.1.4 broadcast 192.168.1.255 netmask 255.255.255.0 up

4,创建arp.sh脚本并执行,实现当ARP询问VIP的MAC地址时,忽略应答

#!/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

5,配置 Real Server 真实服务器(192.168.1.5),同样绑定VIP到tunl0网卡上

ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev tunl0
ifconfig eth0 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up

6,创建arp.sh脚本并执行

#!/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

三,【VS/DR】直接路由模式

1,Linux Director 负载调度器

ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up
ifconfig eth0:0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev eth0:0

2,创建 ipvs.sh 脚本,并执行

#!/bin/bash
#ipvs.sh
ipvsadm -C
ipvsadm -A -t 192.168.1.3:80 -s rr
ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.4:80 -g
ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.5:80 -g

3,配置 Real Server 真实服务器(192.168.1.4)

ifconfig eth0 192.168.1.4 broadcast 192.168.1.255 netmask 255.255.255.0 up
ifconfig lo:0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev lo:0

4,创建 arp.sh脚本,并执行

#!/bin/bash
#arp.sh
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

5,配置 Real Server 真实服务器(192.168.1.5)

ifconfig eth0 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up
ifconfig lo:0 192.168.1.3 netmask 255.255.255.255 up
route add -host 192.168.1.3 dev lo:0

6,创建 arp.sh 脚本,并执行

#!/bin/bash
#arp.sh
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

四,三种模式优缺点
【 NET模式 】
优点:只需要一个公网IP
缺点:请求和响应都需要经过负载调度器,访问量达到一定量后负载调度器可能成为瓶颈。(原因:请求/响应报文会被修改,请求的目标IP/Mac,响应的源IP/Mac)

【 TUN模式 】
优点:
1,可以设置跨域的真实服务器
2,响应报文直接从后端服务器返回给客户,较NET模式有更高的吞吐量

缺点:
1,需要IP隧道。负载调度器、真实服务器必须支持隧道协议的网卡
2,需要多个公网IP
3,建立IP隧道需要额外开销

【 DR直接路由模式 】
优点: 响应报文直接从后端服务器返回给客户,吞吐量同TUN模式差不多,或更高
缺点: 真实服务器需要同负载调度器在同一个网段

五,ipvsadm管理工具使用参考
ipvsadm 的用法和格式如下:
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port
[-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm –set tcp tcpfin udp
ipvsadm –start-daemon state [–mcast-interface interface]
ipvsadm –stop-daemon
ipvsadm -h
命令选项解释:
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
以。
-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 地址和端口的数字形式

发表评论