zoukankan      html  css  js  c++  java
  • LB-HAproxy负载均衡部署

    HAproxy的负载均衡已经被我们广泛的用于生产环境中了,其优秀的性能也得到了人们的认可;接下来我们来说说Haproxy的有点;

    1.可以实现4层、7层的负载均衡;

    2.友好的可视界面,支持web显示;

    3.心跳监测,可以自动识别故障点,移除后者添加(Nginx的自动识别是通过TCP给webserver发送数据,来证明是否健康;HAproxy是通过访问webserver的index.html是否正常来判断健康状况);

    4.可以结合LVS实现LVS的心跳监测;

    5.HAproxy可以通过cookie的持久化链接,来实现和LVS调度算法中sh一样的效果,但比sh要更加好用;

    准备1台haproxy'服务器,两台httpd服务器

     httpd服务器我们对主页进行一下修改,更方便我们进行观察;

    [root@sxb-2 ~]# echo 102 > /var/www/html/index.html
    [root@sxb-3 ~]# echo 103 > /var/www/html/index.html

    接下来我们进行HAproy服务器的配置;

    1.安装软件;

    [root@sxb-1 haproxy-1.7]# tar xf haproxy-1.7.5.tar.gz
    [root@sxb-1 haproxy-1.7]# cd haproxy-1.7.5/
    [root@sxb-1 haproxy-1.7.5]# ls
    CHANGELOG     doc       include      Makefile  scripts  tests
    contrib       ebtree    LICENSE      README    src      VERDATE
    CONTRIBUTING  examples  MAINTAINERS  ROADMAP   SUBVERS  VERSION

    编译安装;

    [root@host1 haproxy-1.7.5]# make TARGET=linux2628  PREFIX=/usr/local/haproxy/ 
    [root@host1 haproxy-1.7.5]# make TARGET=linux2628  PREFIX=/usr/local/haproxy/ install

    配置HAproxy文件(配置文件需要我们能自己写,必须是.cfg结尾)

    [root@sxb-1 haproxy]# vim haproxy.cfg
    global
    #参数是进程级的,通常是和操作系统相关
        log         127.0.0.1   local3     #需要我们在日志文件里设定;
        maxconn         4096   
        user         nobody
        group         nobody
        daemon   
        pidfile         /usr/local/haproxy/haproxy.pid
    
    defaults
    #配置默认参数,这些参数可以被用到frontend,backend,Listen组件
        log            global
        mode            http   
        maxconn         2048
        timeout connect        10s
        timeout client     1m
        timeout server     1m
    
        retries         3   
        option        redispatch
    
    listen haproxy-monitor    
    #Fronted和backend的组合体 
        bind         *:8080
        mode         http
        option         forwardfor
        option         httpclose
        stats         enable
        stats         show-legends
        stats         refresh 5s
        stats         uri     /stats
        stats  auth         admin:admin
    
    frontend main
    #接收请求的前端虚拟节点,Frontend指定具体使用后端的backend
        bind         *:80
        log         global
        option         forwardfor
        option         httpclose           
        default_backend    html-server
    
    backend html-server
    #后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器
        balance         roundrobin
        option         httpchk   GET   /index.html
        server         html-A 192.168.5.102:80 check 安全检查
        server         html-B 192.168.5.103:80 check 安全检查

    这个是基于URL的负载均衡;

    启动HAproxy服务;

    [root@sxb-1 haproxy]# ./sbin/haproxy -f haproxy.cfg

    到这里,我们的HAproxy就可以使用了;

    这里我们通过web页面我们可以看到两台httpd服务器的信息都显示出来了,接下来我们测试HAproxy的负载均衡;

    [root@sxb-1 ~]# curl 192.168.88.101
    102
    [root@sxb-1 ~]# curl 192.168.88.101
    103
    [root@sxb-1 ~]# curl 192.168.88.101
    102
    [root@sxb-1 ~]# curl 192.168.88.101
    103

    测试HAproxy的健康检查;我们停掉102的httpd服务器;

    [root@sxb-2 ~]# systemctl stop httpd
    [root@sxb-1 ~]# curl 192.168.88.101
    103
    [root@sxb-1 ~]# curl 192.168.88.101
    103
    [root@sxb-1 ~]# curl 192.168.88.101
    103

    当我们停掉102后HAproxy自动识别故障点,并剔除,

    我们恢复102httpd服务;

    [root@sxb-2 ~]# systemctl start httpd
    [root@sxb-1 ~]# curl 192.168.88.101
    103
    [root@sxb-1 ~]# curl 192.168.88.101
    102
    [root@sxb-1 ~]# curl 192.168.88.101
    103
    [root@sxb-1 ~]# curl 192.168.88.101
    102

    当问题恢复后,HAproxy会自动将102加入到集群中;

    我们来测试一下cookie的持久化链接;

    我们要对配置文件进行一些修改

    重启其服务我们来测试;

    因为cookie的缓存功能,我们会一直访问102;当我们停掉102服务后;cookie会为我们选择其他通道;

    我们来测试cookie

  • 相关阅读:
    如何更好地谋生,从事嵌入式软件开发五年的感悟和职业焦虑
    在url中使用friendly_id
    关于盒模型的一个CSS3样式
    配置discourse的相关资料
    关于手机端触摸样式
    这样阻止事件冒泡
    paypal中使用循环付款的问题
    封装事件的添加和移除状态
    input 标签在做动画时的bug
    模拟了个iphone上面的select框 需要下载iscroll
  • 原文地址:https://www.cnblogs.com/loganSxb/p/11285966.html
Copyright © 2011-2022 走看看