构建黄金组合LVS + Keepalived高可用负载均衡集群51CTO博客 - 乐橙lc8

构建黄金组合LVS + Keepalived高可用负载均衡集群51CTO博客

2019年04月12日11时07分48秒 | 作者: 海逸 | 标签: 负载,集群,均衡 | 浏览: 1818

要点:每个节点时刻都同步哈!

[root@DR2 ~]# ntpdate time.windows.com && hwclock -w

1、环境简介:

1)虚拟机:VMware ESXi 5.5 (CentOS 6.4 x86-64装置在其间)

2)操作体系: CentOS 6.4 x86-64

3)Keepalived版别: Keepalived-1.2.9

4)IPVS管理东西IPVSadm-1.26

5) Linux/Unix东西Xmanager 4.0 (Xshell)


2、禁掉防火墙和Selinux

(1) 禁掉防火墙

(2) 禁掉Selinux

vim /etc/selinux/config

(3) 最终,有必要重新发动体系

shutdown -r now

要点: DR2、Real Server1和Real Server2如下图所述完结!

3、检查DR1与DR2的连通性:

//在DR1上别离ping DR2的public IP和private IP,如下图所示:

//在DR2上别离ping DR1的public IP和private IP,如下图所示:

一、理论篇:

1-LVS简介:

LVS是Linux Virtual Server的简写,意即Linux虚拟效劳器,是一个虚拟的效劳器集群体系。本项目在1998年5月由章文嵩博士树立,是我国国内最早呈现的自由软件项目之一。章文嵩博士现在作业于阿里集团,首要从事集群技能、操作体系、方针存储与数据库的研讨。(摘自《BAIDU百科》)

2-LVS集群的组成:

LVS效劳器体系由三部分组成:

1)负载均衡层:

坐落整个集群体系的最前端,防止单点毛病一般最少由2台或2台以上负载调度器组成。

2)效劳器群组层:

是一组实在运转运用效劳器的机器组成,Real Server可所以Web、FTP、DNS、Mail 、视频等效劳器中的一个或N个,每个Real Server之间经过高速的LAN/WAN相衔接。为了节约名贵的资源,在出产环境中,Director Server一起身兼Real Server的人物!

3)同享存储层:

为Real Server供给同享存储空间和内容一致性的存储区域。可以为磁盘阵列、Red Hat的GFS文件体系、Oracle的OCFS2文件体系等。

Director Server是整个LVS的中心!到现在为止,Director server只能装置在Linux、FreeBSD上,假如Linux内核是2.6及以上时,则现已内置了LVS的各个模块,不用作任何的设置就支撑LVS功用。

Real Server效劳器简直为一切有体系渠道,如:Windows、Linux、Solaris、AIX、BSD等体系渠道。

3-LVS集群的特色:

(1) IP负载均衡和负载调度算法;

(2) 高可用性;

(3) 高可靠性;

(4) 适用环境;

(5) 开源软件。

4-LVS集群体系的优缺陷:

|-LVS集群体系的长处:

(1) 抗负载才能强

作业在第4层仅作分发之用,没有流量的发生,这个特色也决议了它在负载均衡软件里的功用最强的;无流量,一起保证了均衡器I/O的功用不会遭到大流量的影响;

(2) 作业安稳

自身有完好的双机热备计划,如LVS+Keepalived和LVS+Heartbeat;    
(3) 运用规模比较广

能够对一切运用做负载均衡;    
(4) 装备性比较低

既是长处,也是缺陷,由于没有太多装备,所以并不需求太多触摸,大大减少了人为犯错的几率;    
|-LVS集群体系的缺陷:
(1) 软件自身不支撑正则处理,不能做动态别离,这就凸显了Nginx/HAProxy+Keepalived的优势。    
(2) 假如网站运用比较巨大,LVS/DR+Keepalived就比较复杂了,特别是后边有Windows Server运用的机器,

施行及装备还有保护进程就比较费事,相对而言,Nginx/HAProxy+Keepalived就简略多了。

集群依据事务方针而分为以下几种:

(1) High Availability (高可用): 意图是坚持事务的持续性。

(2) Load Balancing(负载均衡): 将恳求一个个分管到不同一核算机上去,每台核算机独立完结一个用户的恳求的。

(3) High Performance (高功用): 需求一组核算机共同完结一件作业。

5-完结集群产品:

*HA

(1)RHCS: 企业界用得比较多

(2)heartbeat:

(3)keepalived:

(*)黄金组合: LVS + Keepalived (要点)

*LB(负载均衡)

(1)HAProxy;

(2)LVS;

(3)Nginx;

(4)硬件F5;

