Centos6.5下Haproxy负载均衡搭建

Posted Bazingafraser

tags:

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

一、升级系统内核

yum update

安装gcc编译

yum -y install gcc

二、重启操作系统使得系统内核升级生效

reboot/init 6

三、安装haproxy

官网下载haproxy最新源码包

https://www.haproxy.org/#down

 

此处下载的是haproxy-1.7.9.tar.gz

下载路径:wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.9.tar.gz

1、解压

[root@i-bapxgqlw package]# tar -xvzf haproxy-1.7.9.tar.gz

[root@i-bapxgqlw package]# cd haproxy-1.7.9

2、创建目录

[root@i-bapxgqlw haproxy-1.7.9]# mkdir -p /usr/local/haproxy

3、安装

cd  haproxy-1.7.9

yum groupinstall -y "Development Tools"

yum install -y openssl openssl-devel

uname -a

make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz  #此处编译的时候需要让haproxy支持SSL模块

make install PREFIX=/usr/local/haproxy

4、安装完成之后查看版本

[root@i-bapxgqlw examples]# /usr/local/haproxy/sbin/haproxy -v

HA-Proxy version 1.7.9 2017/08/18

Copyright 2000-2017 Willy Tarreau <willy@haproxy.org>

 

[root@i-bapxgqlw examples]#

5、复制haproxy/usr/sbin/

[root@i-bapxgqlw examples]#cp /usr/local/haproxy/sbin/haproxy /usr/sbin/

6、复制haproxy脚本到/etc/init.d

[root@i-bapxgqlw examples]# cp haproxy.init /etc/init.d/haproxy

赋予权限

[root@i-bapxgqlw examples]# chmod 755 /etc/init.d/haproxy

7、创建系统账号

[root@i-bapxgqlw examples]# useradd -r haproxy

HTTP配置

User --> haproxy_80--> web1_80

        --> web2_80

8、创建配置文件

[root@i-bapxgqlw examples]# mkdir /etc/haproxy

[root@i-bapxgqlw examples]# vim /etc/haproxy/haproxy.cfg

####全局配置######

global

    log 127.0.0.1 local0 info #[日志输出配置,所有日志都记录在本机,通过local0输出]  

    chroot /usr/local/haproxy #运行路径

    stats socket /run/haproxy/admin.sock mode 660 level admin

    user haproxy

    group haproxy

    maxconn 100000 #默认最大的链接数,需要考虑ulimit限制和default限制

    tune.maxaccept 100000

    daemon #以后台形式运行

 

#####默认配置#####

defaults

    option dontlognull #不记录监控检查日志信息

    retries 3 #三次失败认为服务器不可用,也可通过后边设置

    option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持

    maxconn 100000 #默认最大的链接数

    timeout client 50s #客户端超时

    timeout server 50s #服务器超时

    timeout connect 5s #连接超时

 

########backend后端配置##############  

listen http_80

    bind 0.0.0.0:80 #监听80端口

    mode http #http协议

    balance roundrobin #轮询,balance source 保存session值,支持static-rrleastconnfirsturi等参数 

    log global

    log-format "%Tl",%{+Q}ci,"%fi:%fp",%{+Q}bi,%{+Q}r,%ST,%B,%{+Q}hr,%Tt

    option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  

    option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现  

    option http-server-close

    capture request header Host len 255

    capture request header User-Agent len 255

    capture request header Referer len 255

    capture request header Cookie len 255

    timeout http-request 10s

    timeout http-keep-alive 55s

    server http_01_80 192.168.1.1:80  cookie 1 weight 10 check inter 3000 rise 3 fall 5

    server http_02_80 192.168.1.2:80  cookie 1 weight 10 check inter 3000 rise 3 fall 5

9、启动

/etc/init.d/haproxy start

10、nginx搭建

192.168.1.1192.168.1.2机器上分别搭建nginx,并添加一个测试域名

11、访问

在本地host写入haproxy服务器的ipnginx的域名,浏览器访问F12查看ip是否是haproxyip,并查看nginx服务器上是否有轮询的日志产生

