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的网页。

               实际效果:

              

  • 相关阅读:
    UVA 10600 ACM Contest and Blackout(次小生成树)
    UVA 10369
    UVA Live 6437 Power Plant 最小生成树
    UVA 1151 Buy or Build MST(最小生成树)
    UVA 1395 Slim Span 最小生成树
    POJ 1679 The Unique MST 次小生成树
    POJ 1789 Truck History 最小生成树
    POJ 1258 Agri-Net 最小生成树
    ubuntu 用法
    ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
  • 原文地址:https://www.cnblogs.com/wt11/p/5695805.html
Copyright © 2011-2022 走看看