首页 > 代码库 > 实战应用HAProxy

实战应用HAProxy

HAProxy简介

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

安装及配置

  1. 系统环境:CentOS6.6 X86_64
  2. 服务器配置:
  3. haproxy代理服务器 IP:172.16.34.11
  4. 后端web1 IP:172.16.34.12
  5. 后端web2 IP:172.16.34.13
  1. redhat6.4之后就收录进了haproxy,所以这里直接yum安装
  2. yum -y install haproxy # 安装
  3. cp /etc/haproxy/haproxy.cfg{,.bak} # 备份配置文件

先让代理服务器跑起来

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

配置文件说明

  1. 全局设置 定义程序的工作属性
  2. global # global配置中的参数为进程级别的参数,且通常与其运行的OS相关。
  3. log 127.0.0.1 local2 # 全局的日志配置,local2是日志设备
  4. chroot /var/lib/haproxy # 修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot
  5. pidfile /var/run/haproxy.pid # haproxy.pid文件存放路径
  6. maxconn 4000 # 最大连接数
  7. user haproxy # 运行用户
  8. group haproxy # 运行组
  9. daemon # 守护进程,使HAProxy进程进入后台运行。这是推荐的运行模式
  10. stats socket /var/lib/haproxy/stats 启用基于程序编译时默认设置的统计报告
  11. 通用默认段
  12. defaults # “defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定。
  13. mode http # 模式 {tcp|http|health}
  14. log global # 应用全局的日志配置
  15. option httplog # 采用http日志格式
  16. option dontlognull # 启用或禁用空连接的日志记录。这里是不记录空连接
  17. option http-server-close # 为每一个请求都附加首
  18. option forwardfor except 127.0.0.0/8 #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部。
  19. option redispatch # 在连接失败或断开的情况下,允许当前会话被重新分发
  20. retries 3 # 三次连接失败就认为是服务器不可用,也可以通过后面设置
  21. timeout http-request 10s # 超时的请求时间
  22. timeout queue 1m # 超时队列
  23. timeout connect 10s # 超时连接
  24. timeout client 1m # 客户端超时
  25. timeout server 1m # 服务器超时
  26. timeout http-keep-alive 10s # 长连接超时
  27. timeout check 10s # 检查时间
  28. maxconn 3000 # 最大連接數
  29. 定义后端web的配置,可以使用组或单个主机使用acl定义
  30. frontend main *:5000 # “frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
  31. acl url_static path_beg -i /static /images /javascript /stylesheets # acl控制列表
  32. acl url_static path_end -i .jpg .gif .png .css .js # acl控制列表
  33. use_backend static if url_static
  34. default_backend app
  35. 定义后端web的组
  36. backend static # “backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器。
  37. balance roundrobin # 定义负载均衡算法,roundrobin:基于权重进行轮叫
  38. server static 127.0.0.1:4331 check # 服务器地址及端口,check:启动对此server执行健康状态检查
  39. backend app
  40. balance roundrobin # # 定义负载均衡算法,roundrobin:基于权重进行轮叫
  41. server app1 127.0.0.1:5001 check # 服务器地址及端口,check:启动对此server执行健康状态检查
看了配置文件后基本能明白HAporxy配置文件了

HAProxy功能之status状态页使用

也可以在backend中使用
  1. vim /etc/haproxy/haproxy.cfg
  2. stats uri /haproxy-stats defaults段内插入这一段,后面的名字可以随便输入,访问的时候是http://172.16.34.11/haproxy-stats 在域名后面跟上输入的名字就可以进入stats状态页了
  3. service haproxy restart
技术分享
启动了后就该需要为其加下帐号密码访问了,不然给人随意访问,网站安全性就很低了
  1. vim /etc/haproxy/haproxy.cfg
  2. stats auth admin:password stats行下插入这一行 :的是帐号和密码 支持多帐号密码登录,一行一个帐号密码
  3. service haproxy restart
技术分享
  1. vim /etc/haproxy/haproxy.cfg
  2. stats realm Haproxy\ 8888888888 stats行下插入这一行 是提示的信息
  3. service haproxy restart
技术分享
stats还具有管理的功能,需要在配置文件中开启
由于stats管理页只能在backend段或者listen段中使用,
  1. vim /etc/haproxy/haproxy.cfg backend段中插入
  2. stats uri /haproxy-stats
  3. stats auth admin:password
  4. stats realm Haproxy\ 8888888888
  5. stats admin if TRUE
技术分享
可以选中节点,用apply进行管理了









来自为知笔记(Wiz)


实战应用HAProxy