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

相关推荐

  • Linux中的权限修改指令及正则表达式

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 [root@centos6 ~]# cp -r /etc/skel/ /home/tuser1 [root@centos6 ~]# ls -la&…

    Linux干货 2016-10-24
  • 计算机和linux基础

    计算机的组成及其功能 计算机硬件主要由5部分组成:运算器 、控制器、存储器、input、output。 但是这和我们平时见到的计算机不一样?我们平时见到的计算机有CPU,内存,硬盘,显示器,鼠标键盘,显卡、主板等。这些东西也都归在以上五类设备中。下面我们简单介绍一下计算机这五个组成部分。 运算器: 运算器是计算机中做运算的部分,可以执行各种指令,加减乘除,与…

    Linux干货 2016-09-16
  • linux权限管理

    linux文件权限    文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。 上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?    …

    Linux干货 2016-08-04
  • 学习札记:用户管理,权限管理和ACL欢乐”斗地主”

    补充:touch /etc/nologin 启动系统维护功能,其他用户不能登陆,除了管理员,可以自定义内容,在普通用户登陆的时候可以看到相关维护提示,解除维护模式的话,必须要删除该文件,另外可以创建/run/nologin达到相同的效果(仅限于CentOS 7), 用户属性修改 usermod [OPTION] login -u UID: 新UID -g G…

    Linux干货 2016-08-04
  • N26 第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥(network bridge) 网桥工作于物理层与数据链路层,在终端设备较多的局域网中可以用网桥设备将局域网分离为不同的冲突域(collision domain),减少网络冲突,提升网络传输效率 集线器(network hub) 集线器具有多个I/O端口,一个端口的输入信号…

    2017-02-25
  • Linux软件包管理之程序包编译安装

    程序包编译 程序包编译安装: Application-VERSION-release.src.rpm–>      安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装 源代码–>预处理–>编译(gcc)–>汇编&#82…

    Linux干货 2016-08-25