如何在Linux上使用HAProxy配置HTTP负载均衡系统_第1页
如何在Linux上使用HAProxy配置HTTP负载均衡系统_第2页
如何在Linux上使用HAProxy配置HTTP负载均衡系统_第3页
如何在Linux上使用HAProxy配置HTTP负载均衡系统_第4页
如何在Linux上使用HAProxy配置HTTP负载均衡系统_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网址 网址 edu 51CTO com 如何在如何在 LinuxLinux 上使用上使用 HAProxyHAProxy 配置配置 HTTPHTTP 负载均衡系统负载均衡系统 如今对基于互联网的应用和服务的要求越来越大 这给广大的 IT 管理员施加了越来越 大的压力 面对突如其来的流量猛增 自生的流量增加或者是内部挑战 比如硬件故障和 紧急维护 不管怎样 你的互联网应用都必须保持随时可用 连现代化的开发运营和持 续交付做法也会危及互联网服务的可靠性和一贯表现 无法预测或缺乏一贯的表现是你所无法承受的 那么 我们如何能消除这些缺点呢 在大多数情况下 一套合适的负载均衡解决方案有望满足这个要求 今天我将为各位介绍 如何使用 HAProxy 搭建一套 HTTP 负载均衡系统 HTTPHTTP 负载均衡简介负载均衡简介 HTTP 负载均衡是一种网络解决方案 负责在托管相同应用内容的几台服务器之间分配 进入的 HTTP 或 HTTPS 流量 由于在多台可用服务器之间均衡了应用请求 负载均衡系统就 能防止任何应用服务器变成单一故障点 因而提高了整体的应用可用性和响应能力 它还 让你可以随着不断变化的工作负载 轻松地缩小 扩大部署的应用系统的规模 只需添加或 删除额外的应用服务器 哪里使用负载均衡 何时使用 哪里使用负载均衡 何时使用 由于负载均衡系统改进了服务器的利用率 最大限度地提高了可用性 只要你的服务 器开始面临繁重负载 或者正为一个较庞大的项目规划架构 就应该使用它 事先规划好 负载均衡系统的用途是个好习惯 那样 未来你需要扩展环境规模时 它会证明其用途 HAProxyHAProxy 是什么东东 是什么东东 HAProxy 是一种流行的开源负载均衡和代理系统 面向 GNU Linux 平台上的 TCP HTTP 服务器 HAProxy 采用了单一线程的事件驱动型架构而设计 它能够轻松地处理 10G 网卡 线路速度 现广泛应用于许多生产环境中 其功能特性包括 自动检查健康状况 可定制 的负载均衡算法 支持 HTTPS SSL 以及会话速率限制等 我们在本教程中要达到什么样的目的 我们在本教程中要达到什么样的目的 在本教程中 我们将逐步介绍为 HTTP 网站服务器配置基于 HAProxy 的负载均衡系统这 个过程 前提条件前提条件 网址 网址 edu 51CTO com 你至少需要一台 最好是两台 网站服务器来证实所搭建负载均衡系统的功能 我们 假设 后端 HTTP 网站服务器已经搭建并运行起来 将将 HAProxyHAProxy 安装到安装到 LinuxLinux 上上 就大多数发行版而言 我们可以使用你所用发行版的软件包管理器来安装 HAProxy 将将 HAProxyHAProxy 安装到安装到 DebianDebian 上上 在 Debian 中 我们需要为 Wheezy 添加向后移植功能 为此 请在 etc apt sources list d 中创建一个名为 backports list 的新文件 其内容如下 1 deb wheezybackports main 更新你的软件库数据 并安装 HAProxy 1 apt get update 2 apt get install haproxy 将 HAProxy 安装到 Ubuntu 上 1 apt get install haproxy 将 HAProxy 安装到 CentOS 和 RHEL 上 1 yum install haproxy 配置配置 HAProxyHAProxy 在本教程中 我们假设有两台 HTTP 网站服务器已搭建并运行起来 其 IP 地址分别为 192 168 100 2 和 192 168 100 3 我们还假设 负载均衡系统将在 IP 地址为 192 168 100 4 的那台服务器处进行配置 为了让 HAProxy 发挥功用 你需要更改 etc haproxy haproxy cfg 中的几个项目 这 些变更在本章节中予以描述 万一某个配置对不同的 GNU Linux 发行版而言有所不同 会 在相应段落中加以注明 1 1 配置日志功能配置日志功能 你首先要做的工作之一就是 为你的 HAProxy 建立合适的日志功能 这对将来进行调 试大有用处 日志配置内容位于 etc haproxy haproxy cfg 的 global 部分 下面这些是 针对特定发行版的指令 用于为 HAProxy 配置日志 网址 网址 edu 51CTO com CentOSCentOS 或或 RHELRHEL 要想在 CentOS RHEL 上启用日志功能 把 log 127 0 0 1 local2 换成 log 127 0 0 1 local0 下一步 在 var log 中为 HAProxy 创建单独的日志文件 为此 我们需要改动当前的 rsyslog 配置 为了让配置简单而清楚 我们将在 etc rsyslog d 中创建一个名为 haproxy conf 的新文件 其内容如下 1 ModLoad imudp 2 UDPServerRun 514 3 template Haproxy msg n 4 local0 info var log haproxy log Haproxy 5 local0 notice var log haproxystatus log Haproxy 6 local0 该配置将把基于 template 的所有 HAProxy 消息隔离到 var log 中的日志文件 现在 重启 rsyslog 让变更内容生效 1 service rsyslog restart DebianDebian 或或 UbuntuUbuntu 要想在 Debian 或 Ubuntu 上为 HAProxy 启用日志功能 把 1 log dev log local0 2 log dev log local1 notice 换成 1 log 127 0 0 1 local0 下一步 为 HAProxy 配置单独的日志文件 编辑 etc rsyslog d 中一个名为 haproxy conf 的文件 或者 Debian 中的 49 haproxy conf 其内容如下 1 ModLoad imudp 2 UDPServerRun 514 3 template Haproxy msg n 网址 网址 edu 51CTO com 4 local0 info var log haproxy log Haproxy 5 local0 notice var log haproxystatus log Haproxy 6 local0 该配置将把基于 template 的所有 HAProxy 消息隔离到 var log 中的日志文件 现在 重启 rsyslog 让变更内容生效 1 service rsyslog restart 2 2 设置默认值设置默认值 下一步是为 HAProxy 设置默认变量 找到 etc haproxy haproxy cfg 中的 defaults 部分 把它换成下列配置 1 log global 2 mode http 3 option httplog 4 option dontlognull 5 retries 3 6 option redispatch 7 maxconn 20000 8 contimeout 5000 9 clitimeout 50000 10 srvtimeout 50000 上述配置推荐 HTTP 负载均衡器使用 但可能不是最适合你环境的解决方案 如果那样 请参阅 HAProxy 参考手册页 进行适当的改动和调整 3 3 网站服务器集群的配置网站服务器集群的配置 网站服务器集群 Webfarm 的配置定义了可用的 HTTP 服务器集群 我们所建负载均 衡系统的大部分设置都将放在这里 现在 我们将创建一些基本的配置 我们的节点将在 这里加以定义 把从 frontend 部分到文件末尾的所有配置换成下列代码 1 listen webfarm 80 2 mode http 3 stats enable 4 stats uri haproxy stats 5 stats realm Haproxy Statistics 6 stats auth haproxy stats 7 balance roundrobin 8 cookie LBN insert indirect nocache 网址 网址 edu 51CTO com 9 option httpclose 10 option forwardfor 11 server web01 192 168 100 2 80 cookie node1 check 12 server web02 192 168 100 3 80 cookie node2 check listen webfarm 80 这一行定义了我们的负载均衡系统将侦听哪些接口 出于本 教程的需要 我将该值设为 这让负载均衡系统侦听我们的所有接口 在实际场景下 这可能不合意 应该换成可从互联网来访问的某个接口 1 stats enable 2 stats uri haproxy stats 3 stats realm Haproxy Statistics 4 stats auth haproxy stats 上述设置声明 可以在 http haproxy stats 处访问负载均衡 系统的统计数字 这种访问由简单的 HTTP 验证以及登录名 haproxy 和密码 stats 来 确保安全 这些设置应该换成你自己的登录信息 如果你不想让这些统计数字被人看到 那么可以完全禁用它们 下面是 HAProxy 统计数字的一个例子 balance roundrobin 这一行定义了我们将使用哪种类型的负载均衡 在本教程中 我们将使用简单的轮叫调度算法 这对 HTTP 负载均衡来说完全绰绰有余 HAProxy 还提供 了其他类型的负载均衡 leastconn leastconn 连接数最少的服务器优先接收连接 source source 对源 IP 地址进行哈希处理 用运行中服务器的总权重除以哈希值 即可决 定哪台服务器将接收请求 uri uri URI 的左边部分 问号前面 经哈希处理 用运行中服务器的总权重除以哈希 值 所得结果决定哪台服务器将接收请求 网址 网址 edu 51CTO com url param url param 变量中指定的 URL 参数将在每个 HTTP GET 请求的查询串中进行查询 你 基本上可以将使用蓄意制作的 URL crafted URL 的请求锁定于特定的负载均衡节点 hdr name hdr name HTTP 头 将在每个 HTTP 请求中进行查询 被定向到特定节点 cookie LBN insert indirect nocache 这一行让我们的负载均衡系统存储持久性 cookie 这让我们得以准确查明集群中的哪个节点用于某一个会话 这些节点 cookie 将与 指定的名称一并存储起来 在我们这个例子中 我使用了 LBN 但你可以指定自己喜欢 的任意名称 节点将为该 cookie 把字符串作为一个值而存储起来 1 server web01 192 168 100 2 80 cookie node1 check 2 server web02 192 168 100 3 80 cookie node2 check 上述部分对网站服务器节点集群进行了定义 每台服务器都用内部名称 比如 web01 和 web02 IP 地址和独特的 cookie 串来表示 cookie 串可以定义为你需要的任何名称 我使用了简单的 node1 node2 node n 启动启动 HAProxyHAProxy 你完成了配置工作后 可以启动 HAProxy 验证一切按预期运行 在在 Centos RHELCentos RHEL 上启动上启动 HAProxyHAProxy 使用下列指令 让 HAProxy 能够在系统启动后启动 并打开它 1 chkconfig haproxy on 2 service haproxy start 当然 别忘了启用防火墙中的端口 80 如下所示 CentOS RHELCentOS RHEL 7 7 上的防火墙 上的防火墙 1 firewallcmd permanent zone public addport 80 tcp 2 firewallcmd reload CentOS RHELCentOS RHEL 6 6 上的防火墙 上的防火墙 把下面这一行添加到 etc sysconfig iptables 中的这部分 OUTPUT ACCEPT 1 A INPUT m state state NEW m tcp p tcp dport 80 j ACCEPT 然后重启 iptables 网址 网址 edu 51CTO com 1 service iptables restart 在在 DebianDebian 上启动上启动 HAProxyHAProxy 使用下列指令启动 HAProxy 1 service haproxy start 别忘了启用防火墙中的端口 80 为此把下面这一行添加到 etc iptables up rules 1 A INPUT p tcp dport 80 j ACCEPT 在在 UbuntuUbuntu 上启动上启动 HAProxyHAProxy 让 HAProxy 能够在系统启动后启动 只要在 etc default haproxy 中将 ENABLED 选项设为 1 1 ENABLED 1 启动 HAProxy 1 service haproxy start 然后启用防火墙中的端口 80 1 ufw allow 80 测试测试 HAProxyHAProxy 为了检查 HAproxy 是否在正常工作 我们可以执行下列步骤 首先 用下列内容准备好 test php 文件 1 该 P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论