zoukankan      html  css  js  c++  java
  • 基于Haporxy+Keepalived构建高可用负载均衡集群

    基于Haporxy+Keepalived构建高可用负载均衡集群

    1、准备四台虚拟机两台nginx 两台haproxy
    2、实验如下:

    基于Haporxy+Keepalived构建高可用负载均衡集群
    1、准备四台虚拟机两台nginx 两台haproxy
    2、两台nginx
    [root@Nginx-1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
    [root@Nginx-1 ~]# useradd -M -s /sbin/nologin  nginx
    [root@Nginx-1 ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src
    [root@Nginx-1 ~]# cd /usr/src/nginx-1.6.2
    [root@Nginx-1 nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
    [root@Nginx-1 nginx-1.6.2]# cd /usr/local/nginx/html/
    nginx1 :
    [root@localhost ~]# echo "111111" > /usr/local/nginx/html/index.html
    [root@localhost ~]# /usr/local/nginx/sbin/nginx
    nginx2 :
    [root@localhost ~]# echo "222222" > /usr/local/nginx/html/index.html
    [root@localhost ~]# /usr/local/nginx/sbin/nginx
     
    安装Haproxy两台机器配置一致:
    [root@Haproxy-1 ~]# yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
    [root@Haproxy-1 ~]# tar xf haproxy-1.4.24.tar.gz -C /usr/src/
    [root@Haproxy-1 ~]# cd /usr/src/haproxy-1.4.24/
    [root@Haproxy-1 haproxy-1.4.24]# make TARGET=linux26 && make install
    建立haproxy的配置目录及文件
    [root@Haproxy-1 haproxy-1.4.24]# mkdir /etc/haproxy
    [root@Haproxy-1 haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/
     haproxy配置文件的修改:
    [root@Haproxy-1 ~]# vim /etc/haproxy/haproxy.cfg
    # this config needs haproxy-1.1.28 or haproxy-1.2.1
    global
    #   log 127.0.0.1   local0
    #   log 127.0.0.1   local1 notice
        log /dev/log    local0 info
        log /dev/log    local0 notice
        maxconn 4096
        uid 99
        gid 99
        daemon
    defaults
        log global
        mode    http
        option  httplog
        retries 3
        maxconn 4096
        contimeout  5000
        clitimeout  50000
        srvtimeout  50000
    listen  webcluster 0.0.0.0:80
        option  httpchk GET /index.html
        balance roundrobin
        server  inst1 192.168.200.113:80 check inter 2000 fall 3   //nginx 主机
        server  inst1 192.168.200.114:80 check inter 2000 fall 3
    listen admin_stats
        bind 0.0.0.0:8000
        mode http
        option httplog
        maxconn 100
        stats refresh 30s
        stats uri /stats
        stats realm Crushlinux Haproxy
            stats auth admin:admin
        stats hide-version
    创建自启动脚本
    [root@Haproxy-1 ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
    [root@Haproxy-1 ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
    [root@Haproxy-1 ~]# chmod +x /etc/init.d/haproxy
    [root@Haproxy-1 ~]# /etc/init.d/haproxy start
    Starting haproxy:                                          [确定]
     
    客户端访问测试:
    使用不同浏览器访问
    结果不同即为成功
     
    编译安装keepalived服务
    [root@Haproxy-1 ~]# yum -y install keepalived
    [root@Haproxy-1 ~]# vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    global_defs {
            notification_email {
                    acassen@firewall.loc
            }
            notification_email_from Alexandre.Cassen@firewall.loc
            smtp_server 192.168.200.1
            smtp_connect_timeout 30
            router_id LVS_DEVEL
            vrrp_skip_check_adv_addr
            vrrp_strict
            vrrp_garp_interval 0
            vrrp_gna_interval 0
    }
    vrrp_script chk_http_port {
            script "/root/check_haproxy.sh"
            interval 2
            weight -20
    }
    vrrp_instance VI_1 {
            state MASTER
            interface ens32
            virtual_router_id 51
            priority 100
            advert_int 1
            authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.200.254
        }
        track_script {
            chk_http_port
        }
    }
     第二台Haproxy配置keepalibed 主配置文件
    [root@Haproxy-2 ~]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    global_defs {
            notification_email {
                    acassen@firewall.loc
            }
            notification_email_from Alexandre.Cassen@firewall.loc
            smtp_server 192.168.200.1
            smtp_connect_timeout 30
            router_id LVS_DEVEL
            vrrp_skip_check_adv_addr
            vrrp_strict
            vrrp_garp_interval 0
            vrrp_gna_interval 0
    }
    vrrp_script chk_http_port {
            script "/root/check_haproxy.sh"
            interval 2
            weight -20
    }
    vrrp_instance VI_1 {
            state BACKUP
            interface ens32
            virtual_router_id 51
            priority 90
            advert_int 1
            authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.200.254
        }
        track_script {
            chk_http_port
        }
    }          
    两台机器上都配置haproxy检测脚本
    [root@Haproxy-1 ~]# cat /root/check_haproxy.sh
    #!/bin/bash
    num=$(ps -C haproxy --no-header |wc -l)
    if [ $num -eq 0 ]
    then
        /etc/init.d/haproxy start
        sleep 3
        a=$(ps -C haproxy --no-header |wc -l)
        if [ $a -eq 0 ]
        then
            systemctl stop keepalived
        fi
    fi
    [root@Haproxy-1 ~]# chmod +x /root/check_haproxy.sh
    [root@Haproxy-1 ~]# service keepalived start

  • 相关阅读:
    webrtcvad模块使用
    pyroomacoustics--生成房间脉冲响应
    virtualbox设置了共享文件夹却无权限访问
    机器学习-高斯判别分析
    机器学习--线性判别分析
    阵列信号处理-波束加权
    线性分类-感知机
    vbox虚拟机扩容(CentOS 7.2)
    安装MySQLdb模块遭遇"fatal error: my_config.h: No such file or directory"的处理
    使用git bash编译安装sysbench时遇到的坑
  • 原文地址:https://www.cnblogs.com/elin989898/p/11958947.html
Copyright © 2011-2022 走看看