Ubuntu apache linux shell 云计算 编程 nginx php centos 开源 Android mysql google Firefox java Windows 微软 程序员 wordpress Python

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

公司最近有一個項目由於用戶擔心一臺單機無法承擔最多用戶量的使用,要求上應用集群。我們根據應用情況設計了應用集群架構。

架構圖如下:

逻辑架构

部署應用集群的特點:

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:

# date2013-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

 

延伸阅读

    评论