zoukankan      html  css  js  c++  java
  • keepalived+haproxy构建高可用负载均衡

    一、环境介绍

          我用的是centos6.7,内核版本为2.6.32-573.el6.x86_64,keepalived版本为keepalived-1.2.22,haproxy版本为haproxy-1.6.4

          # yum install libnl* popt* openssl openssl-devel -y

          下载并安装ipvsadm-1.26  、libnfnetlink-1.0.1、   libnfnetlink-devel-1.0.1

         html-A IP 192.168.1.41

         html-B IP 192.168.1.59

         haproxy_master 192.168.1.240   主

         haproxy_backup 192.168.1.92     备

         VIP(virtual IP) 192.168.1.180

    二、在192.168.1.240和192.168.1.92上安装Keepalived

         1.下载keepalived    http://www.keepalived.org/download.html

         2.安装

            #tar -zxvf keepalived-1.2.22.tar.gz
            #ln -s /usr/src/kernels/2.6.32-573.el6.x86_64/ /usr/src/linux
            #cd keepalived-1.2.22
        #./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-573.el6.x86_64/
        #make 

            #make install
        #cd /etc/keepalived/
        #mv keepalived.conf keepalived.conf.default

         3.编写配置文件

            #vim   keepalived.conf

             ! Configuration File for keepalived


             vrrp_script chk_http_port {
             script "/etc/keepalived/check_haproxy.sh"
             interval 2
             weight 2

        global_defs {

                #设置邮件报警,可以不设

                #  notification_email {
                #  wt@123.com
                #  }
                # notification_email_from wt@123.com
                #  smtp_server 192.168.1.100       #邮件服务器IP
                #  smtp_connect_timeout 30    


             router_id LVS_DEVEL
        }
        vrrp_instance VI_1 {
             state MASTER #192.168.1.92上改为BACKUP
             interface eth0
             virtual_router_id 51
             priority 150 #192.168.1.92上改为120
             advert_int 1
             authentication {
                 auth_type PASS
                 auth_pass 1111
             }

             track_script {
                 chk_http_port
             }

             virtual_ipaddress {
                 192.168.1.180
             }
       }
       }

        4.编写keepalived自启动脚本

           #vim  /etc/keepalived/check_haproxy.sh

           #!/bin/bash
       A=`ps -C haproxy --no-header |wc -l`
       if [ $A -eq 0 ];then
       /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
       sleep 3
       if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
       /etc/init.d/keepalived stop
       fi
       fi

           赋予脚本执行权限
          #chmod 755 /etc/keepalived/check_haproxy.sh   该脚本可保证haproxy程序意外挂掉时重新启动程序

    三、在192.168.1.240和192.168.1.92上安装Haproxy

         1.下载Haproxy http://download.csdn.net/detail/a15134566493/9521419

         2.安装配置

            #tar -zxvf haproxy-1.6.2.tar.gz
            #cd haproxy-1.6.2

            # make TARGET=linux26 PREFIX=/usr/local/haproxy install

        #cd /usr/local/haproxy/

            # mkdir conf logs

            #cd conf/

            # vim haproxy.cfg

                 ######## 全局配置信息 #########
    ######参数是进程级的,通常和操作系统相关#######                         

       global
        log 127.0.0.1 local3 info #日志服务器
        maxconn 4096 #最大连接数
        uid nobody #用户身份
        gid nobody #组身份
        daemon #守护进程方式后台运行
        nbproc 1 #工作进程数量

    ####### 默认设置 ###################
    #####这些参数是配置 frontend,backend,listen 组的 ###########
       defaults
        log global
        mode http #工作模式 http ,tcp 是 4 层,http是 7 层
        maxconn 2048 #最大连接数
        retries 3 #3 次连接失败就认为服务器不可用
        option redispatch #如果 cookie 写入了 serverId 而客户端不会刷新 cookie,当serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
        stats uri  /haproxy #使用浏览器访问 http://192.168.1.240/haproxy,可以看到服务器状态
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000


       frontend http-in
        bind 0.0.0.0:80
        mode http
        log global
        option httplog #日志类别 http 日志格式
        option httpclose #打开支持主动关闭功能
           #acl php url_reg  -i  .php$ #acl <ACL名字>  <类型>  <大小写>  <规则>  有PHP网页就取消注释
           acl html url_reg  -i  .html$  
    #use_backend  <服务器组>  if  <ACL名字>
           #use_backend php-server if  php         有PHP网页就取消注释
           use_backend html-server if  html
           default_backend html-server
    #默认使用的服务器组

            ######以下注释的是PHP的配置,没有PHP网页可以不写这个配置#############
       #backend php-server
        #mode http
        #balance roundrobin #负载均衡的方式
        #option httpchk GET /index.php #健康检查
        cookie SERVERID insert indirect nocache #客户端的 cookie 信息
        #server php-A 192.168.1.30:80 weight 1 cookie 1 check inter 2000 rise 2 fall 5
        #server php-B 192.168.1.40:80 weight 1 cookie 2 check inter 2000 rise 2 fall 5
        #cookie 1 标识 serverid 为 1
        #check inter 2000 检测心跳频率
        #rise 2 2 次正确认为服务器可用
        #fall 5 5 次失败认为服务器不可用

       backend html-server
        mode http
        balance roundrobin
        option httpchk GET /index.html
        cookie SERVERID insert indirect nocache
        server html-A 192.168.1.41:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
        server html-B 192.168.1.59:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5 
    3.启动HAproxy
               # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

    4.查看HAproxy状态

               由于使用了keepalived虚拟主机,所以可访问192.168.1.180/haproxy查看HAproxy状态

    四、搭建网页服务器

          1.# yum install httpd -y

          2.在/var/www/html/目录下创建index.html,

                在192.168.1.41的index.html中写  i am 192.168.1.41

                在192.168.1.59的index.html中写  i am 192.168.1.59

         3.#service httpd restart

    5.在客户端访问 HAproxy 测试

               在浏览器访问192.168.1.180即可访问。其显示的网页内容实际上是192.168.1.41或192.168.1.59的网页。

               实际效果:

              

  • 相关阅读:
    B/S实现大文件上传
    csharp实现大文件上传
    C#实现大文件上传
    h5批量下载文件
    association 的使用
    简单的MD5查询工具
    struts开发&lt;struts中的參数传递.三&gt;
    (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
    (转)SQL SERVER的锁机制(一)——概述(锁的种类与范围)
    (转)SQL Server 中的事务和锁(三)-Range S-U,X-X 以及死锁
  • 原文地址:https://www.cnblogs.com/wt11/p/5695805.html
Copyright © 2011-2022 走看看