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
下一篇 2016-10-30

相关推荐

  • 文件系统知一二

    文件系统知一二 What?文件系统是什么?     我们经常说文件系统,那么文件系统是什么东西呢?    计算机的文件系统是一种存储和组织计算机数据的组织结构。 常见的文件系统有哪些?           &n…

    Linux干货 2016-03-09
  • 基本脚本编译

                                  …

    2017-08-05
  • 关于Linux系统无法启动的问题(1)

                                  &nbsp…

    2017-09-04
  • lvs的基本概念及基础配置

    一、知识整理 1、Session:在计算机中,尤其是在网络应用中,称为“会话控制、时域”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将…

    Linux干货 2016-11-11
  • iptables归纳总结

    先简单介绍下iptables IPTABLES的几点概念  1、容器:包含或者说属于的关系  2、Netfilter/iptables是表的容器,iptables包含的各个表 (filter,NAT,MANGLE,RAW)  3、iptables的表tables又是链的容器 链chains:INPUT,OUTPUT,FORWAR…

    Linux干货 2017-05-02
  • 20160809作业

    一、如何设置tab缩进为4个字符       临时设置:set tabstop=4       全局设置vim /etc/vimrc—>添加set tabstop=4       当前用户生效,手动添加文…

    Linux干货 2016-08-10