(5)Piranha :红帽光盘自带的,但在Linux 6.0中又去掉了

*HPC

6-LVS负载均衡技能:

(1)LVS-DR形式(Direct routing):直接路由形式。用得最多!能够跟100个以上Real Server

(2)LVS-NAT形式(Network Address Translaton): 只能跟3~5个Real Server;

(3)LVS-TUN形式(IP Tunneling): 运用于长途,尤其是外网等

7-LVS-NAT特性:

(1)Real Server有必要与Director在同一网络,仅用于与Director效劳器通讯;

(2)Director接纳一切的数据包通讯(包含客户端与Director、Director和real server直接的通讯);

(3)Real Server的默许网关指向Director的实在IP地址;

(4)Director支撑端口映射,能够将客户端的恳求映射到Real Server的另一个端口;(与DR形式的差异)

(5)支撑恣意操作体系; 如:Windows、Linux、FreeBSD、AIX等

(6)单一的Director是整个集群的瓶颈(故一般都是2台或2台以上的Director机器)

8-LVS负载均衡的调度算法(静态)

(1)轮循调度(Round Robin)(rr)(最笨的调度算法)

调度器经过“轮循”调度算法将外部恳求按次序轮番分配到集群中的Real Server上,平等每一台Server,而不论Server上实践的衔接和体系负载。

(2)加权轮循(Weighted Round Robin)(wrr)

调度器经过”加权轮循”调度算法依据实在效劳器的不同处理才能来调拜访恳求。如此保证处理才能强的效劳器能处理更多的拜访流量。调度器能够主动问询实在效劳器的负载状况,并动态地调整其权值。

(3)方针地址散列(Destination Hashing)(DH)(有缓存,方针不变,则不变)

它的调度算法依据恳求的方针IP地址,作为散列(Hash Key)从静态分配的散列表找出对应的效劳器,若该效劳器是可用的且未超载,则将恳求发送到该效劳器,不然返回空。

(4)源地址散列(Source Hashing)(SH) (有缓存,源不变,则不变)

是依据恳求的源IP地址,作为散列键(Hash key)从静态分配的散列表找出对应的效劳器,若该 效劳器是可用的且未超载,将恳求发送到该效劳器,不然返回空。

9-LVS负载均衡的调度算法(动态)

(5)最少链接(Least Connections)(LC)

调度器经过”最少衔接”调度算法动态地将网络恳求调度到已树立的链接数最少的效劳器上。若集群体系的实在效劳用具有附近的体系功用,选用“最少衔接”调度算法能够较好地均衡负载。

公式:LC = 活动衔接数*256 + 非活动衔接数

例如:

(6)加权最少链接(Weighted Least Connections)(WLC) 注:现在最优异的调度算法!

习惯:在集群体系中的效劳器功用差异较大的状况下,调度器选用”加权最少链接”调算法优化负载均衡功用。具有较高权值的效劳器将接受较大份额的活动衔接负载。调度器能够主动问询实在效劳器的负载状况,并动态地调整其权值。

例如:在上表参加Real Server1权值 为3,Real Server2权值为1时,则

公式:WLC = (活动衔接数*256 + 非活动衔接数)/权重

(7)最短的希望的延时(Shortest Expected Delay)(SED)

sed只是在WLC上做了些微调罢了。只核算活动衔接数!

公式:LC = (活动衔接数+1)*256 ÷权重

(8)最少行列调度(Never Queue Scheduling)(NQS)

无需行列。若Real Server的衔接数=0,就直接分配曩昔,不需求再进行sed运算。只核算活动衔接数!

(9)依据部分性的最少衔接(Locality-Based Least Connections)(LBLC)

它的调度算法针对方针IP地址的负载均衡,现在首要用于Cache集群体系。该算法依据恳求的方针IP地址找出该方针IP地址最近运用的效劳器,若该效劳器是可用的且没有超载,将恳求发送到该效劳器;若效劳器不存在,或许该效劳器超载且有效劳器处于一半的作业负载,则用“最少衔接”的准则选出一个可用的效劳器,将恳求发送到该效劳器。(HD动态算法)

(10)带仿制的依据部分最少链接(Locality-Based Leat Connections Witch Replication)(LBLCR)

此调算法也是针对方针IP地址的负载均衡,现在首要用于Cache集群体系。它与LBLC算法的不同之处是它要保护从一个方针IP地址到一组效劳器的映射,而LBLC算法保护从一个方针IP地址到一台效劳器的映射。该算法依据恳求的方针IP地址找出该方针IP地址对应的效劳器组,按“最小衔接”准则从效劳器组中选出一台效劳器,若效劳器没有超载,将恳求发送到该效劳器,若效劳器超载,则按“按最少衔接”准则从这个集群中选出一台效劳器,将该效劳器参加到效劳器组中,将恳求发送到该效劳器。一起,当该效劳器组有一段时刻没有被修正,将最忙的效劳器从效劳器组中删去,以下降仿制的程度。

