公司最近有一个项目由于用户担心一台单机无法承担最多用户量的使用,要求上应用集群。我们根据应用情况设计了应用集群架构。
架构图如下:
部署应用集群的特点:
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