LVS-DR 集群环境实现
(LVS 服务器的网关可以任意配置, 只要能出本地接口就行)
实验环境:(5 台主机)
一台客户端
一台路由器
一台 LVS 服务器
两台 RS 服务器
1 搭建网络环境
路由器配置:
一个接口连接私网
私网需要配置两个
一个要和发布出去的私网 IP 通信(VIP:10.0.0.100, 掩码可以任意)
一个要和和 LVS 和 RS 服务器间通信(DIP:192.168.205.101)
一个接口连接公网
配置 IP:
公网 IP 配置:
- DEVICE=eth1
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=172.18.106.21
- PREFIX=16
私网 IP 配置:
- cd /etc/sysconfig/network-scripts
- vim ifcfg-eth0
- DEVICE=eth0
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=192.168.205.101
- FREFIX=24
- cp ifcfg-eth0 ifcfg-eth0:1
- DEVICE=eth0:1
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=10.0.0.200
- PREFIX=24(私网 IP, 且与 LVS 的 VIP 能通信)
打开 IP 转发功能
- vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1
重启 network 服务
LVS 网络配置:
- cd /etc/sysconfig/network-scripts
- vim ifcfg-ens33
- NAME=ens33
- DEVICE=ens33
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=192.168.205.132
- PREFIX=24
- GATEWAY=192.168.205.101(网关可以任意配置, 因为响应报文直接由 RS 服务器发往 Clinet)
重启 network 服务
RS 网络配置(两台配置几乎相同, IP 改一下就行了)
- cd /etc/sysconfig/network-scripts
- vim ifcfg-ens33
- NAME=ens33
- DEVICE=ens33
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=192.168.205.132
- PREFIX=24
- GATEWAY=192.168.205.101(网关需要指定为路由器, 由于只有一个路由器, 所以指向路由器接口的 IP)
重启 network 服务
2 实现 LVS-DR 模型
- #!/bin/bash
- vip='10.0.0.100'
- iface='ens33:1'
- mask='255.255.255.255'
- port='80'
- rs1='192.168.205.100'
- rs2='192.168.205.160'
- scheduler='wrr'(调度算法可以修改)
- type='-g'
- case $1 in
- start)
- ifconfig $iface $vip netmask $mask
- iptables -F
- ipvsadm -A -t ${vip}:${port} -s $scheduler
- ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1(修改调度算法的时候这里可修改穷权重)
- ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
- ;;
- stop)
- ipvsadm -C
- ifconfig $iface down
- ;;
- *)
- echo "Usage $(basename $0) start|stop";exit 1
- ;;
- esac
- #!/bin/bash
- vip='10.0.0.100'
- mask='255.255.255.255'
- dev=lo:1
- case $1 in
- start)
- echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore(会还网卡的 arp_ignore 可以为默认值, 不影响客户端访问 RS 服务器)
- echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
- echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce(回环网卡的 arp_announce 可以为默认值, 不影响客户端访问 RS 服务器)
- ifconfig $dev $vip netmask $mask
- ;;
- stop)
- ifconfig $dev down
- echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
- echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
- echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
- echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
- ;;
- *)
- echo "Usage: $(basename $0) start|stop"
- exit 1
- ;;
- esac
- ipvsadm -a -f 10 -r 192.168.205.100 -g
- ipvsadm -a -f 10 -r 192.168.205.160 -g
来源: http://www.bubuko.com/infodetail-2546076.html