篇一:centos7下haproxy负载均衡软件的搭建与使用

Posted 砂之寞架构说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了篇一:centos7下haproxy负载均衡软件的搭建与使用相关的知识,希望对你有一定的参考价值。

       

       飘飘岁月,苒苒华年,时光总如白驹过隙,过往已成云烟;

       浩浩生涯,源源技艺,磨练皆若细水长流,未来才是风范。


       纵览已经发出去的技术笔记,今天看来有些显得混乱,显得充数。负载均衡,还没有讲负载均衡怎样怎样搭建,就讲了mysql主从分离的高可用,分布式文件系统的实时同步,显然不适合循序渐进的学习之道。发是发早了一点,但这两篇还是有一定的价值的。

        之于上,以后我就按着顺序,篇一、篇二、篇三......,这样的顺序推送给大家,希望发送对大家起到一定的作用。当然,由于个人知识的广度与深度问题,内容难免瑕疵,望大家批评指正。

        话不多说,直接主题。今天给大家推送的是分布式的基础篇,负载均衡器haproxy的搭建。


一、haproxy下载

       说到下载haproxy,最近不知道怎么了,官网下载挺不方便的,当然你也可以去尝试https://www.haproxy.com/。如果确实不好弄,我在我的服务器上存放了一份,大家要是不介意的话,可以在

http://yuyuda.com/yyd_file/haproxy-1.7.8.tar.gz

处下载,是个1.7.8版本的,感觉挺稳定,我用在生产环境下没有什么问题。


二、解压,并安装

1、haproxy需要相应的linux内核

[root@yyd ~] #  uname -r

3.10.0-693.21.1.el7.x86_64

上面红色的数字组合在一起就是31


2、解压、安装

[root@yyd ~] # tar -zxvf haproxy-1.7.8.tar.gz 

[root@yyd ~] # cd haproxy-1.7.8/

[root@yyd ~/haproxy-1.7.8] #  make TARGET=linux31 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CRYPT_H=1 USE_LIBCRYPT=1

参数说明:TARGET指定内核版本;  

ARCH指定CPU架构;

USER_PCRE支持PCRE库;

USE_OPENSSL支持openssl,目的是为了https协议;

USE_ZLIB支持zlib库;

USE_CRYPT_H支持CRYPT_H;

USE_LIBCRYPT支持LIBCRYPT。

如果上面这些没安装,yum install即可


[root@yyd ~/haproxy-1.7.8] # make install PREFIX=/usr/local/haproxy

[root@yyd ~/haproxy-1.7.8] # cd /usr/local/  && ll 

[root@yyd /usr/local] # cd haproxy && ll

篇一:centos7下haproxy负载均衡软件的搭建与使用

有上面三个目录。

如果上述过程未出错,说明安装成功,出错了按着错误提示解决,不能解决Google下。


3、创建haproxy运行的用户和用户组

[root@yyd ~/haproxy-1.7.8] # groupadd haproxy

[root@yyd ~/haproxy-1.7.8] # useradd -r -g haproxy haproxy


4、配置haproxy,下面是我配置成功的案例

[root@yyd ~/haproxy-1.7.8]# touch /etc/haproxy.cfg

[root@yyd ~/haproxy-1.7.8]# vim /etc/haproxy

#全局配置

global

    #设置日志

    log 127.0.0.1 local3 info

    chroot /usr/local/haproxy

    #用户与用户组

    user haproxy

    group haproxy

    #守护进程启动

    daemon

    #最大连接数

    maxconn 4000

    #配置ssl

    tune.ssl.default-dh-param 2048

#默认配置

defaults

    log global

    #option httplog

    mode http

    option dontlognull

    timeout connect 5000

    timeout client 50000

    timeout server 50000

    option http-server-close

    retries 3

    timeout http-request 10s

    timeout queue 1m

    timeout connect 10s

    timeout client 1m

    timeout server 1m

    timeout http-keep-alive 10s

    timeout check 10s

    maxconn 3000

#前端配置,http_front名称可自定义

frontend http_front

    # 发起http请求到80端口,会被转发到设置的ip及端口

    bind 0.0.0.0:80

    #haproxy的状态管理页面,通过/haproxy?stats来访问

    stats uri /haproxy?stats

    #配置acl规则,实现跳转

    acl api hdr_beg(host) -i www.api.com

    acl web hdr_beg(host) -i www.web.com

    #重定向到https

    redirect prefix https://www.web.com if web

    acl nowww hdr_beg(host) -i a.com

    redirect prefix https://www.a.com if nowww

    acl www hdr_beg(host) -i www.a.com

    redirect prefix https://www.a.com if www

    #判断使用哪个后台服务

    use_backend api if api

    use_backend web if web

    #隐藏haproxy在监控页面的版本号

    stats hide-version

    #多长时间刷新一次监控页面

    stats refresh 10s

    #默认使用哪个后端服务

    #default_backend apache

    #设置监控页面的用户名和密码

    stats auth test:123456

