LVS中nat和dr的原理与用法简述

 

LVSnatdr的原理与用法简述

lvs-nat

  多目标IPDNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RSRIPPORT实现转发;

1RIPDIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP

2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;

3)支持端口映射,可修改请求报文的目标PORT

4vs必须是Linux系统,rs可以是任意系统;

blob.png 

请求和响应过程:

ciprip请求时,先是cip作为源,vip作为目标,当请求到达VIP时,源还是cip,但是

目标变成了rip,并通过diprip。源ip始终不变。

rip响应请求时,rip作为源ipcip作为目标ip,经由dip转发。转发完成后,vip为源ipcip为目标。目标ip始终不变。

Ivs-nat示例:

实验环境:

    1、一台director;安装ipvsadm

       内网ip192.168.1.1   外网ip10.1.64.1

    2、两台后端服务器,分别部署httpd服务。将网关指向192.168.1.1,并且打开核心转

       发功能。echo 1 >  /proc/sys/net/ipv4/ip_forward 。并提供测试页。并且三台机器

       的时间同步。

实验步骤:

    1、搭建好实验环境。

    2、部署ipvsadm策略

       ipvsadm  -A  -t  10.1.64.1  -s  rr

       ipvsadm  -a  -t  10.1.64.1  -r  192.168.1.2  -m

       ipvsadm  -a  -t  10.1.64.1  -r  192.168.1.3  -m

    3、测试

      For  i  in  {1..9}; do  curl  http://10.1.64.1;  done

blob.png 

 

lvs-dr

Direct Routing,直接路由;

  通过为请求报文重新封装一个MAC首部进行转发,源MACDIP所在的接口的MAC,目标MAC是某挑选出的RSRIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;

   

Director和各RS都得配置使用VIP

(1) 确保前端路由器将目标IPVIP的请求报文发往Director

(a) 在前端网关做静态绑定;

(b) RS上使用arptables

(c) RS上修改内核参数以限制arp通告及应答级别;

arp_announce

arp_ignore

(2) RSRIP可以使用私网地址,也可以是公网地址;RIPDIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

(3) RSDirector要在同一个物理网络;

(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client

(5) 不支持端口映射;

blob.png 

请求和响应的具体过程:

任何本地通信,都是通过Mac地址进行的,IP仅仅是实现网络间通信的。当路由器的网络

接口到real serverdirector的网络接口都是有Mac地址封装转发的。

当路由器收到来自客户端的请求报文时,路由发现Mac地址是自己的,就将其报文拆解,

发现目标IP不是自己,需要转发,就会在网路中进行ARP广播,寻找VIPMac地址,然后

Directorreal server 都会响应路由的广播,但是不能让real server响应路由的广播。否则将造

成路由混乱,可能路由会直接将报文发送给real server而不经过director

为了避免路由混乱问题:

    1、不让路由发广播,直接将directorMac地址绑定。但是若以后对director做冗余

的时候,Mac地址就不能绑定了。

    2、对real server的物理网卡上做ARPtables,在Mac层做防火墙,用来限制ARP广播,

明确说明那些广播通告可以出去(进入),哪些不可以出去(进入)。

        3RS上修改内核参数以限制arp通告及应答级别;

             arp_announce

             arp_ignore

当客户端的请求到达前端路由时,路由向全网发广播,但是由于对real server做了策略限

制,因此只有director响应路由的广播,因此所有的请求都会到达directordirector通过为请求报文重新封装一个MAC首部进行转发,源MACDIP所在的接口的MAC,目标MAC是某挑选出的RSRIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;然后通过交

换机发送给real server

响应时,源目标是RIP,目标ipCIP,但是cip并未访问rip,所以得强行限制该响应报文

先到lovip,通过vip到达cip

 

IVS-dr实验示例:

示例一:

①客户端一台(192.268.249.148)    directordip 10.1.64.1.1)主机一台。

