ITPub博客

首页 > Linux操作系统 > Linux操作系统 > LVS+Keepalived高可用负载均衡集群架构

LVS+Keepalived高可用负载均衡集群架构

原创 Linux操作系统 作者:xz43 时间:2015-11-06 11:27:30 0 删除 编辑

keepalived 简介

keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。使用keepalived构建LVS群集更加简便易用,主要优势体现在:

LVS负载调度器实现热备切换,提高可用性;

对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入;

keepalived可以实现服务的高可用或热备,用来防止单点故障的问题。Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余,Keepalived就是使用VRRP协议来实现高可用的。

 

keepalived作用

如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Keepalived的代码结构和工作图示:
LVS+Keepalived高可用负载均衡集群架构实验

keepalived依赖包

 ipvsadm libpopt0  libssl-dev

 

VRRP协议

虚拟路由器冗余协议(VRRP)是一种选择协议,VRRP通过优先级来确定由谁当master,谁当backup

 

LVS

LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。

LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NATVS/TUNVS/DR);提供十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

 

LVS结构与工作原理

LVS由前端的负载均衡器(Load BalancerLB)和后端的真实服务器(Real ServerRS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。

当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RSRS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。


LVS转发策略

NAT(Network Address Translation)模式、IP隧道(IP Tunneling)模式 、DR(Direct Routing)模式,其中最常见、使用最多的是DR模式。

 

实验架构图:

LVS+Keepalived高可用负载均衡集群架构实验

HA高可用集群构建前提:

1、proxy和proxy2节点时间必须同步;建议使用ntp协议进行。

2、节点之间必须要通过主机名互相通信;建议使用hosts文件;

注意:通信中使用的名字必须与其节点为上“uname -n”命令展示出的名字保持一致。

3、节点之间彼此root用户能基于ssh密钥方式进行通信;

节点proxy: 

# ssh-keygen -t rsa -P ""

# ssh-copy-id -i .ssh/id_rsa.pub proxy2

节点proxy2:

# ssh-keygen -t rsa -P ""

# ssh-copy-id -i .ssh/id_rsa.pub proxy

测试ssh无密钥通信:

123 [root@proxy ~]# date ; ssh proxy2 date

 

安装配置

MASTER

root@example:~# apt-get install libssl-dev libpopt-dev     \\安装openssl及popt

root@example:~# apt-get install keepalived                 

root@example:~# vim /etc/keepalived/keepalived.conf      \\创建keepalived的配置文件进行编写

!Configuration File for keepalived

 global_defs {

     notification_email {

        root@example.com          #当出现问题时,发送的收件人地址,可以设置多个

        }

    notification_email_from sysadmin@163.com  #设置邮件的发送地址

        smtp_server 127.0.0.1                #设置smtp server的地址,该地址必须是存在的

        smtp_connect_timeout 30           #设置连接smtp server的超时时间

        router_id LVS_DEVEL           # 运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息

}

        vrrp_instance VI_1 {         # #定义VRRP实例,实例名自定义

        state MASTER      #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器

        interface eth0           #指定HA监测的接口

        virtual_router_id 51       #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样,与整个vrrp中也是一致的

        priority 100       #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器 

        advert_int 1  #设置主备之间同步检查的时间间隔,单位秒

   authentication {        #设置验证类型和密码

       auth_type PASS   #类型主要有PASS、AH两种,通常使用的类型为PASS

       auth_pass 1111   #设置验证密码,在一个实例中主备密码保持一样

}

virtual_ipaddress {      #定义虚拟IP地址,可以有多个,每行一个

       172.16.31.188

}

}

virtual_server 172.16.31.188 80 {#设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔

delay_loop 6                     #设置健康状态检查时间,单位为秒

lb_algo wrr                      #设置负载高度算法

lb_kind DR                       #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种

persistence_timeout 60     #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案 

protocol TCP                  #指定转发协议类型可以设置{TCP|UDP}两种

 

real_server 172.16.31.50 80 {  #后端服务器节点,需要指定RS的IP与端口,用空格分隔

       weight 3                       #配置服务节点的权重,数字越大,权重越高

       TCP_CHECK {              #设置检测Realserver的方式为Tcp检查,还可以是 HTTP_GET

       connect_timeout 10         #设置响应超时时间

       nb_get_retry 3                 #设置超时重试次数

       delay_before_retry 3        #设置超时后重试间隔

       connect_port 80              #连接端口

}

也可以是如下的http协议方式

HTTP_GET {             #设置检测Realserver的方式为http协议 

    url {

          path / 

          status_code 200      #设定返回状态码为200表示Realserver是存活的 
            }

connect_timeout 10         #设置响应超时时间

       nb_get_retry 3                 #设置超时重试次数

       delay_before_retry 3        #设置超时后重试间隔

}

real_server 172.16.31.51 80 {

       weight 3

       TCP_CHECK {

       connect_timeout 10

       nb_get_retry 3

       delay_before_retry 3

       connect_port 80

       }

也可以是如下的http协议方式

HTTP_GET {             #设置检测Realserver的方式为http协议 

    url {

          path / 

          status_code 200      #设定返回状态码为200表示Realserver是存活的 
            }

connect_timeout 10         #设置响应超时时间

       nb_get_retry 3                 #设置超时重试次数

       delay_before_retry 3        #设置超时后重试间隔

    }

}

 

BACKUP

root@example1:~# apt-get install libssl-dev libpopt-dev   

root@example1:~# apt-get install keepalived

将Master服务器proxy节点上的主配置文件拷贝到Backup服务器proxy2节点稍作修改
# scp /etc/keepalived/keepalived.conf proxy2:/etc/keepalived/ 

######修改如下两项 
[root@proxy2 ~]# vim /etc/keepalived/keepalived.conf 
state BACKUP       #备份服务器

priority 99            #优先级比master小

 

启动两台服务器上的Keepalived服务并设置为开机自启动
# chkconfig --add keepalived ; ssh proxy2 "chkconfig --add keepalived"
# chkconfig  keepalived on ; ssh proxy2 "chkconfig keepalived on"          
# chkconfig --list keepalived; ssh proxy2 "chkconfig --list keepalived"
keepalived      0:off  1:off  2:on    3:on    4:on    5:on    6:off 
keepalived      0:off  1:off  2:on    3:on    4:on    5:on    6:off

启动服务:
# service keepalived start; ssh proxy2 "service keepalived start"

观察各节点的服务启动后的日志:
MASTER节点的日志;
[root@proxy keepalived]# tail -f /var/log/messages  

BACKUP节点的日志:
[root@proxy2 keepalived]# tail -f /var/log/messages  

最后,需要开启Master节点与Backup节点服务器的路由转发功能
#sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-1824310/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-16

  • 博文量
    420
  • 访问量
    1742097