实例详解LB根据LVS架构之NAT、DR模型架构完成web效劳负载均衡51CTO博客 - 乐橙lc8

实例详解LB根据LVS架构之NAT、DR模型架构完成web效劳负载均衡51CTO博客

2019-01-03 16:28:59 | 作者: 冷霜 | 标签: 效劳,负载,均衡 | 浏览: 1202

     咱们在上博文“运维工程师必备之负载均衡集群及LVS详解”中具体介绍了负载均衡和集群的根本理论和类别,此处不在具体介绍,在本篇博文中则主要以LB负载均衡集群的类别:NAT和DR模型的web网络架构进行实例介绍,以便咱们进一步了解负载均衡集群的理论架构和运用场景!

一、架构渠道环境:

渠道:RedHat Enterprise Linux 5.8        ipvsadm             ipvs
相关效劳和姓名的界说:
Director:负载调度集群的主机,也简称DR
VIP:Virtual IP,向外供给效劳的IP
RIP:Real Server IP,内部真实供给效劳的
DIP:与内部主机通讯的IP,在DR主机上
CIP:客户端IP

二、架构类型模型的简介

    ⑴、NAT模型

 NAT模型:地址转化类型,主要是做地址转化,类似于iptables的DNAT类型,它经过多方针地址转化,来完结负载均衡,一个Director最多负载供给10个Real Server主机

特色和架构要求:

1、LVS上面需求双网卡:DIP和VIP

2、内网的Real Server主机的IP有必要和DIP在同一个网络中,并且要求其网关都需求指向DIP的地址

3、RIP都是私有IP地址,仅用于各个节点之间的通讯

4、Director坐落client和Real Server之间,负载处理一切的进站、出站的通讯

5、支撑端口映射

6、一般运用在较大规划的运用场景中,但Director易成为整个架构的瓶颈!

     ⑵、DR模型

DR模型:直接路由模型,每个Real Server上都有两个IP:VIP和RIP,可是VIP是躲藏的,便是不能进步解析等功用,仅仅用来做恳求回复的源IP的,Director上只需求一个网卡,然后运用别号来装备两个IP:VIP和DIP

      Director在接受到外部主机的恳求的时分转发给Real Server的时分并不更改方针地址,仅仅经过arp解析的MAC地址进行封装然后转给Real Server,Real Server在接受到信息今后撤除MAC帧封装,然后直接回复给CIP。

     企业中最常用的便是LB架构便是DR模型

特色和架构要求:

   1、各个集群节点有必要和Director在同一个物理网络中

   2、RIP地址不能为私有地址,能够完结快捷的远程管理和监控

   3、Director仅仅负责处理入站恳求,呼应报文则由Real Server直接发往客户端

   4、集群节点Real Server 的网关必定不能指向DIP,而是指向外部路由

   5、Director不支撑端口映射

   6、Director能够支撑比NAT多许多的Real Server

    留意:因为在负载均衡集群和高可用集群的时分要求效劳器的时刻有必要共同,否则将会呈现效劳不协调等致命性的过错,咱们这儿把DR设置成为时刻效劳器,来为RS1和RS2供给时刻校准,从而来确保负载均衡集群的正常运转!(关于时刻效劳器NTP-SERVER的建立和装备我会在后两天的时刻里宣布博文具体介绍时刻效劳器的装置和装备),当然假如没有时刻效劳器也能够自己手动设置各个效劳器的时刻来确保时刻的共同性!

三、LB依据LVS的web架构之NAT完结web效劳的负载均衡

⑴、计划规划和架构图

     Director需求两个网卡:DIP和VIP

     RS上各需一个网卡即可

   因为此处是在虚拟机中测验实验,为了便于实验和建立,此处的CIP和VIP没有挑选公网内的IP,实际的建立中挑选公网IP的时分路由会主动寻路的,这儿挑选同一个网络中是为了不在设置路由信息了。能够直接建立环境进行测验

⑵、架构过程

