Haproxy负载均衡集群架构设计一例-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

Haproxy负载均衡集群架构设计一例

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://koumm.blog.51cto.com/703525/1282152

公司最近有一个项目由于用户担心一台单机无法承担最多用户量的使用,要求上应用集群。我们根据应用情况设计了应用集群架构。

架构图如下:

逻辑架构

部署应用集群的特点:

1. 前端代理负载均衡

因用户环境基础架构采用虚拟化集群平台,服务器均采用虚拟机实现,所以设计时采用单台Haproxy来实现。

前端选用haproxy:有一最大的特点HTTP第7层键康状态检查,与我们实际需要一致,因经常有应用压力大,应用无法响应的情况,正好通过这一个特性进行健康状态检查,保证用户透明访问。之前有采用haporxy的主备模式做双机主备应用集群。主备模式也是haproxy的一大特点。

本方案是采用负载均衡模式采用source模式。

 

2. 应用服务器会话复制

配置jboss 应用会话复制功能,保证用户登录会话三台服务器共享。

 

3. 共享存储空间

共享存储空间是集群应用的一个必备的功能,这里采用nfs来实现。用来实现代码与附件等数据一致。

 

4. haproxy配置要点文件记录如下:

 

(1) 取消将日志记录在/var/log/messages目录中

默认会也将haproxy日志记录在/var/log/message中,要去掉。

1
2
3
4
# vi /etc/syslog.conf
local3.*                       /var/log/haproxy.log
local0.*                       /var/log/haproxy.log
*.info;mail.none;authpriv.none;cron.none;local3.none      /var/log/messages

 

(2) haproxy日志切割

haproyx日志切割脚本,没有现成的,就专门写了一个日志切割脚本来实现每天的日志切割,加入到计划任务中,一定要su root -c 强制root权限执行。如果要保留访问日志,可以修改脚本实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# author: koumm
# desc:
# date: 2013-01-31
# version: v1.0
# modify:
# cut haproxy log
mv /var/log/haproxy.log /var/log/haproxy.log.bak
if [ -e /var/log/haproxy.log.bak ]; then
logrotate -f /etc/logrotate.conf
chown nobody:nobody /var/log/haproxy.log
chmod +x /var/log/haproxy.log
fi
sleep 1
if [ -e /var/log/haproxy.log ]; then
rm -rf /var/log/haproxy.log.bak
fi

 

(3) haproxy配置文件记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
global
log    127.0.0.1   local0
maxconn 65535
chroot /usr/local/haproxy
uid 99
gid 99
stats socket /usr/local/haproxy/HaproxSocket level admin
daemon
nbproc 1
pidfile /usr/local/haproxy/haproxy.pid
#debug
defaults
log    127.0.0.1    local3
mode   http
option httplog
option httplog clf
option httpclose
#option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance source
#balance roundrobin
stats   uri     /haproxy-stats
stats   refresh 10s
contimeout      5000
clitimeout      50000
srvtimeout      50000
listen  APP_Cluster 0.0.0.0:80
mode http
option httpchk GET /test.html HTTP/1.0\r\nHost:192.168.0.110
server 192.168.0.111_node1  192.168.0.111:80 weight 3 check inter 2000 rise 2 fall 1
server 192.168.0.112_node2  192.168.0.112:80 weight 3 check inter 2000 rise 2 fall 1
server 192.168.0.113_node3  192.168.0.113:80 weight 3 check inter 2000 rise 2 fall 1
listen  stats_auth 0.0.0.0:91
mode  http
stats enable
stats uri  /admin
stats realm "LOGIN"
stats auth  admin:123456
#stats hide-version
stats refresh 10s
stats admin if TRUE

 

 

本文出自 “koumm的linux技术博客” 博客,请务必保留此出处http://koumm.blog.51cto.com/703525/1282152

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章