阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HAProxy实现网站高并发集群

224次阅读
没有评论

共计 6638 个字符,预计需要花费 17 分钟才能阅读完成。

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

项目需求:由于网站规模的扩大,访问量的也越来越多,原来的一台机器提供网站服务,出现故障后就中断了网站服务,造成经济损失,现在老板发话要解决单点故障,于是我就找了些资料,对比了下 Haproxy、LVS、Nginx,是各有各的优点,我们的网站每天的 PV 也不是很大,就先在虚拟机上做了下测试,仅做 Haproxy 部分七层负载均衡,生产环境需要 Haproxy+keepalived 来实现负载均衡器高可用性。

先了解下 HAProxy 常用的算法:

roundrobin  #表示简单的轮询,每个负载均衡器基本都具备的
static-rr    #表示根据权重
leastconn    #表示最少连接者先处理
source      #表示根据请求源 IP,haprox 按照客户端的 IP 地址所有请求都保持在一个服务器上
ri          #表示根据请求的 URI
rl_param    #表示根据请求的 URl 参数 ’balance url_param’ requires an URL parameter name
hdr(name)    #表示根据 HTTP 请求头来锁定每一次 HTTP 请求
rdp-cookie(name) #表示根据据 cookie(name) 来锁定并哈希每一次 TCP 请求
拓扑图:

HAProxy 实现网站高并发集群

下载:http://haproxy.1wt.eu/
配置如下:
安装 haproxy

[root@localhost ~]# tar zxvfhaproxy-1.4.24.tar.gz
[root@localhost ~]# cdhaproxy-1.4.24
[root@localhosthaproxy-1.4.24]# make TARGET=linux26 PREFIX=/usr/local/haproxy
[root@localhosthaproxy-1.4.24]# make install PREFIX=/usr/local/haproxy

# 进入安装目录创建配置文件

[root@localhosthaproxy-1.4.24]# cd /usr/local/haproxy/
[root@localhost haproxy]# mkdir conf
[root@localhost haproxy]# cd conf/
[root@localhost conf]# vi haproxy.cfg
global
    log 127.0.0.1 local0 #通过 syslog 服务的 local0 输出日志信息
    maxconn 4096# 单个进程的最大连接数
    uid 99 #所属运行的用户 uid,默认 nobod
    gid 99 #所属运行的用户组,默认 nobody
    daemon #后台运行
    nbproc 2 #工作进程数量
    pidfile /var/run/haproxy.pid
defaults
    log global
    log 127.0.0.1 local3 err #使用本机上的 syslog 服务的 local3 设备记录错误信息[err warning info debug]
    mode http #工作模式在 7 层,tcp 是 4 层
    option httplog #使用 http 日志类别,默认是不记录 http 请求的
    option httpclose# 每次请求完毕后主动关闭 http 通道式
    option forwardfor# 如果后端服务器需要获得客户端的真实 IP 需要配置次参数,将可以从 Http Header 中获得客户端 IP
    option redispatch# 当 serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
    retries 3 #设置尝试次数,3 次连接失败则认为服务器不可用
    maxconn 2048# 最大连接数
    contimeout 5000 #连接超时
    clitimeout 50000 #客户端超时
    srvtimeout 50000# 服务器超时
    timeout check 2000 #心跳检测超时
listen status 0.0.0.0:8080  #定义状态名字和监听端口
    stats uri /haproxy-status #查看 haproxy 服务器状态地址
    stats auth admin:admin #查看状态页面的用户名和密码
    stats hide-version #隐藏 haproxy 版本信息
    stats refresh 30s #每 5 秒刷新一次状态页面
listen web_server 0.0.0.0:80 #定义后端名字和监听端口
    mode http #采用 7 层模式
    balance roundrobin #负载均衡算法,这里是轮叫
    cookie SERVERID  #允许插入 serverid 到 cookie 中,serverid 后面可以定义
    option httpchk GET /index.html# 健康检测
    server web1 192.168.1.11:80 weight 3 check inter 500 fall 3
    server web2 192.168.1.12:80 weight 2 check inter 500 fall 3

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-12/93708p2.htm

推荐阅读:

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

说明:用 server 来设置后端服务器
第二段:haproxy 自己的一个名称,将在日志中显示
第三段:后端 IP 和端口
第四段:权重值,权重值越大,分配的任务几率越高
第五段:健康检测,inter 500 健康检测间隔是 500 毫秒
最后一段:检测多少次,认为服务器是不可用的
启动 haproxy