#前端配置,http_front_443名称可自定义

frontend http_front_443

    # 发起http请求到443端口,会被转发到设置的ip及端口

    #用此命令合并 cat xxx.pem yyy.key | tee test.pem

    bind 0.0.0.0:443 ssl crt /usr/local/haproxy/cert/test.pem

    #haproxy的状态管理页面,通过/haproxy?stats来访问

    stats uri /haproxy?stats

    acl api hdr_beg(host) -i www.api.com

    acl web hdr_beg(host) -i www.web.com

    use_backend api_443 if api

    use_backend web_443 if web

    stats hide-version

    stats refresh 10s

    #default_backend apache

    stats auth test:123456


#后端配置,http_back名称可自定义

backend api

    #负载均衡方式

    #source 根据请求源IP

    #static-rr 根据权重

    #leastconn 最少连接者先处理

    #uri 根据请求的uri

    #url_param 根据请求的url参数

    #rdp-cookie 据据cookie(name)来锁定并哈希每一次请求

    #hdr(name) 根据HTTP请求头来锁定每一次HTTP请求

    #roundrobin 轮询方式

    balance roundrobin

    #设置健康检查页面

    option httpchk GET /check.html

    #传递客户端真实IP

    option forwardfor header X-Forwarded-For

    # inter 2000 健康检查时间间隔2秒

    # rise 3 检测多少次才认为是正常的

    # fall 3 失败多少次才认为是不可用的

    # weight 30 权重

    # 需要转发的ip及端口

    server api_server_1 192.168.1.106:80 check inter 2000 rise 3 fall 3 weight 30

    server api_server_2 192.168.1.107:80 check inter 2000 rise 3 fall 3 weight 30


backend api_443

    #负载均衡方式

    #source 根据请求源IP

    #static-rr 根据权重

    #leastconn 最少连接者先处理

    #uri 根据请求的uri

    #url_param 根据请求的url参数

    #rdp-cookie 据据cookie(name)来锁定并哈希每一次请求

    #hdr(name) 根据HTTP请求头来锁定每一次HTTP请求

    #roundrobin 轮询方式

    balance roundrobin

    #设置健康检查页面

    option httpchk GET /check.html

    #https需要此配置

    reqadd X-Forwarded-Proto: https

    # inter 2000 健康检查时间间隔2秒

    # rise 3 检测多少次才认为是正常的

    # fall 3 失败多少次才认为是不可用的

    # weight 30 权重

    # 需要转发的ip及端口

    server api_1 192.168.1.106:80  check inter 2000 rise 3 fall 3 weight 30

    server api_2 192.168.1.107:80  check inter 2000 rise 3 fall 3 weight 30


#####TCP配置########

listen mysql

    bind :6666

    mode tcp

    #mysql健康检查 root为mysql登录用户名

    #option mysql-check user root 

    balance roundrobin

    server mysql1 192.168.1.106:3306 check inter 2000 rise 3 fall 3 weight 50

    server mysql2 192.168.1.107:3306 check inter 2000 rise 3 fall 3 weight 30

上面配置,如果是我未写注释的,自己Google下具体意思。


三、启动haproxy服务

[root@yyd /usr/local/haproxy] #  ./sbin/haproxy -h   查看下帮助文档

篇一:centos7下haproxy负载均衡软件的搭建与使用

[root@yyd /usr/local/haproxy] #  ./sbin/haproxy -f /etc/haproxy.cfg &

[root@yyd /usr/local/haproxy] #  pstree -ap | grep haproxy

篇一:centos7下haproxy负载均衡软件的搭建与使用

这是它的进程结构,说明启动成功。


四、访问

在浏览器中输入 192.168.1.105/haproxy?stats,看到如下页面,即大功告成


       写着写着,不知不觉中已到23点53分,时间过得真他妈快,不能过24点,要不然就是明天的东西了,只能草草收笔,其中可能有不如意的地方,望各位谅解!







        


以上是关于篇一:centos7下haproxy负载均衡软件的搭建与使用的主要内容,如果未能解决你的问题,请参考以下文章

Centos7+Haproxy实现Apache负载均衡

centos7下haproxy1.7的使用与配置

利用keepalived和haproxy配置mysql的高可用负载均衡

haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

初识千万级高并发负载均衡软件HaProxy

千万级高并发负载均衡软件HAproxy