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

相关推荐

  • Linux删除特殊字符文件

    由于很多原因可能会导致一些文件的文件名是乱码,当我们删除的时候就会发现这个文件名既不能自动补全,也不能直接删除。

    2017-11-11
  • Apache-httpd工作模型

    httpd   httpd是由apache软件基金会开发的一款著名的web服务器软件。由于其开放源代码,并且拥有跨平台、功能强大、安全稳定等特性,而被广泛使用。早期httpd是在修修补补的基础上成长起来的,所以早期也叫作a pachey server,由于开发httpd的组织叫作apache,因此httpd也被称作apache。httpd有三个长线维护版本,…

    Linux干货 2017-02-15
  • 根分区伸缩实验

    众所周知LVM是Linux环境下对 磁盘进行管理的一种机制。用户在安装Linux操作系统时,难以分配合适的硬盘空间,当一个分区存放不下某个文件时,这个文件因为文件系统的限制,也不能 跨越多个分区来存放。而遇到出现某个分区耗尽时,只有使用调整分区大小的工具。随着LVM功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方 便…

    Linux干货 2015-05-27
  • N23-第一周 记流水账

      机器已经设置好了  屏幕左边是linux控制台,屏幕中间放置记事本来记笔记,屏幕右边是教学视频,如图 费我老大劲 笔记本的无线网卡驱动不好弄啊   注重操作实践,全程跟着操作,一定要照着做,动手啊动手…………..前十五天内容以查漏补缺为主,所以笔记是兴之所至,遵循以下原则:&n…

    Linux干货 2016-09-18
  • VimTutor(上)

    柚子翻译,如有理解错误或翻译错误,请指正! VimTutor Vim是一款强大的文本编辑器,拥有多命令的特性,tutor解释了其中大多数命令。 tutor是为了描述足够多的Vim命令帮助你轻松使用Vim而被制作的,使Vim能成为一个可完成你所有工作意图的编辑器。 完成tutor的内容大概需要25-30分钟,所完成时间取决于你通过时间积累的经验。 注意: 1.…

    Linux干货 2015-10-18
  • N26-第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相 关示例演示。 文件管理类命令:mkdir rmdir cp rm mv ①mkdir命令:创建目录 格式:mkdir [OPTION]… DIRECTORY… option -m, –mode=MODE -p, –paren…

    Linux干货 2017-02-02