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

 

posted on 2019-08-03 10:21  loganSxb  阅读(499)  评论(0编辑  收藏  举报