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

相关推荐

  • SELinux——有趣的标签

    SELinux ·SELinux: Secure Enhanced linux,工作与Linux内核中 ·DAC:Discretionary Access Control 自由访问控制 ·MAC:Mandatory Access Control  强制访问控制        &n…

    Linux干货 2016-09-18
  • Linux—文本处理(查看,统计,排序,抽取,合并,grep,基本正则表达式)

    Linux的文本管理有着众多的文本命令工具,这些工具基本可以满足不同的文本处理要求,很是灵活,掌握文本管理命令对系统的维护是必备基础技能。 1.文本查看命令:     (1)cat        语法:        cat [OPTION]… […

    Linux干货 2016-08-07
  • SHELL流程控制之循环

    当进行脚本编程时,语句执行的流程控制通常有三种: l  顺序执行 l  选择执行 l  循环执行   条件选择if: if语句可以进行嵌套 if 判断条件;then          条件为真的分支代码 elif  判断条件;th…

    Linux干货 2016-08-18
  • 第二次作业

    一、只显示某目录下隐藏文件    答案1:#ls -d /tmp/*/    但是此答案是我在同学知道下完成,但是原理没明白 如果单独执行        #ls -d  &nbsp…

    Linux干货 2016-08-03
  • Linux用户和组的相关管理命令(一、用户的相关命令)

    Linux是一个可以实现多用户登录的操作系统,通过su – 用户名 可以进行用户之间的切换,从而完成不同登录用户下对私有文件的操作,同时,每个用户有且只有一个主组,但是可以有零个或多个附加组,每个组可以是一个用户的主组,同时还可以是多个用户的附加组。因此,熟练掌握用户和组的相关命令十分重要。 首先,要了解用户和组的配置文件各有两个: 与用户相关的…

    2017-07-22
  • 进程管理工具

    进程管理工具 kill man 7 signal 1) SIGHUP: 无须关闭进程而让其重读配置文件 kill -1 进程编号 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 9) SIGKILL: 杀死正在运行的进程 再生进程 kill -9 杀不掉 15) SIGTERM:终止正在运行的进程 kill -15/或不写(默认) +进程编号。…

    Linux干货 2016-09-11