keepalived+haproxy实现高可用

    1. 实验环境:
      1. 2台centos 6.5作为keepalived+haproxy的高可用,3台centos6.5配置httpd作为后端server,haproxy的轮询采用rr调度算法。vip:192.168.8.199

    ha1:eth1:192.168.8.41,keepalived+haproxy

    ha3:eth1:192.168.8.43,keepalived+haproxy

     rs1:192.168.8.21.httpd

    rs2:192.168.8.22.httpd

    rs3:192.168.8.23.httpd

    1. 在ha1,ha2上安装keepalived+haproxy

    yum -y install keepalived haproxy

    1. 在rs1,rs2,rs3上安装httpd,并更改默认首页。

    yum -y install httpd

    关闭rs1,rs2,rs3的防火墙,或者开发80端口,这里做实验方便一些,直接关闭防火墙。

    service iptables stop

    更改各自的首页,以便于识别是由哪个 rs提供服务的。

    rs1: echo "rs1" > /var/www/html/index.html

    rs2:echo "rs2" > /var/www/html/index.html

    rs3:echo "rs3" > /var/www/html/index.html

    启动httpd服务,在rs1,rs2,rs3上:service httpd start

    1. 验证httpd是否正常,在ha1上运行:

    curl http://192.168.8.21 看是否获取到rs1的内容,同样

    curl http://192.168.8.22

    curl http://192.168.8.23

    1. haproxy的配置:

    上面的配置,保证了后端服务器提供服务的能力,这里我们要配置haproxy作为http反向代理服务器的配置。

    在ha1上


    cat /etc/haproxy/haproxy.cfg

    你会看到默认配置文件。

    首先更改日志到本地日志系统里面去。由于centos 6.5使用的是rsyslog,所以vi /etc/sysconfig/rsyslog

    更改为:

    SYSLOGD_OPTIONS="-c 5 -r"

    然后重启rsyslog

    [[email protected] ~]# service rsyslog restart

    关闭系统日志记录器:                                       [确定]

    启动系统日志记录器:-r option only supported in compatibility modes 0 to 2 - ignored

    提示错误,将5改成2,使用兼容模式。

    然后在/etc/rsyslog.conf里面添加:  local2.*                       /var/log/haproxy.log进去,并且要启

    # Provides UDP syslog reception

    $ModLoad imudp

    $UDPServerRun 514这两个参数。

    用重启rsyslog :service rsyslog restart

    .更改后配置文件如下:

    [[email protected] ~]# cat /etc/haproxy/haproxy.cfg

    global

        chroot      /var/lib/haproxy

        pidfile     /var/run/haproxy.pid

        maxconn     4000

        user        haproxy

        group       haproxy

        daemon

        log         127.0.0.1 local2

        # turn on stats unix socket

        stats socket /var/lib/haproxy/stats

     

    #---------------------------------------------------------------------

    # common defaults that all the ‘listen‘ and ‘backend‘ sections will

    # use if not designated in their block

    #---------------------------------------------------------------------

    defaults

        mode                    http

        log                     global

        option                  httplog

        option                  dontlognull

        option http-server-close

        option forwardfor       except 127.0.0.0/8

        option                  redispatch

        retries                 3

        timeout http-request    10s

        timeout queue           1m

        timeout connect         10s

        timeout client          1m

        timeout server          1m

        timeout http-keep-alive 10s

        timeout check           10s

        maxconn                 3000

     

    #---------------------------------------------------------------------

    # main frontend which proxys to the backends

    #---------------------------------------------------------------------

    frontend http

            mode http

            bind *:80

            option httpclose

            option logasap

            option  dontlognull

            capture request header Host len 20

            capture request header Referer len 60

            default_backend servers

    backend servers

            balance roundrobin

            server websrv1 192.168.8.21:80 check maxconn 2000

            server websrv2 192.168.8.22:80 check maxconn 2000

            server websrv3 192.168.8.23:80 check maxconn 2000

    [[email protected] ~]#service haproxy start

    启动haproxy,则用curl 127.0.0.1 多用几次则可以发现在调度。


    默认配置文件:

    [[email protected] ~]# cat /etc/haproxy/haproxy.cfg

    #---------------------------------------------------------------------

    # Example configuration for a possible web application.  See the

    # full configuration options online.

    #

    #   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

    #

    #---------------------------------------------------------------------

     

    #---------------------------------------------------------------------

    # Global settings

    #---------------------------------------------------------------------

    global

        # to have these messages end up in /var/log/haproxy.log you will

        # need to:

        #

        # 1) configure syslog to accept network log events.  This is done

        #    by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in

        #    /etc/sysconfig/syslog

        #

        # 2) configure local2 events to go to the /var/log/haproxy.log

        #   file. A line like the following can be added to

        #   /etc/sysconfig/syslog

        #

        #    local2.*                       /var/log/haproxy.log

        #

        log         127.0.0.1 local2

     

        chroot      /var/lib/haproxy

        pidfile     /var/run/haproxy.pid

        maxconn     4000

        user        haproxy

        group       haproxy

        daemon

     

        # turn on stats unix socket

        stats socket /var/lib/haproxy/stats

     

    #---------------------------------------------------------------------

    # common defaults that all the ‘listen‘ and ‘backend‘ sections will

    # use if not designated in their block

    #---------------------------------------------------------------------

    defaults

        mode                    http

        log                     global

        option                  httplog

        option                  dontlognull

        option http-server-close

        option forwardfor       except 127.0.0.0/8

        option                  redispatch

        retries                 3

        timeout http-request    10s

        timeout queue           1m

        timeout connect         10s

        timeout client          1m

        timeout server          1m

        timeout http-keep-alive 10s

        timeout check           10s

        maxconn                 3000

     

    #---------------------------------------------------------------------

    # main frontend which proxys to the backends

    #---------------------------------------------------------------------

    frontend  main *:5000

        acl url_static       path_beg       -i /static /images /javascript /stylesheets

        acl url_static       path_end       -i .jpg .gif .png .css .js

     

        use_backend static          if url_static

        default_backend             app

     

    #---------------------------------------------------------------------

    # static backend for serving up images, stylesheets and such

    #---------------------------------------------------------------------

    backend static

        balance     roundrobin

        server      static 127.0.0.1:4331 check

     

    #---------------------------------------------------------------------

    # round robin balancing between the various backends

    #---------------------------------------------------------------------

    backend app

        balance     roundrobin

        server  app1 127.0.0.1:5001 check

        server  app2 127.0.0.1:5002 check

        server  app3 127.0.0.1:5003 check

        server  app4 127.0.0.1:5004 check

     

    [[email protected] ~]#

    在ha3上同样配置如上内容。

    可以使用scp命令直接把配置文件传送过去

    ha1:scp /etc/haprxoy/haproxy.conf 192.168.8.43:/etc/haproxy

    然后手动修改ha3上面的rsyslog的相关配置。

    手动使用curl检测是否配置OK。。

    1. keepalived配置

    通过上面的配置,两个haproxy已经配置OK,后端rs也准备就绪。把两个haproxy配置成高可用。

    编辑ha1的/etc/keepalived/keepalived.conf

    由于我们这里只有一个实例,并且没有使用lvs的功能,故vrrp_group和vitrual_server都不需要定义。

    配置文件:


    ha1:


    ha3:


    [[email protected] ~]# cat /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

     

    global_defs {

       notification_email {

         [email protected]

         [email protected]

         [email protected]

       }

       notification_email_from [email protected]

       smtp_server 192.168.200.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

     

    vrrp_instance keepalived {

        state MASTER

        interface eth1

        virtual_router_id 51

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        virtual_ipaddress {

            192.168.8.199/24

        }

    }

     

     

    [[email protected] ~]#


    [[email protected] ~]# cat /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

     

    global_defs {

       notification_email {

         [email protected]

         [email protected]

         [email protected]

       }

       notification_email_from [email protected]

       smtp_server 192.168.200.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

     

    vrrp_instance keepalived {

        state BACKUP

        interface eth1

        virtual_router_id 51

        priority 90

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        virtual_ipaddress {

            192.168.8.199/24

        }

    }

     

     

    [[email protected] ~]#

    结合日志和curl的工具,确定最先开始由ha1提供服务,将ha1,keepalived停掉后切换到ha3上面了。证明高可用成功。

    1. 结合状态检测,当haproxy出现故障时候自动切换。

    还在网上找资料,看如何实现。

时间: 2024-10-12 03:42:35

keepalived+haproxy实现高可用的相关文章

RabbitMq 基于 keepalived+haproxy实现高可用

1  概述 rabbitmq作为消息队列,广泛用于生产环境,但是,如果单节点,将导致故障后,生产环境不可用,因此,需要部署高可用环境 本文将介绍基于keepalived+haproxy实现rabbitmq的高可用 rabbitmq的集群中,所有节点都可读写,因此,可用haproxy调度到后端的任意一台rabbitmq上. 环境准备 三个节点mq-01 mq-02 mq-03 ,这里服务器复用了redis的服务器节点,所以机器名忽略. 添加hosts文件 #这一步很关键,所有的节点都要配置一样,否

Keepalived + Haproxy 实现高可用负载均衡

keepalived是一个用于做双机热备(HA)的软件,常和haproxy联合起来做热备+负载均衡,达到高可用 1. 实验环境 Master:10.20.2.233 Backup:10.20.2.235 虚拟IP:10.20.2.238 2. Keepalived安装 1) 通过yum安装软件依赖包 yum install -y wget make gcc openssl-devel popt-devel 2) Keepalived源码包下载安装 下载地址:http://www.keepaliv

