yinl_li 发表于 2015-9-4 13:51:17

实战应用HAProxy

HAProxy简介

    HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。安装及配置


[*]系统环境:CentOS6.6 X86_64
[*]服务器配置:
[*]haproxy代理服务器       IP:172.16.34.11
[*]后端web1               IP:172.16.34.12
[*]后端web2               IP:172.16.34.13



[*]redhat6.4之后就收录进了haproxy,所以这里直接yum安装
[*]yum -y install haproxy                           # 安装
[*]cp /etc/haproxy/haproxy.cfg{,.bak}               # 备份配置文件
先让代理服务器跑起来



[*]在web1上
[*]vim /var/www/html/index.html
[*]<h1> web1 </h1>            添加信息并保存退出
[*]vim /etc/httpd/conf/httpd.conf
[*]ServerName localhost:80      找到ServerName改为这个,保存退出,不改也可以,只是不让启动httpd服务的时候提示的信息,保存退出
[*]service httpd start          启动httpd服务
[*]在web2上执行如上动作,将
[*]vim /var/www/html/index.html
[*]<h1> web2 </h1>   
[*]启动服务
[*]
[*]在代理服务器上:
[*]vim /etc/haproxy/haproxy.cfg
[*]在frontend段和backend段编辑如下
[*]frontendmain *:80                  # 定义监听在什么端口上   
[*]    #acl url_static       path_beg       -i /static /images /javascript /stylesheets
[*]    #acl url_static       path_end       -i .jpg .gif .png .css .js
[*]    #use_backend static          if url_static
[*]    default_backend             webserver      # 默认的backend是什么,backend的名称可以自定义但必须与下面的相同
[*]#backend static
[*]#    balance   roundrobin
[*]#    server      static 127.0.0.1:4331 check
[*]backend webserver                              # 定义backend段的后端服务器地址及负载均衡调度算法
[*]    balance   roundrobin
[*]    serverweb1 172.16.34.12:80 check
[*]    serverweb2 172.16.34.13:80 check
[*]保存退出
[*]service haproxy start                  启动
[*]ss -tnlp                               可以看到haproxy监听在80端口上了
[*]后并在浏览器上输入172.16.34.11测试

配置文件说明


[*]全局设置   定义程序的工作属性
[*]global                               # global配置中的参数为进程级别的参数,且通常与其运行的OS相关。
[*]    log         127.0.0.1 local2   # 全局的日志配置,local2是日志设备
[*]    chroot      /var/lib/haproxy   # 修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot
[*]    pidfile   /var/run/haproxy.pid # haproxy.pid文件存放路径
[*]    maxconn   4000               # 最大连接数
[*]    user      haproxy            # 运行用户
[*]    group       haproxy            # 运行组
[*]    daemon                           # 守护进程,使HAProxy进程进入后台运行。这是推荐的运行模式
[*]    stats socket /var/lib/haproxy/stats   启用基于程序编译时默认设置的统计报告
[*]通用默认段
[*]defaults                           # “defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定。
[*]    mode                  http   # 模式 {tcp|http|health}
[*]    log                     global   # 应用全局的日志配置
[*]    option                  httplog# 采用http日志格式
[*]    option                  dontlognull# 启用或禁用空连接的日志记录。这里是不记录空连接
[*]    option http-server-close             # 为每一个请求都附加首
[*]    option forwardfor       except 127.0.0.0/8 #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部。
[*]    option                  redispatch   # 在连接失败或断开的情况下,允许当前会话被重新分发
[*]    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   # 最大連接數
[*]定义后端web的配置,可以使用组或单个主机使用acl定义
[*]frontendmain *:5000                # “frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
[*]    acl url_static       path_beg       -i /static /images /javascript /stylesheets# acl控制列表
[*]    acl url_static       path_end       -i .jpg .gif .png .css .js    # acl控制列表
[*]    use_backend static          if url_static
[*]    default_backend             app
[*]定义后端web的组
[*]backend static    #“backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器。
[*]    balance   roundrobin   # 定义负载均衡算法,roundrobin:基于权重进行轮叫
[*]    server      static 127.0.0.1:4331 check   # 服务器地址及端口,check:启动对此server执行健康状态检查
[*]backend app
[*]    balance   roundrobin    # # 定义负载均衡算法,roundrobin:基于权重进行轮叫
[*]    serverapp1 127.0.0.1:5001 check# 服务器地址及端口,check:启动对此server执行健康状态检查
[*]

看了配置文件后基本能明白HAporxy配置文件了HAProxy功能之status状态页使用

也可以在backend中使用


[*]vim /etc/haproxy/haproxy.cfg
[*]stats uri /haproxy-stats       在defaults段内插入这一段,后面的名字可以随便输入,访问的时候是http://172.16.34.11/haproxy-stats   在域名后面跟上输入的名字就可以进入stats状态页了
[*]service haproxy restart

http://www.cnblogs.com/cishi/p/0226ecac-d2d2-48b5-ba3b-30fe14f692f0_files/9922fe3c-f795-4509-9732-d2676f4b3fc4.png

启动了后就该需要为其加下帐号密码访问了,不然给人随意访问,网站安全性就很低了


[*]vim /etc/haproxy/haproxy.cfg
[*]stats auth    admin:password                在stats行下插入这一行:的是帐号和密码   支持多帐号密码登录,一行一个帐号密码
[*]service haproxy restart

http://www.cnblogs.com/cishi/p/0226ecac-d2d2-48b5-ba3b-30fe14f692f0_files/b0c87446-98b0-47fc-a330-ab72ac70fb2c.png



[*]vim /etc/haproxy/haproxy.cfg
[*]stats realm   Haproxy\ 8888888888       在stats行下插入这一行 是提示的信息
[*]service haproxy restart

http://www.cnblogs.com/cishi/p/0226ecac-d2d2-48b5-ba3b-30fe14f692f0_files/c781414b-de08-43a9-ba24-d355b12dee87.png

stats还具有管理的功能,需要在配置文件中开启
由于stats管理页只能在backend段或者listen段中使用,


[*]vim /etc/haproxy/haproxy.cfg                      在backend段中插入
[*]    stats uri /haproxy-stats
[*]    stats auth    admin:password
[*]    stats realm   Haproxy\ 8888888888
[*]    stats admin if TRUE

http://www.cnblogs.com/cishi/p/0226ecac-d2d2-48b5-ba3b-30fe14f692f0_files/8876bbed-f007-4532-a9b7-caa0414790e0.png

可以选中节点,用apply进行管理了
















来自为知笔记(Wiz)
页: [1]
查看完整版本: 实战应用HAProxy