1、在web-RS1和web-RS2上别离依照规划设置IP地址和web效劳,此处运用yum进行软件包的装置,便于处理软件包之间的依靠联系!(yum的装置和装备见:Linux体系常用的软件管理工具rpm、yum及软件源码编译装置装备web1的RIP

vim /etc/sysconfig/network-scripts/ifcfg-eth0     #修改网络装备,装备如下
DEVICE=eth0    
BOOTPROTO=static     
ONBOOT=yes     
IPADDR=192.168.7.3     
NETMASK=255.255.255.0
GATEWAY=192.168.7.2

然后重启网络效劳即可

service network restart

为了效劳出问题,咱们这儿先把selinux给封闭了

      时刻校准:

            ntpdate 192.168.7.2       #留意时刻的同步,我这儿把DR和NTPserver设置在了同一台效劳器上了!若没ntp-server也可也手动设置时刻,只需确保各个效劳器之间的时刻相同就行!

    然后来装置咱们的httpd效劳吧!

yum –y install httpd                #运用yum装置httpd效劳

echo "web1.chris.com" > /var/www/html/index.html    #设置主页内容

    至此web1上的根本装备根本完结!下面在web2进步行相关的装备吧!

WEB-RS2

装备web2的RIP

vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改网络装备,装备如下
DEVICE=eth0     
BOOTPROTO=static      
ONBOOT=yes      
IPADDR=192.168.7.4      
NETMASK=255.255.255.0
GATEWAY=192.168.7.2

然后重启网络效劳即可

service network restart

封闭selinux

     setenforce 0

永久封闭

    vim /etc/selinux/config    设置内容SELINUX=permissive

校准时刻  

装置httpd效劳

    yum -y install httpd  

    echo "web2.chris.com" > /var/www/html/index.html #设置主页内容

至此咱们web-RS2上的根本设置根本完结了

⑵、测验web-RS1和web-RS2上的web效劳能够正常作业

在RS1和RS2上发动httpd效劳:

    service httpd start

在DR效劳器进步行httpd的效劳的测验:

⑶、DR上面的装备

1、先装备网络:eth0-DIP和eth1-VIP

vim /etc/sysconfig/network-scripts/ifcfg-eth0  设置内容如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]     
DEVICE=eth0      
BOOTPROTO=static      
ONBOOT=yes      
IPADDR=172.16.7.1                           #DIP地址      
NETMASK=255.255.0.0      
GATEWAY=172.16.7.49                     #此网关设置需求依据实际需求设置,我这儿设置的是运用我物理卷的IP进行网络拜访来架起NTP-SERVER了!      
HWADDR=00:0c:29:84:7c:a6
vim /etc/sysconfig/network-scripts/ifcfg-eth1 设置内容如下:
DEVICE=eth1     
BOOTPROTO=static      
IPADDR=192.168.7.2                            #VIP地址      
NETMASK=255.255.255.0      
ONBOOT=yes      
HWADDR=00:0c:29:84:7c:b0

2、封闭selinux

和上面的设置相同

暂时封闭selinux

setenforce 0

永久封闭

vim /etc/selinux/config 设置内容SELINUX=permissive

时刻同步:

现在192.168.7.2自己自身便是NTP时刻效劳器,它的时刻便是标准时刻不需求同步!

⑶、LVS依据NAT的装备

1、LVS模块:内核模块ipvs和用户空间指令ipvsadm的装置。

   在linux 2.4.23之后及2.4.23的内核中i现已内置了ipvs模块,不需求咱们自己再手动编译为内核打补丁了,运用grep -i 'ip_vs' /boot/config-2.6.18-308.el5  能够检查内核编译的时分是否编译了ipvs功用

OK!那咱们只需求为装置咱们的用户模块:ipvsadm即可

yum –y install ipvsadm    #装置ipvsadm

 2、装备LVS依据NAT完结负载均衡集群

ipvsadm -A -t 172.16.7.1:80 -s rr                  #增加集群
ipvsadm -a -t 172.16.7.1:80 -r 192.168.7.3 –m     #增加节点
ipvsadm -a -t 172.16.7.1:80 -r 192.168.7.4 –m     #增加节点

到此咱们根本的装备现已完结,下面来测验下吧

  此刻咱们恳求的页面Directorserver会运用轮询的方法顺次交流让web效劳器来供给页面的呼应,可是有时分咱们的效劳器的功用差异比较大,这时分期望效劳器功用比较好的效劳器来呼应更多的恳求,则是就需求修改写负载均衡的算法了,把rr修改为wrr给其加上权重!