keepalived+Haproxy搭建高可用Web群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,搭建LVS群集可以参考博文:搭建:LVS+Keepalived高可用Web服务群集环境:Nginx的upstream模块支持群集功能,但是相对群集节点健康检查功能不强,性能没有Haproxy好,更多的是应用在企业内网环境中.Nginx群集可以参考博文:centos 7部署Tomcat及其负载均衡配置详解. 上述几个web群集调度器属于软件类型的,还有很多硬件

Keepalived+Haproxy搭建高可用负载均衡

global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server smtp.163.com stmp_connect_timeout 30 router_id lnmp_node2 } # 检测haproxy脚本 vrrp_script chk_haproxy { script "/etc/keepalived/check_haproxy.sh&

Keepalived+HAproxy实现高可用负载均衡

总概:       Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器       HAProxy提供高可用性

HAproxy+Keepalived负载均衡-高可用web站

haproxy+keepalived负载均衡高可用web站   OS IP 子网掩码 路由网关 Centos6.6 HAproxy Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 HAporxy Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6(WE

用keepalived来实现haproxy的高可用性能

一.haproxy和keepalived的解释: 1.haproxy:haproxy是免费.极速且可靠的用于为TCP和基于HTTP应用程序提供负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点. 2.haproxy的特性:客户端侧的长连接(client-side keep-alive):TCP加速(TCP speedups): 响应池(response buffering):RDP协议:基于源的粘性(source-based stickiness):更好的统计

haproxy实现的web反向代理,动静分离,以及基于keepalived实现的haproxy的高可用

   haproxy于Nginx一样都是做反向代理,但是与其相比,haproxy更专注于web代理.HAProxy是单进程多请求,也支持多进程,HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.       haproxy功能的实现全部基于配置文件,所以我们需要了解很多的配置指令,玩转指令,再结合实际情况,我们就玩转了haproxy,其实haproxy的配置也很简单,下面我们一起简单认识和了解一些haproxy的基本功能和相关知识.         CentOS6.5自带的rpm

HAProxy基于KeepAlived实现Web高可用及动静分离

    前言     软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载均衡.LVS是基于Linux操作系统实现的一种软负载,而Haproxy则是基于第三方应用实现的软负载.Haproxy相比LVS的使用要简单很多,但跟LVS一样,Haproxy自己并不能实现高可用,一旦Haprox节点故障,将会影响整个站点.本文是haprox基于keepalived实现web高可用及动静分离.     相关介绍         HAProxy     haproxy是一款提供