二、实战篇:

1-装置LVS软件:(别离在DR1和DR2中)

LVS软件包含二部分:

① IPVS模块,LVS现已是Linux规范内核的一部分,直接被编译在内核中!

② IPVS管理东西IPVSadm ,如:IPVSadm-1.26

1)检查是否装置了IPVS模块: 注:LVS现已是Linux规范内核的一部分,直接被编译在内核中!

办法1: 检查IPVS模块是否真的编译到内核中去了,如下图所示:

由上可知,有3个项,阐明这个功用现已编译到内核中了!

办法2: 运用modprobe指令检查,如下图所示:

由上可知,显着装置了支撑LVS的IPVS模块!

2)在DR1上装置IPVS管理软件:

办法1:源码装置


[root@DR1 src]# cd ipvsadm-1.26
[root@DR1 ipvsadm-1.26]# make

//make时,呈现如下所示:

解决办法:

装置以下4个包: (rpm –ivh 软件包名)

(1) popt-1.13-7.el6.x86_64.rpm

(2) libnl-1.1-14.el6.x86_64.rpm

(3) libnl-devel-1.1-14.el6.x86_64.rpm

(4)popt-static-1.13-7.el6.x86_64.rpm

要点:

装置以上4个包后,装置成功,如下图所示:

办法2: yum装置

yum -y install ipvsadm

//检查ipvsadm装置是否成功:

假如显现了ipvsadm的各种用法,则阐明ipvsadm装置成功了!

2-装置Keepalived (别离在DR1和DR2中)

[root@DR1 src]# cd keepalived-1.2.9
[root@DR1 keepalived-1.2.9]# ./configure sysconf=/etc\
> with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/

要点: 保证下面3行是 yes !如下图所示:

//编译之

[root@DR1 keepalived-1.2.9]# make

//装置


//做个软链接

[root@DR1 keepalived-1.2.9]# ln -s /usr/local/sbin/keepalived /sbin/

//查验装置是否成功:

假如显现了Keepalived的各种用法,则阐明Keepalived装置成功了!

//同理DR2中装置keepalived,现在检查装置是否成功:

3-装备keepalived

(1)在DR1上装备keepalived:

最简略的办法:先在记事本中,手艺创立之。仿制到/etc/keepalived/keepalived.conf中,保存即可!

//手艺创立keepalived.conf文件(vim /etc/keepalived/keepalived.conf)

! Configuration File for keepalived
global_defs {
 notification_email {
   acassen@firewall.loc #设置报警邮件地址,能够设置多个,每行1个,
   failover@firewall.loc  #需敞开邮件报警及本机的Sendmail效劳。
   sysadmin@firewall.loc
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.200.1  #设置SMTP Server地址;
 smtp_connect_timeout 30
 router_id LVS_DEVEL
}
     VRRP Instance
vrrp_instance VI_1 {
  state MASTER  #指定Keepalived的人物,MASTER为主机效劳器,BACKUP为备用效劳器
  interface eth0  #BACKUP为备用效劳器
  virtual_router_id 51
  priority 100  #界说优先级,数字越大,优先级越高,主DR有必要大于备用DR。
  advert_int 1
  authentication {
    auth_type PASS  #设置验证类型,首要有PASS和AH两种
    auth_pass 1111  #设置验证暗码
  }
  virtual_ipaddress {
    192.168.1.200  #设置主DR的虚拟IP地址(virtual IP),可多设,但有必要每行1个
  }
}
     Virtual Server
virtual_server 192.168.1.200 80 {  #留意IP地址与端口号之间用空格离隔
  delay_loop 6    #设置健康检查时刻,单位是秒
  lb_algo rr    #设置负载调度算法,默许为rr,即轮询算法,最优异是wlc算法
  lb_kind DR    #设置LVS完结LB机制,有NAT、TUNN和DR三个形式可选
  nat_mask 255.255.255.0
  persistence_timeout 50  #会话坚持时刻,单位为秒
  protocol TCP    #指定转发协议类型,有TCP和UDP两种
  real_server 192.168.1.132 80 {
    weight 1    #装备节点权值,数字越大权值越高
    TCP_CHECK {
    connect_timeout 3   #表明3秒无呼应,则超时
    nb_get_retry 3    #表明重试次数
    delay_before_retry 3  #表明重试距离
    }
  }
  real_server 192.168.1.133 80 {  #装备效劳器节点,即Real Server2的public IP
    weight 3    #装备节点权值,数字越大权值越高
    TCP_CHECK {
    connect_timeout 3   #表明3秒无呼应,则超时
    nb_get_retry 3    #表明重试次数
    delay_before_retry 3  #表明重试距离
    }
  }
}

//发动哈keepalived、设置keepalived效劳主动发动、检查是否收效,如下图所示:

(2)在DR2上装备keepalived:

先将上面记事本中的keepalived.conf装备文件,只是修正2处,如下图所示:

No.1处:把“stateMASTER”修正为“stateBACKUP” #即备用效劳器;

No.2处:把“priority 100”修正为“priority 90” #优先级为90。

修正好后,仿制到DR2的/etc/keepalived/keepalived.conf中,保存即可!

//发动哈keepalived、设置keepalived效劳主动发动、检查是否收效,如下图所示:

4-装备Real Server节点:

1)yum –y install httpd