Real server主机2台。(rip1:10.1.64.2    rip210.1.64.3

VIP10.1.64.10

②在real server主机中分别部署两台httpd服务。在生产环境中两台httpd服务的内容应该是一

  样的,以达到负载均衡的目的。在该实验中为了达到实验效果可以将两台httpd服务的网页

  内容稍加区别。

  Rip1 :测试页内容RS1           rip2:测试页内容RS2

③在director主机的物理网卡上设定别名,ip地址指向VIP10.1.64.10

  Ifconfig  eth0:0  10.1.64.10  netmask  255.255.255.255  broadcast  10.1.64.10  up

④在director主机上设定ipvsadm策略。

  Ipvsadm  -A  -t  10.1.64.10:80  -s  rr

  Ipvsadm  -a  -t  10.1.64.10:80  -r  10.1.64.2  -g  -w  1

  Ipvsadm  -a  -t  10.1.64.10:80  -r  10.1.64.3  -g  -w  1

blob.png 

⑤在两台real server主机中设置响应和通告级别

  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

⑥在客户端主机中用curl测试,如图所示,在不断的请求时两台httpd服务会以轮循的方式响

  应客户端。

   blob.png

⑦在实验过程中注意防火墙和SElinux的设置。建议清空防火墙和关闭SElinux

 

示例二:

①在上述实验原有的基础上,在real server主机上部署MySQL服务。对MySQL做负载均衡。

②为两台MySQL服务添加可以远程连接的用户,两台MySQL服务的用户名要相同。

  Real server1

    mysql

    GRANT  ALL  ON  *.*  TO  test@10.1.%.%  IDENTIFIED  BY  testpass;

    FLUSH  PRIVILEGES;

  Real server2

    mysql

    GRANT  ALL  ON  *.*  TO  test@10.1.%.%  IDENTIFIED  BY  testpass;

    FLUSH  PRIVILEGES;

  为了显示实验效果,在real server2中添加一张表;

CREATE  DATABASE  zhangzhide;

③在director主机上添加ipvsadm策略

  Ipvsadm  -A  -t  10.1.64.10:3306  -s  rr

  Ipvsadm  -a  -t  10.1.64.10:3306  -r  10.1.64.2  -g  -w  1

  Ipvsadm  -a  -t  10.1.64.10:3306  -r  10.1.64.2  -g  -w  1

blob.png 

④在客户机上测试MySQL的负载均衡

blob.png 

 

 

示例三、

FWMFireWall Mark

通过在director主机上的防火墙上打标记的方式将MySQLhttpd服务放在同一个集群中。

为了不受上述实验的ipvsadm策略的影响,建议将其清空ipvsadm -C

①在director主机防火墙上打标记。

  iptables -t mangle -A PREROUTING -d 10.1.64.10 -p tcp -m multiport –dports 80,3306 -j MARK

             –set-mark 11

②在director主机上写ipvsadm策略

  ipvsadm  -A  -f  11  -s  rr

  ipvsadm  -a  -f  11  -r  10.1.64.2  -g  -w  1

  ipvsadm  -a  -f  11  -r  10.1.64.3  -g  -w  2

blob.png 

③在客户机上分别测试httpd服务和MySQL服务。

  测试MySQL

blob.png 

测试httpd服务

blob.png 

 

示例四、

Prot affinity

借助于FireWall Mark能够完成将多个端口绑定在一起,并使用持久连接来实现统一调度

之效用。

blob.png 

 

 

 

原创文章,作者:zzd,如若转载,请注明出处:http://www.178linux.com/56240

(0)
zzdzzd
上一篇 2016-10-30 21:02
下一篇 2016-10-30 21:02

相关推荐

  • 文本处理工具之sed

                         文本处理工具之sed 一 、sed的简介    1、Stream EDitor…

    2017-05-01
  • 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件

    在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。 ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S) ~]# tree /tmp 查看输出结果 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。 …

    Linux干货 2016-11-06
  • 网络配置、nmcli

    CentOS 7 网络属性配置    rhel6 之前,网络接口使用连续号码命名:eth0 、eth1 等, 当增加或删除网卡时,名称可能会 发生变化    rhel7 使用基于硬件,设备拓扑和设置类型 命名:    (1) 网卡命名机制    &n…

    Linux干货 2016-09-23
  • Linux计划任务和进程

    一、进程管理 1.进程简介 一个程序对应多个进程;一个进程对应一个程序。 2.进程状态的查看与控制 查看进程状态 w 查看个别用户的进程 eg: w userName list-info JCPU: PCPU: WAHT: from: IDLE: 用户空闲时间 load average: ps -aux -a: 显示所有用户的进程 -u:显示用户名和启动时间…

    2017-09-09
  • Linux用户操作、文件操作、文件筛选

    Linux用户操作、文件操作、文件筛选 编辑/etc/group文件,添加组hadoop。手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 vim /etc/group hadoop:x:1001: vim /etc/passwd hadoop:x…

    Linux干货 2016-11-17
  • linux启动流程

    linux组成 Linux: kernel+rootfskernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc库:函数集合, function, 调用接口(头文件负责描述)过程调用:procedure,无返回值函数调用:function程序:二进制执行文件 内核设计流派:单内核(monolithic ker…

    2018-01-01