zhendeaini123 发表于 2019-1-6 06:17:01

linux集群之LVS入门和企业级实战(续一)

  一、NAT模型实验:

  1、安装ipvsadm
  通常ipvs在linux内核中会有支持,可以查看内核配置文件检查是否支持。
# grep -i ipvs /boot/config-2.6.32-573.el6.x86_64
# IPVS transport protocol load balancing support
# IPVS scheduler
# IPVS application helper
  

  检查linux是否安装了ipvsadm。
  
# rpm -ql ipvsadm
/etc/rc.d/init.d/ipvsadm
/etc/sysconfig/ipvsadm-config
/sbin/ipvsadm
/sbin/ipvsadm-restore
/sbin/ipvsadm-save
/usr/share/doc/ipvsadm-1.26
/usr/share/doc/ipvsadm-1.26/README
/usr/share/man/man8/ipvsadm-restore.8.gz
/usr/share/man/man8/ipvsadm-save.8.gz
/usr/share/man/man8/ipvsadm.8.gz
  

  安装ipvsadm工具包
  
# yum install ipvsadm
已加载插件:fastestmirror
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.btte.net
* updates: mirrors.tuna.tsinghua.edu.cn
包 ipvsadm-1.26-4.el6.x86_64 已安装并且是最新版本
  

  2、常用命令讲解
  ipvsadm -A|E -t|u|fservice-address [ -s scheduler] [-p ] [-o] [-M netmask]
  -A:创建一个负载均衡的方法,指明规则、模型。
  -E:编辑负载均衡的方法。
  -t|u|f:指定服务器工作在哪个协议上。工作在网络层
  service-address:指定vip:port
  -s:指定调度方法。rr、wrr、ldlc、
  

  -D:删除一个负载均衡方法。
  ipvsadm -a|e - service-address -r real-serveraddress - [-w weight] [-x upper] [-y lower]
  -a|e:添加、编辑一个负载均衡方法,实际就是添加rip。
  指定lvs模型类型:
  -g:DR模型、默认
  -i:tun模型
  -m:nat模型
  

  查看ipvsadm工作状态
  主参数:-L 查看ipvsadm状态
  辅助参数:—stats-n
  3、保存配置文件
  service ipvsadm save
  默认存储位置:/etc/sysconfig/ipvsadm
  手动指定保存位置:ipvsadm -S >/root/ipvsadm.conf
  
# ipvsadm -S >/root/ipvsadm.conf
# more ipvsadm.conf
-A -t 10.40.0.230:http -s wrr


  手动恢复保存的配置文件:ipvsadm -rRemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.40.0.230:80 wrr
  

  添加RIP主机到负载均衡LVS中。
  
# ipvsadm -a -t 10.40.0.230:80 -r 192.168.1.10 -m
# ipvsadm -a -t 10.40.0.230:80 -r 192.168.1.20 -m
  

  查看ipvsadm当然工作状态。
  
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.40.0.230:80 wrr
-> 192.168.1.10:80            Masq    1      0          0         
-> 192.168.1.20:80            Masq    1      0          0         
  

  

  lvs配置很简单,应用中注意各个网卡的设置,特别是路由设置,建议检查一下,通常使用虚拟机时这些问题注意的比较多。
  

  二、DR模型实验
  

  1、禁止realserver上的VIP直接和前端路由进行通信的三种方案:
  1、修改路由,使用静态arp,arp绑定
  2、在realserver上使用arptables,禁止响应对vip的广播请求。
  
  3、在realserver上修改其内核参数,并将vip配置在与rip不同的接口上,通常是lo。
  
arp_ignore:用来定义arp响应限制级别                0:响应任意本地接口的请求                1:如果目的ip地址是本地进入的接口,就响应,非直连接口不响应。
   arp_announce:定义arp通告级别   0:通告任何针对本地地址的请求,任意端口都通告。   1:尽量不通告目标接口不是此接口的请求,比如eth0接口不会通告针对本地eth1接口的请求。   2:使用最合适的本地接口进行通告。绝对不响应非本接口请求,比2严格。  

  2、强制realserver使用vip作为源地址发送响应报文,通常使用一条路由在进行强制。
  

  3、网络规划
  3.1RIP/DIP/VIP在同一个网络中,网关可以指向同一个路由,配置最简单。
http://note.youdao.com/src/2393F4AFB6C1469CA27999BC184CBDD5
  我的实验是在虚拟机上完成的,具体虚拟机配置如下:
  director server
  eth0:10.40.0.58 桥接模式
# ifconfig eth0:1 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up
# route add -host 10.40.0.51 dev eth0:1
  
# ipvsadm -A -t 10.40.0.51:80 -s wlc
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.54:80 -g -w 1
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.55:80 -g -w 1
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.56:80 -g -w 1
  
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.40.0.51:http wlc
-> 10.40.0.54:http            Route   1      0          0         
-> 10.40.0.55:http            Route   2      0          0         

-> 10.40.0.56:http            Route   2      0          0         
  

  Realserver1:
  eth0:10.40.0.54 桥接模式
  Realserver2:
  eth0:10.40.0.55 桥接模式
  Realserver3:
  eth0:10.40.0.56 桥接模式
  具体配置如下:
$ifconfig eth0 10.40.0.54/24
  
$ 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
# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

# route add -host 10.40.0.51 dev lo:0
  

$ifconfig eth0 10.40.0.55/24
  
$ 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
# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

# route add -host 10.40.0.51 dev lo:0
$ifconfig eth0 10.40.0.56/24
  
$ 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
# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

# route add -host 10.40.0.51 dev lo:0
  3.2RIP同VIP不在同一个网段,在需要另外指定添加一个路由器用于和rip相连,并指定网关为此路由器,然后此路由在自由选择出口方法
http://note.youdao.com/src/EFF45D7F01D94414A7769AB704DF3C15
  我的实验是在虚拟机上完成的,具体虚拟机配置如下:
  director server
  eth0:10.40.0.58 桥接模式 有线网卡
  eth1:192.168.1.10 桥接模式wifi网卡
  具体配置如下:
  1、配置vip、dip(dip就是eth1的ip地址了),关闭防火墙,开启ip_forward转发
# ifconfig eth0:1 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up
# route add -host 10.40.0.51 dev eth0:1
  
# ipvsadm -A -t 10.40.0.51:80 -s wlc
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.54:80 -g -w 1
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.55:80 -g -w 1
# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.56:80 -g -w 1
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.40.0.51:http wlc
-> 192.168.1.11:http            Route   1      0          0         
-> 192.168.1.12:http            Route   2      0          0         
  Realserver1:
  eth0:10.40.0.54 桥接模式wifi网卡
  Realserver2:
  eth0:10.40.0.55 桥接模式wifi网卡
  Realserver3:
  eth0:10.40.0.56 桥接模式wifi网卡
$ifconfig eth0 192.168.1.11/24
  
$ 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
# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

# route add -host 10.40.0.51 dev lo:0

$route add default gw 192.168.1.1
  

$ifconfig eth0 192.168.1.12/24
  
$ 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
# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

# route add -host 10.40.0.51 dev lo:0
$route add default gw 192.168.1.1
  

  




页: [1]
查看完整版本: linux集群之LVS入门和企业级实战(续一)