HTTPS配置(前端443访问后端转80

User --> haproxy_443--> web1_80

        --> web2_80

haproxy配置文件中做相关修改

vim /etc/haproxy/haproxy.cfg

在全局配置中添加tune.ssl.default-dh-param 2048  使得haproxy支持SSL配置

Listen配置如下:

listen https_443

    bind 0.0.0.0:443 ssl crt /root/server.pem no-sslv3 #指定ssl证书

    mode http #http协议,不走tcp协议

    balance roundrobin

    option httpclose

    option forwardfor

    reqadd X-Forwarded-Proto:\\ https

    #default_backend http_80

    capture request header Host len 255

    capture request header User-Agent len 255

    capture request header Referer len 255

    capture request header Cookie len 255

    timeout http-request 10s

    timeout http-keep-alive 55s

    server https_01_443 192.168.1.1:80 cookie 1 weight 10 check inter 3000 rise 3 fall 5

server https_02_443 192.168.1.2:80 cookie 2 weight 10 check inter 3000 rise 3 fall 5

证书配置

在配置中的指定目录下创建证书存储文件server.pem

将证书合并成为一个文件:

cat server.crt ca.crt server.key |tee server.pem

然后存储在以上配置的目录中:

完成之后重启haproxy服务

/etc/init.d/haproxy restart

然后进行测试即可

HTTPHTTPS合并配置

可以同时支持808044380的两种方式

详细配置如下:

####全局配置######

global

    log 127.0.0.1 local3 info #[日志输出配置,所有日志都记录在本机,通过local0输出]  

    chroot /usr/local/haproxy #运行路径

    stats socket /run/haproxy/admin.sock mode 660 level admin

    user haproxy

    group haproxy

    maxconn 100000 #默认最大的链接数,需要考虑ulimit限制和default限制

    tune.maxaccept 100000

    tune.ssl.default-dh-param 2048

    daemon #以后台形式运行

 

#####默认配置#####

defaults

    log global

    option httplog

    option dontlognull #不记录监控检查日志信息

    retries 3 #三次失败认为服务器不可用,也可通过后边设置

    option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持

    maxconn 100000 #默认最大的链接数

    timeout client 50s #客户端超时

    timeout server 50s #服务器超时

    timeout connect 5s #连接超时

 

########backend后端配置##############  

listen http_80

    bind 0.0.0.0:80 #监听80端口

    mode http #http协议

    balance roundrobin #轮询,balance source 保存session值,支持static-rrleastconnfirsturi等参数 

    log global

    log-format "%Tl",%{+Q}ci,"%fi:%fp",%{+Q}bi,%{+Q}r,%ST,%B,%{+Q}hr,%Tt

    option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  

    option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现  

    option http-server-close

    capture request header Host len 255

    capture request header User-Agent len 255

    capture request header Referer len 255

    capture request header Cookie len 255

    timeout http-request 10s

    timeout http-keep-alive 55s

    server http_01_80 192.168.1.1:80 cookie 1 weight 10 check inter 3000 rise 3 fall 5

    server http_02_80 192.168.1.2:80 cookie 1 weight 10 check inter 3000 rise 3 fall 5

 

listen https_443

    bind 0.0.0.0:443 ssl crt /root/server.pem no-sslv3 #指定ssl证书

    mode http #http协议,不走tcp协议

    balance roundrobin

    option httpclose

    option forwardfor

    reqadd X-Forwarded-Proto:\\ https

    #default_backend http_80

    capture request header Host len 255

    capture request header User-Agent len 255

    capture request header Referer len 255

    capture request header Cookie len 255

    timeout http-request 10s

    timeout http-keep-alive 55s

    server https_01_443 192.168.1.1:80 cookie 1 weight 10 check inter 3000 rise 3 fall 5

    server https_02_443 192.168.1.2:80 cookie 2 weight 10 check inter 3000 rise 3 fall 5

listen admin_stats

        bind    0.0.0.0:8000

        mode    http

        stats   refresh 30s

        stats   uri     /haproxy

        stats   auth    admin:admin@123

        stats   hide-version

        stats   admin if TRUE

 

重启haproxy配置后查看下端口:

 

可以同时测试80443的访问了

测试方法:本地host

haproxy服务器ip   相关域名

访问之后F12查看获取的ip

 

以上是关于Centos6.5下Haproxy负载均衡搭建的主要内容,如果未能解决你的问题,请参考以下文章

mysql复制+keepalived+haproxy配置(负载均衡)

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

haproxy负载均衡与搭建web群集

MySQL日常运维之 MySQL双主复制+keepalived+haproxy配置(负载均衡)

linux服务器 Haproxy搭建Web集群环境实例

haproxy搭建负载均衡