在 CentOS 上安裝 HAProxy

目錄

HAProxy 是一個使用 C 語言編寫的自由及開放原始碼軟體,
其提供高可用性、負載均衡,以及基於 TCP 和 HTTP 的應用程式代理。

安裝環境:

CentOS 6.5
HAProxy 1.8.12

安裝必要套件

1
2
yum install mysql #如果要將 MySQL 做 HA 的話才需要
yum install openssl-devel

下載 HAProxy

1
2
3
4
cd /tmp
wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.12.tar.gz
tar -zxvf haproxy-1.8.12.tar.gz
cd haproxy-1.8.12

安裝 HAProxy

1
2
3
cd haproxy-1.8.12
make clean
make TARGET=linux2628 PREFIX=/usr/local/haproxy USE\_OPENSSL=1 ADDLIB=-lz

上述的 TARGET 可使用 uname -r 查看 CentOS 內核版本
Linux 2.6 及以上版本使用 linux26
Linux 2.6.28, 3.x及以上版本使用 linux2628(啟用splice和tproxy)

1
2
3
make install PREFIX=/usr/local/haproxy
mkdir /var/lib/haproxy #建立文件目錄
mkdir /usr/local/haproxy/conf #建立文件目錄

新增 HAProxy 設定檔:

1
vi /usr/local/haproxy/conf/haproxy.cfg

貼上以下內容,並依照註解的地方調整:

 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD\_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000    #限制單個進程的最大連接數
    user        haproxy #用戶和用戶組,需手動添加
    group       haproxy
    daemon              #進程在後台作為守護進程運行

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    log                     global
    option                  dontlognull
    option                  redispatch          #當客戶端連接到出現故障的服務器時,將請求轉發給其他機器
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s                 #連接server超時時間
    timeout client          1m                  #客戶端相應超時時間
    timeout server          1m                  #server端嚮應超時時間
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
# 接收請求的前端虛擬節點
#---------------------------------------------------------------------

listen webservice #HTTP 做 HA,webservice 為此組設定的名稱,可以自行調整
    bind *:80
    mode                    http
    option                  httplog
    option http-server-close
    option forwardfor       except 127.0.0.0/8  #在http請求頭中添加X-Forwarded-For,把客戶端IP發送給服務器

    balance     roundrobin
    cookie SERVERID insert indirect nocache #可以讓某個瀏覽器發出的 Request 統一導向同一台機器,避免一些資料交換的問題
    server  webserver1 192.168.0.167:80 check #第一台機器
    server  webserver2 192.168.0.196:80 check #第二台機器

    # HAProxy 監控儀表板
    stats enable
    stats hide-version
    stats realm "Haproxy Statistics"
    stats uri /ha?stats #之後在 HTTP 的網域後方加上 /ha?stats 即可以看到監控畫面
    # 帳號密碼
    stats auth admin:admin721
    stats refresh 10s

listen dbservice #MySQL 做 HA,dbservice 為此組設定的名稱,可以自行調整
    bind *:3306
    mode                    tcp

    option mysql-check user haproxy\_check

    balance     roundrobin
    server  dbserver1 192.168.0.167:3306 check #第一台機器
    server  dbserver2 192.168.0.196:3306 check #第二台機器

將 rc.local 文件添加可執行權限:

1
2
chmod +x /etc/rc.d/rc.local
chmod +x /etc/rc.local

把 HAProxy 的啓動腳本添加到開機自啓動:

1
echo "/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg" >> /etc/rc.local

執行 HAProxy 的啓動腳本:

1
2
killall haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

如需轉載引用需保留原始連結及作者姓名,並以相同方式分享。CC BY-SA 4.0  

最後更新 2024/01/08 02:20 UTC
瀏覽次數
本站總訪問量
使用 Hugo 建立
主題 StackJimmy 設計