LVS服务器集群中基于IP的负载均衡技术,有3种实现模式:VS/NET模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式) 前端
1,配置Linux Director(前端负载调度器)IP,并打开IP数据包转发功能node
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模式添加)linux
#!/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)shell
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
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网卡上bash
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
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 -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 地址和端口的数字形式