[root@localhost ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

重启 haproxy

[root@localhost ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `cat/var/run/haproxy.pid`

写一个简单的 haproxy 服务脚本
[root@localhost ~]# vi /etc/init.d/haproxy
#!/bin/bash
DIR=/usr/local/haproxy
PIDFILE=/var/run/haproxy.pid
ARG=$*
start()
{
echo “Starting Haproxy …”
$DIR/sbin/haproxy -f $DIR/conf/haproxy.cfg
}
stop()
{
echo “Stopping Haproxy …”
kill -9 $(cat $PIDFILE)
}
case $ARG in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo “Usage: start|stop|restart”

# 设置开机启动

[root@localhost ~]# chmod +x/etc/init.d/haproxy
[root@localhost ~]# echo “/etc/init.d/haproxy start” >> /etc/rc.local

# 查看服务器状态
http://192.168.1.10:8080/haproxy-status

配置 haproxy 日志输出
[root@localhost ~]# vi/etc/rsyslog.conf #在下面添加
local3.*    /var/log/haproxy.log
local0.*    /var/log/haproxy.log
[root@localhost ~]# service rsyslog restart

后端 web 服务器配置相同

[root@localhost ~]# yum install httpd –y
[root@localhost ~]# service httpd start
[root@localhost ~]# echo”web1/web2″ > /var/www/html/index.html

测试:访问 http://192.168.1.10, 按 F5 一直刷新会显示轮训显示 web1 和 web2, 模拟 web1 故障 down 机,haproxy 页面显示的状态会变成 DOWN,只有 web2 提供服务,当 web1 恢复后会自动加入集群中。

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

项目需求:由于网站规模的扩大,访问量的也越来越多,原来的一台机器提供网站服务,出现故障后就中断了网站服务,造成经济损失,现在老板发话要解决单点故障,于是我就找了些资料,对比了下 Haproxy、LVS、Nginx,是各有各的优点,我们的网站每天的 PV 也不是很大,就先在虚拟机上做了下测试,仅做 Haproxy 部分七层负载均衡,生产环境需要 Haproxy+keepalived 来实现负载均衡器高可用性。

先了解下 HAProxy 常用的算法:

roundrobin  #表示简单的轮询,每个负载均衡器基本都具备的
static-rr    #表示根据权重
leastconn    #表示最少连接者先处理
source      #表示根据请求源 IP,haprox 按照客户端的 IP 地址所有请求都保持在一个服务器上
ri          #表示根据请求的 URI
rl_param    #表示根据请求的 URl 参数 ’balance url_param’ requires an URL parameter name
hdr(name)    #表示根据 HTTP 请求头来锁定每一次 HTTP 请求
rdp-cookie(name) #表示根据据 cookie(name) 来锁定并哈希每一次 TCP 请求
拓扑图:

HAProxy 实现网站高并发集群

下载:http://haproxy.1wt.eu/
配置如下:
安装 haproxy

[root@localhost ~]# tar zxvfhaproxy-1.4.24.tar.gz
[root@localhost ~]# cdhaproxy-1.4.24
[root@localhosthaproxy-1.4.24]# make TARGET=linux26 PREFIX=/usr/local/haproxy
[root@localhosthaproxy-1.4.24]# make install PREFIX=/usr/local/haproxy

# 进入安装目录创建配置文件

[root@localhosthaproxy-1.4.24]# cd /usr/local/haproxy/
[root@localhost haproxy]# mkdir conf
[root@localhost haproxy]# cd conf/
[root@localhost conf]# vi haproxy.cfg
global
    log 127.0.0.1 local0 #通过 syslog 服务的 local0 输出日志信息
    maxconn 4096# 单个进程的最大连接数
    uid 99 #所属运行的用户 uid,默认 nobod
    gid 99 #所属运行的用户组,默认 nobody
    daemon #后台运行
    nbproc 2 #工作进程数量
    pidfile /var/run/haproxy.pid
defaults
    log global
    log 127.0.0.1 local3 err #使用本机上的 syslog 服务的 local3 设备记录错误信息[err warning info debug]
    mode http #工作模式在 7 层,tcp 是 4 层
    option httplog #使用 http 日志类别,默认是不记录 http 请求的
    option httpclose# 每次请求完毕后主动关闭 http 通道式
    option forwardfor# 如果后端服务器需要获得客户端的真实 IP 需要配置次参数,将可以从 Http Header 中获得客户端 IP
    option redispatch# 当 serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
    retries 3 #设置尝试次数,3 次连接失败则认为服务器不可用
    maxconn 2048# 最大连接数
    contimeout 5000 #连接超时
    clitimeout 50000 #客户端超时
    srvtimeout 50000# 服务器超时
    timeout check 2000 #心跳检测超时
listen status 0.0.0.0:8080  #定义状态名字和监听端口
    stats uri /haproxy-status #查看 haproxy 服务器状态地址
    stats auth admin:admin #查看状态页面的用户名和密码
    stats hide-version #隐藏 haproxy 版本信息
    stats refresh 30s #每 5 秒刷新一次状态页面
listen web_server 0.0.0.0:80 #定义后端名字和监听端口
    mode http #采用 7 层模式
    balance roundrobin #负载均衡算法,这里是轮叫
    cookie SERVERID  #允许插入 serverid 到 cookie 中,serverid 后面可以定义
    option httpchk GET /index.html# 健康检测
    server web1 192.168.1.11:80 weight 3 check inter 500 fall 3
    server web2 192.168.1.12:80 weight 2 check inter 500 fall 3

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-12/93708p2.htm

推荐阅读:

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计6638字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中