此刻在进行页面测验,作用如下

OK,至此,咱们的LVS依据NAT形式来完结web效劳的负载均衡就现已建立完结了,下面咱们进行依据DR形式的负载均衡把!

四、LB依据LVS的web架构之DR完结web效劳的负载均衡

⑴、计划规划和架构图

每个效劳器上需求一个网卡即可,Director的VIP在eth0:0上,DIP在ETH0上,而RS上的DIP在eth0上,VIP装备在lo:0上,并且VIP和DIP都有必要为公网的IP。这样才干完结以RS直接回复客户端的恳求!

关于DR模型有两种:

    DR的DIP和VIP、RIP都是在同一网段内的效劳器

    VIP为公网地址,DIP和RIP为私有地址,则此刻需求把RS的网关指向别的一个路由接口,来运用arp解析RS的发送报文,来确保eth0结构能够与外部网络通讯。

    咱们这儿就以一切IP地址否是公网IP来进行实验了

⑵、通讯原理:

    每个Real Server上都有两个IP:VIP和RIP,可是VIP是躲藏的,便是不能进步解析等功用,仅仅用来做恳求回复的源IP的,Director上只需求一个网卡,然后运用别号来装备两个IP:VIP和DIP

    Director在接受到外部主机的恳求的时分转发给Real Server的时分并不更改方针地址,仅仅经过arp解析的MAC地址进行封装然后转给Real Server,Real Server在接受到信息今后撤除MAC帧封装,然后直接回复给CIP。

   而此刻需求封闭RS上的依据VIP的arp解析,在linux内核2.4今后,内核中都内置了这种功用,经过一些设置能够封闭其arp的功用:

      arp_ignore:界说接收到ARP恳求时的呼应等级      
          0:默许,只用本地装备的有呼应地址都给予呼应      
          1:仅仅在方针IP是本地地址,并且是装备在恳求进来的接口上的时分才给予呼应(仅在恳求的方针地址装备恳求抵达的接口上的时分,才给予呼应)      
      arp_announce:界说将自己的地址向外布告时的等级      
          0:默许,表明运用装备在任何接口的任何地址向外布告      
          1:企图仅向方针网络布告与其网络匹配的地址      
          2:仅向与本地接口上地址匹配的网络进行布告      
       留意:要想让其功用收效,有必要先设置相关设置,然后在装备IP地址等信息

⑶、架构过程

1、DR1-web效劳器的设置

与上面的设置相同,具体过程如下,其设置不在具体介绍!

   ①、封闭arp恳求呼应---这个有必要先设置在再设置IP否则就不能收效了

    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  #设置地址向外布告时的等级      
    echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce  
    echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore    #界说接收到ARP恳求时的呼应等级      
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

留意:此处经过界说这两个才干完结封闭lo上的arp解析功用的呼应

这时来自director上面的两个网卡lo和eth0,布告和解析的时分都是经过eth0来进行解析完结的,这样经过封闭此功用来完结用户恳求的报文的网卡和IP不在同一个接口上的时分不予呼应--arp-ignore      
   linux中有一种行为,数据报文从哪个接口出去便是运用哪个接口作为源地址进行数据封装。所以此处转发的时分的呼应报文就不契合规矩了,此刻需求经过增加一条路由规矩来完结数据的方针地址做为源地址。所以咱们需求经过增加一条路由来处理这个问题,在下面咱们装备ip的时分再说吧!

②、装备ip地址

DEVICE=eth0     
BOOTPROTO=static      
IPADDR=172.16.7.3      
NETMASK=255.255.0.0      
GATEWAY=172.16.7.49                #此刻的网关不再需求指向DS的DIP      
ONBOOT=yes      
HWADDR=00:0c:29:29:c4:5a


然后重启网络效劳并在lo:0上装备VIP

③、装置并装备httpd效劳,上面的现已装备过,这儿不在从头设置

2、DR2-web效劳器的设置

重启网络效劳,然后设置本机的arp恳求解析等级并设置VIP

③、装置并装备httpd效劳,上面的现已装备过,这儿不在从头设置。

3、DS效劳器的设置

装备网络地址:

