前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >keepalived+haproxy构建高可用负载均衡集群

keepalived+haproxy构建高可用负载均衡集群

作者头像
BGBiao
发布2018-02-26 10:32:48
1.4K0
发布2018-02-26 10:32:48
举报
文章被收录于专栏:容器云生态容器云生态

Keepalived+haproxy构建web高可用负载均衡系统

本章将使用keepalived做为高可用集群调度用户请求,并且检测haproxy负载均衡器的状态,实时地完成节点的动态调整。

keepalived原理图:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器

发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将 它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文 中将采用这种方式。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。 Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

haproxy工作机制:

HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

系统环境:CentOS6.4

                iptables 关闭      

               selinux is    disabled

一、keepalived的安装与配置

#tar zxf keepalived-1.2.7.tar.gz

#cd keepalived-1.2.7

#./configure --prefix=/usr/local/keepalived                              指定路径编译

其中可能安装一下依赖包:

openssl-devel   popt-devel        libnl-devel

# make && make install                                                            执行make安装

# cd /usr/local/keepalived/                                                      默认主目录,存在sbin/和etc/目录

# ln -s /usr/local/keepalived/sbin/keepalived /sbin/                 便于管理keepalived,将文件链接

# ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# vim /etc/keepalived/keepalived.conf  root@localhost }    notification_email_from keepalived@server3.example.com                       通知收件人地址 virtual_router_id 88                                                                                    定义虚拟路由id     priority 100                                                                                            定义主节点(权值决定)    virtual_ipaddress {                                                                                    定义VIP         192.168.0.88     } }

使用lvs+keepalived时使用一下配置

virtual_server 192.168.0.88 80{                                                                  定义虚拟服务     delay_loop 6     lb_algo rr                                                                                                使用轮询方式调度算法     lb_kind DR                                                                                            使用DR直连模式   #  persistence_timeout 50       这个是nat的必须做的,如果加上这个的话,就会持续链接这个                          protocol TCP     real_server 192.168.0.198 80 {                                                             定义真实服务         weight 1          TCP_CHECK   {               connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }     }     real_server 192.168.0.199 80 {         weight 1          TCP_CHECK   {             connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }

#/etc/init.d/keepalived start

因为要构建keepalived高可用集群,因此需要在keepalived备用节点上安装配置同样的服务。

二 、 haproxy的安装与配置

#tar zxf haproxy-1.4.23.tar.gz

#cd haproxy-1.4.23

#find -name *.spec                                                                    发现spec文件,可以将源码包打压成rpm

#yum install rpm-build -y                                                            安装rpm包构建软件

#rpmbuild -tb haproxy-1.4.23.tar.gz                                            使用源码包构建rpm包

#cd /root/rpmbuild/RPMS/x86_64                                                生成的rpm包

#rpm -ivh *.rpm                                                                            安装keepalived的rpm包

# vim /etc/haproxy/haproxy.cfg defaults         log     global         mode    http         option  httplog         option  dontlognull         retries 3         option   redispatch         maxconn 2000         contimeout      5000         clitimeout      50000         srvtimeout      50000 listen status_auth 192.168.0.103:8080                           给监控界面做一个端口绑定,指定用户和密码          stats enable          stats uri /admin          stats auth  user:passwd                                         定义监控页面的用户和密码          stats refresh   6

slisten   ha_proxy 192.168.0.103:80                在103主机上定义真实主机(Real Server)         balance roundrobin         server  inst1 192.168.0.198:80         server  inst2 192.168.0.199:80

# vim /etc/rsyslog.conf 开启tcp或者udp $ModLoad imudp $UDPServerRun 514 local0.*                                               /var/log/haproxy.log #/etc/init.d/rsyslog restart

#/etc/init.d/haproxy start

web负载均衡方案haproxy构建完毕!

访问http://192.168.0.103 可以访问到198和199主机的内容

访问http://192.168.0.103:8080 使用用户名和密码登陆可以查看链接状态

三、整合keepalived和haproxy

# vim check_haproxy.sh                                 编写一个检测haproxy状态脚本 #!/bin/bash /etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null if [ $? -ne 0 ] ;then /etc/init.d/keepalived stop &> /dev/null fi

# chmod +x check_haproxy.sh #./check_haproxy.sh                                  在haproxy关闭时自动启动haproxy

修改keepalived文件

# vim keepalived.conf vrrp_script check_haproxy {       script "/opt/check_haproxy.sh"       interval 2      weight  2 }

    virtual_ipaddress {         192.168.0.88                                     新的VIP     }     track_script {          check_haproxy }

# vim /etc/haproxy/haproxy.cfg listen  www.domain.com  *:80                        所以IP都可以访问(给本机VIP做解析)         cookie  SERVERID rewrite         balance roundrobin         server  app1_1 192.168.0.198:80 cookie app1inst1 check inter 2000 rise 2 fall 3         server  app1_2 192.168.0.199:80 cookie app1inst2 check inter 2000 rise 2 fall 3

listen status_auth *:8080                                使用任意客户端检测          stats enable          stats uri /admin          stats auth  user:passwd                                         定义监控页面的用户和密码          stats refresh   6

# /etc/init.d/keepalived restart

# ip addr show                                   查看主keepalived已经加载了VIP资源 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo     inet6 ::1/128 scope host        valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000     link/ether 52:54:00:9c:c9:22 brd ff:ff:ff:ff:ff:ff     inet 192.168.0.103/24 brd 192.168.0.255 scope global eth0         103为主节点IP     inet 192.168.0.88/32 scope global eth0                                  88为VIP

# /etc/init.d/haproxy status                  查看状态为running

注意:构建keepalived+haproxy高可用负载均衡集群必须在两个节点分别配置两个服务,并且保证相同的配置和服务,在备用节点上注意将权值修改小些。

测试高可用和负载均衡:

任何一个主机的keepalived出现故障,另外一个主机会接管相应的资源。

任何一个haproxy出现故障,客户仍然可以访问后端Real Server提供的服务。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档