9AMC 发表于 2019-1-4 10:48:26

linux中LVS的简单实现

LVS三种模型及其各自的特点:
NAT模型:
1、RS跟Director在同一子网
2、RIP使用私有地址,仅用于本地通信
3、Director工作在Clients和RS中间,负责处理进出的全部报文
4、RS网关要指向DIP
5、可以实现端口映射
6、RS可以是任何操作系统
7、Director在较大规模应用中会成为性能瓶颈
DR模型:
1、RS跟Director必须在同一物理网上 (VIP必须是公网地址)
2、RIP可以使用公网地址
3、Director仅处理请求报文
4、RS的网关不能指向DIP
5、不能使使用端口映射
6、大多数OS都可以用于RS
7、DR模型的Director能够处理比NAT模型多得多的请求
TUN模型(隧道模型):
1、RS跟Director不必在同一物理网络中
2、RIP一定不能使用私有地址
3、Director仅处理请求报文
4、响应报文不能经过Director
5、不能使用端口映射
6、仅允许支持隧道协议的OS用于RS

DR模型配置:(做实验时所有地址要在一个网段内,否则需要添加路由设备)
实验所用地址:
VIP:192.168.0.254(配置在网卡别名上)
RIP1:192.168.0.9(配置在lo别名上)
RIP2:192.168.0.10
director上的配置:
# ifconfig eth0:1 192.168.0.254 broadcast 192.168.0.254 netmask 255.255.255.255
# route add -host 192.168.0.254 dev eth0:1 定义哪个地址接受的请求必须以该地址为源地址响应
# sysctl -w net.ipv4.ip_forward=1打开路由转发功能
# cat /proc/sys/net/ipv4/ip_forward 查看路由转发是否打开
   配置ipvsadm:
# ipvsadm -A -t 192.168.0.254:80 -s rr
# ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.9 -g (-g 可以省略,默认就为DR模型)
# ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.10 -g
# ipvsadm -L -n查看规则
# service ipvsadm save 保存ipvsadm配置
real server上的配置:
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# ifconfig lo:0 192.168.0.254 broadcast 192.168.0.254 netmask 255.255.255.255
# route add -host 192.168.0.254 dev lo:0
在浏览器中输入http://192.168.0.254可以验证配置是否正常


NAT模型配置:
VIP:192.168.0.8
DIP:192.168.100.10
RS1:192.168.100.11
RS2:192.168.100.12
director:
# grep -i "vs" /boot/config-2.6.18-308.el5 查看内核是否支持ipvs
# yum -y install ipvsadm 安装ipvsadm
# sysctl -w net.ipv4.ip_forward=1 打开路由转发
# ipvsadm -A -t 192.168.0.8:80 -s rr
# ipvsadm -a -t 192.168.0.8:80 -r 192.168.100.11 -m(如果使用端口映射,在RIP后加映射的端口,否则可以不加,默认和VIP端口一样)
# ipvsadm -a -t 192.168.0.8:80 -r 192.168.100.12 -m
支持权重的NAT配置:
示例:
# ipvsadm -A -t 192.168.0.6:80 -s wrr
# ipvsadm -a -t 192.168.0.6:80 -r 192.168.100.2 -w 3 -m
# ipvsadm -a -t 192.168.0.6:80 -r 192.168.100.3 -w 3 -m
在realserver上的配置同DR模型,请参考DR模型的配置


LVS持久连接类型:
PCC 持久客户端连接,将同一个客户端的所有服务请求都定义到一个RS上
PPC 只持久一种服务连接
PFWM 持久防火墙标记,将指定的数种服务定义到一个RS上

LVS持久连接的实现:

在DR模型的基础上修改ipvs即可:
   # ipvsadm -E -t 192.168.0.6:80 -s rr -p(PPC类型)

使用PCC:
   将VIP后的端口号改为0即可
    例如:# ipvsadm -A -t 192.168.0.6:0 -s wrr -p 使用持久连接模型时后面必须加-p
   
PFWM的配置:
# iptables -t mangle -A PREROUTING -d 192.168.0.66 -p tcp --dport 80 -j MARK --set-mark 1
# iptables -t mangle -A PREROUTING -d 192.168.0.66 -p tcp --dport 443 -j MARK --set-mark 1
# ipvsadm -A -f 1 -s rr
# ipvsadm -a -f 1 -r 192.168.0.2 -g
# ipvsadm -a -f 1 -r 192.168.0.3 -g
# ipvsadm -E -f 1 -s rr -p 修改为长连接

隧道模型配置和DR模型配置方法类似,但director和realserver可以再不同的网络,且RIP必须使用公网地址,配置方法请参照DR模型的配置

以上内容为个人实验大致步骤,仅供参考



页: [1]
查看完整版本: linux中LVS的简单实现