2)发动httpd效劳时,犯错:

//vim /etc/httpd/conf/httpd.conf中,依如下操作:

#265 ServerName www.example.com:80 //去掉前面的#号即可!

3)在RealServer1和RealServer2上的脚本realserver.sh:

#add for chkconfig
#chkconfig: 2345 70 30  #234都是文本界面,5便是图形界面X,70发动次序号,30体系封闭,脚本
#止次序号
#description: RealServers script  #关于脚本的简略描绘
#processname: realserver.sh   #第一个进程名,后边设置主动时会用到
#!/bin/bash
VIP=192.168.1.200
source /etc/rc.d/init.d/functions
case "$1" in
start)
   ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
   /sbin/route add -host $VIP dev lo:0
   echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
   echo "RealServer Start OK"
   ;;
stop)
   ifconfig lo:0 down
   route del $VIP >/dev/null 2>&1
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
   echo "RealServer Stoped"
   ;;
   *)
   echo "Usage: $0 {start|stop}"
   exit 1
esac
exit 0

//为realserver.sh增加权限

5-发动keepalived + LVS集群体系:

6-测验分为三个部分:

1)高可用性功用测验:

高可用性是经过LVS的两个DR1和DR2完结的。为了模仿毛病,先将DR1上的Keepalived效劳中止或许爽性关掉节点DR1,然后调查备用DR2上Keepalived是否取得虚拟IP地址,即VIP 192.168.1.200

//在DR1检查哈,信息如下图所示:

由上可知,虚拟IP地址在DR1节点上,即VIP 192.168.1.200

//在DR2检查哈,信息如下图所示:

【考虑】自己查检查,一定会成功!

办法1:指令查验法

运用指令ipvsadm –Ln和ip addr list/show检查虚拟IP漂移状况来判别。

//封闭DR1,模仿宕机,如下图所示:

由上图可知,DR1的确宕机了,而DR2得到了虚拟IP地址(上图红框中的192.168.1.200)

且拜访仍然正常,再次证明了高可用性,如下图所示:

办法2:检查日志法

//封闭DR1/中止DR1的keepalived效劳,模仿宕机,在DR2中检查日志,如下图日志所示:

//再检查DR2是否立刻检测到DR1呈现毛病,的确非常快就检测到DR1的毛病,并立刻接收主机的虚拟IP地址(192.168.1.200),留意调查上图和下图!

2)负载均衡测验:

为了便于测验,咱们在Real Server1和Real Server2别离装备www效劳的网页且内容也好辨认,如下图所示:

办法1:客户端浏览器中测验

由上可知,咱们在VMWare中的XP操作体系和物理机器win 7的浏览器中别离输入http://192.168.1.200且不断地改写之都可拜访!

办法2:用压力测验法

[root@CentOS6 ~]# ab –c 100 –n 10000 http://192.168.1.200/index.html

3)毛病切换测验

毛病切换是测验在某个节点呈现毛病后,keepalived监控模块能否及时发现,然后屏蔽毛病节点,一起将效劳转移到正常节点上履行之。

停掉节点Real Server2效劳,模仿该节点呈现毛病,然后查检查主、备机器日志信息:

办法1:检查主、备机器日志信息

//先停掉节点Real Server2的httpd效劳,如下图所示:

//再检查DR1上的日志,如下图所示:

//再检查DR2上的日志,如下图所示:

  由上可知,毛病切换测验成功!

办法2:客户端浏览器中测验

   不断改写网页一向就显现如上图所示:Real Server1内容!可见毛病切换成功!

   至此,《构建黄金组合LVS + Keepalived高可用的负载均衡集群》装备成功!

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

猜您喜欢的文章