请叫我峰子:
感受VPS建站的乐趣。

HAProxy安装与配置(实现nginx负载均衡)方法实例之二

一、HAProxy简介

HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。HAProxy还可以将后端的服务器与网络隔离,起到保护后端服务器的作用。HAProxy的负载均衡能力虽不如LVS,但也是相当不错,而且由于其工作在7层,可以对http请求报文做深入分析,按照自己的需要将报文转发至后端不同的服务器(例如动静分离),这一点工作在4层的LVS无法完成。

二、配置简介

主机结构:

系统环境:CentOS6.8

前端HAProxy主机IP:192.168.10.130 #客户端访问都先走本机,本机代理转发后端的内容

后端两台nginx主机IP:192.168.10.145/192.168.10.146 #配置只允许192.168.10.130的请求,客户端无法直接请求

实验步骤:

1.通过yum安装haproxy

2.配置负载均衡

3.配置访问记录日志

4.配置网页访问统计

5.配置防火墙功能

三、安装配置haproxy

配置之前关闭selinux

# setenforce 0 

下载haproxy可以去官网http://www.haproxy.org/(不过要翻墙,不会翻墙的就yum装好了)

# yum -y install epel-release #安装epel拓展源

# yum -y install haproxy #安装haproxy

配置文件路径为/etc/haproxy/haproxy.cfg

# vim /etc/haproxy/haproxy.cfg

保留global和defaults的配置,其余的都可以注释掉了

这里讲解一下global和defaults配置

global
    log         127.0.0.1 local2    ###[err warning info debug]  # 全局的日志配置,使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志

    chroot      /var/lib/haproxy    ###软件工作目录
    pidfile     /var/run/haproxy.pid ###haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 
    maxconn     4000  ###最大连接数,默认4000
    user        haproxy #所属用户
    group       haproxy #所属组
    daemon  ###以守护进程方式运行haproxy

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats ###socket路径

defaults
    mode                    http ###默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
    log                     global ###采用全局定义的日志
    option                  httplog ### 启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志
    option                  dontlognull ###不记录健康检查的日志信息
    option http-server-close ##每次请求完毕后主动关闭http通道
    option forwardfor       except 127.0.0.0/8 ###如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
    option                  redispatch ###serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    retries                 3 ###3次连接失败就认为服务不可用,也可以通过后面设置 
    timeout http-request    10s ###http请求超时时间
    timeout queue           1m #一个请求在队列里的超时时间
    timeout connect         10s #连接超时
    timeout client          1m ###客户端连接超时
    timeout server          1m ###服务器连接超时
    timeout http-keep-alive 10s  #设置http-keep-alive的超时时间
    timeout check           10s  #检测超时
    maxconn                 3000 ###最大连接数

添加以下内容


############WEB服务配置##################
listen webha80 #监听名称自定义
bind 0.0.0.0:80 #监听80端口
mode http #模式为http
option httplog #记录访问日志
log global #日志记录为全局的设置
maxconn 3000 #最大的连接数为3000
balance roundrobin #负载均衡模式为轮询
server nginx1 192.168.10.145:80 weight 2 rise 2 fall 3 #nginx1权重为2, 连续2次请求正常加入负载,失败3次即判定服务器宕机
server nginx2 192.168.10.146:80 weight 1 rise 2 fall 3 #nginx2权重为1, 连续2次请求正常加入负载,失败3次即判定服务器宕机

########统计页面配置########  
listen admin_stats
    # 监听端口  
bind 0.0.0.0:8080
    # 启用状态监控
stats enable
mode http 
log global 
    # 统计页面URL  
stats uri /stats  
    # 统计页面密码框上提示文本  
stats realm Haproxy Statistics  
    # 统计页面用户名和密码设置  
stats auth admin:admin  
    # 隐藏统计页面上HAProxy的版本信息  
    #stats hide-version
    #当通过认证才可管理
stats admin if TRUE
    #统计页面自动刷新时间
stats refresh 30s 

配置完成启动服务

# service haproxy start

查看服务端口开放情况

80端口和8080端口应该都处于监听状态

[[email protected] haproxy]# netstat -tlnp Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      1778/haproxy        tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1778/haproxy        tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1203/sshd           tcp        0      0 :::22                       :::*                        LISTEN      1203/sshd   

两台nginx服务器安装nginx

我这里直接用epel源装nginx

# yum -y install epel-release 

# yum -y install nginx 

# service nginx start

nginx1上 

# echo “this is nginx111111111111111” > /usr/share/nginx/html/index.html  #修改index.html以便验证轮询效果

#  iptables -I INPUT -s 192.168.10.130 -p tcp –dport 80 -j ACCEPT #允许haproxy对80端口的访问

nginx2上

# echo “this is nginx22222222222222” > /usr/share/nginx/html/index.html 

# iptables -I INPUT -s 192.168.10.130 -p tcp –dport 80 -j ACCEPT

haproxy服务器上

# iptables -I INPUT -p tcp –dport 80 -j ACCEPT #开放80端口访问

iptables -I INPUT -p tcp –dport 8080 -j ACCEPT  #开放8080端口访问

四、日志记录

修改rsyslog.conf文件

# vim /etc/rsyslog.conf

    #由于haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听
    # Provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514

    #启用级别为local2的设备,并将该设备的所有级别的日志全部输出到/var/log/haproxy.log下

# Save haproxy log
    local2.*           /var/log/haproxy.log

重启rsyslog服务

# service rsyslog restart 

五、访问测试

浏览器中输入http://192.168.10.130

刷新过程三次中两次出现nginx1 一次出现nginx2 

查看页面统计

浏览器访问http://192.168.10.130:8080/stats

统计内容包括后端主机情况,访问流量,次数,权重等等。

查看日志输出

赞(0) 打赏
转载请注明:峰网博客 » HAProxy安装与配置(实现nginx负载均衡)方法实例之二

评论 抢沙发

评论前必须登录!

 

中山网站建设

企业专线联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