在eth0上的DIP:172.16.7.2/16
DEVICE=eth0     
BOOTPROTO=static      
ONBOOT=yes      
IPADDR=172.16.7.2      
NETMASK=255.255.0.0      
GATEEAY=172.16.7.49      
HWADDR=00:0c:29:84:7c:a6
在eth0:0上的VIP:172.16.7.1/16

在RS1和RS2上别离发动httpd效劳,然后在DS上测验其是否能作业正常

service httpd start

OK,根本的网络设置咱们现已装备完结了,那么下面来进行LVS依据DR模型的设置吧,其实也很简略,指令如下:

下面来测验下咱们的作用吧

OK,到此咱们就完结了LVS依据DR模型的架构来完结web效劳的负载均衡集群!下面再介绍下LVS的耐久衔接的相关内容吧!

五、LVS的耐久衔接

     1、根本原理和简介

       在互联网购物、网上银行进行买卖的时分,需求用到耐久衔接,那么什么是耐久衔接呢?

       LVS的耐久衔接,是一种不依据算法,来完结在一段时刻内,将来自于同一个客户端的恳求都派发给同一个real server。

       其作业机制是:在内存缓存区内,其间记录了每个客户端及其分配给它的RS的映射联系。  

    2、敞开LVS的长衔接

ipvsadm -A|E ... -p timeout;   运用-p timeout关键字就能够敞开LVS的长衔接

     其间timeout默许时长是300秒,默许单位秒

3、LVS的类型

PPC:耐久端口衔接、将来自于同一个客户端的同一个效劳的恳求一直定向到同一个real server

     fg:ipvsadm -A -t 172.16.7.1:80 -s rr –p

PCC:耐久客户端衔接,将来自于同一个客户端的一切效劳都一直定向至此前选定的RS

     fg:ipvsadm -A -t 172.16.7.1:0 -s rr –p   (0代表一切端口),只用运用了PCC,便是把一切端口通通界说为集群效劳,一概向RS转发,PCC界说的是一切端口

PNMPP:耐久防火墙符号衔接,能够界说端口间的引擎联系的。经过PREROUTING上对端口进行打标纪,来完结部分端口的集群,把几个毫不相关的效劳绑在一同完结集群

fg:

iptables -t mangle -A PREROUTING -d 172.16.7.1 -i eth0 -p tcp --dport 80 – j MARK --set-mark 8   #prerouting代表在进入主机之前就打好符号      
       iptables -t mangle -A PREROUTING -d 172.16.7.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8

在lVS内启用PNMPP      
       ipvsadm -A -f 8 -s rr      
       ipvsadm -a -f 8 -r 172.16.7.3 -g -w 2      
       ipvsadm -a -f 8 -r 172.16.7.4 -g -w 3

耐久性衔接的装备上上面的集群负载均衡的装备相同,仅仅增加了个参数罢了,这儿不在举例说名了,还望体谅~

      上面仅仅咱们完结的比较简略的集群功用,当然这样简略的集群式构建后来的高可用集群的根底,有必要要能娴熟建立,可是此刻的负载均衡看着仍是比较软弱的,例如:RS1挂了,这是DS仍是运用咱们指定的规矩来供给效劳的,当轮到RS1的时分咱们的网络就无法拜访到了,这是咱们就需求来运用相关脚原本完结对效劳器健康状况的健康,从而来确保效劳的不间断性,是不是有点像高可用集群了,哎~写脚本需求时刻来渐渐的琢磨,并进行多方的测验,才干用在生成环境中,当然咱们后边的高可用负载均衡是能够很简单处理这个问题的,假如你想训练训练自己的思维能力,就自己着手写个脚本吧~我的还没写出来~嘿嘿,脑子不是很好啊!等过两天写好了在同享给咱们,到时分还望各位多提点优化的定见!

      此刻咱们的负载均衡效劳器还能够结合存储效劳器来确保数据的安全性和共同性!例如运用一个nfs效劳器来确保咱们不管拜访的是那个主机其主页面都是相同的,这个是很简略的,大致过程为下:

      1、装备nfs同享目录

      2、RS1和RS2别离把同享目录挂载到主页目录放置的方位/var/www/html/下,在其同享目录上供给主页面即可!


      以上内容仅是我个人对LVS架构的一切了解,总结的还不行全面,还望各位大神见谅并提出弥补!谢谢~

                                                                                                         chrinux-(chris linux)

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章