Haproxy負載均衡集羣架構設計一例

公司最近有一個項目因爲用戶擔憂一臺單機沒法承擔最多用戶量的使用,要求上應用集羣。咱們根據應用狀況設計了應用集羣架構。html

架構圖以下:前端

邏輯架構

部署應用集羣的特色:node

1. 前端代理負載均衡redis

因用戶環境基礎架構採用虛擬化集羣平臺,服務器均採用虛擬機實現,因此設計時採用單臺Haproxy來實現。bash

前端選用haproxy:有一最大的特色HTTP第7層鍵康狀態檢查,與咱們實際須要一致,因常常有應用壓力大,應用沒法響應的狀況,正好經過這一個特性進行健康狀態檢查,保證用戶透明訪問。以前有采用haporxy的主備模式作雙機主備應用集羣。主備模式也是haproxy的一大特色。服務器

本方案是採用負載均衡模式採用source模式。架構

 

2. 應用服務器會話複製負載均衡

配置jboss 應用會話複製功能,保證用戶登陸會話三臺服務器共享。socket

 

3. 共享存儲空間ide

共享存儲空間是集羣應用的一個必備的功能,這裏採用nfs來實現。用來實現代碼與附件等數據一致。

 

4. haproxy配置要點文件記錄以下:

 

(1) 取消將日誌記錄在/var/log/messages目錄中

默認會也將haproxy日誌記錄在/var/log/message中,要去掉。

# 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權限執行。若是要保留訪問日誌,能夠修改腳本實現。

#!/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配置文件記錄

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
相關文章
相關標籤/搜索