1. 程式人生 > >HAproxy七層負載均衡

HAproxy七層負載均衡

                haproxy七層負載均衡

實驗環境:192.168.1.27 haproxy

192.168.1.3 WEB1

192.168.1.4 WEB2

1. haproxy下載安裝

#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.19.tar.gz

#tar zxvf  haproxy-1.4.19.tar.gz

# cd haproxy-1.4.19

# make TARGET=linux26

# make install

2. 配置

Vi /etc/haproxy.cfg

global

log 127.0.0.1 local0 info #日誌[err warning info debug]

maxconn 4096 #單個程序的最大連線數

pidfile /var/run/haproxy.pid

user haproxy

group haproxy

daemon #守護程序執行

#nbproc 2 #作為守護程序執行時,建立多少個程序

defaults

log global

mode http

option dontlognull #不記錄空連線

option log-health-checks #記錄健康檢測日誌

retries 3 #連線失敗後的重連次數

option redispatch #在連線失敗或斷開情況下,允許當前會話被重新分發

maxconn 2000 #最大連線數

timeout connect 5000ms

timeout client 30000ms

timeout server 30000ms

listen stats 192.168.1.27:8888 #haproxy統計頁面

stats refresh 30s

stats hide-version

mode http

transparent

stats uri / haproxy

stats realm Haproxy \ statistic

listen web 0.0.0.0:80

mode http #http七層負載模式

balance roundrobin #伺服器分配演算法

option tcpka

option httpchk GET /123.php #用於檢查服務是否正常的頁面

cookie SERVERID insert indirect #允許插入serverid到cookie中serverid後面可自定義

server web1 192.168.1.3:80 weight 1 check inter 5s rise 2 fall 2 cookie A

server web2 192.168.1.4:80 weight 1 check inter 5s rise 2 fall 2 cookie B

#後臺伺服器

#weight 伺服器權重

#check port 檢測埠

#inter 設定連續的兩次健康檢測間的時間

#rise 指定多少次連線成功的健康檢測後,可認定該服務可用

#fall 指定多少次失敗的健康檢測後,可認定該服務故障

3. haproxy七層負載功能測試

以下是網上找的一個session檢測頁面

<?php

session_start();

$_SESSION['time'] =date("Y:m:d:H:s",time());

echo "time"."&lt;font color=red>".$_SESSION['time']."</font>"."<br>";

echo "ip adress"."<font color=red>".$_SERVER['SERVER_ADDR']."</font>"."<br>";

echo "local adress"."<font color=red>".$_SERVER['SERVER_NAME']."</font>"."<br>";

echo "SESSIONNAME"."<font color=red>".session_name()."</font>"."<br>";

echo "SESSIONID"."<font color=red>".session_id()."</font>"."<br>";

?&gt;

在192.168.1.3和192.168.1.4的web目錄中各上傳一個該PHP頁面後訪問:

clip_image001

可以看到三次訪問結果,訪問的真實伺服器IP都是192.168.1.4 ,SESSIONID都是dm22o79o2r28guir5loap95ba1。 可以說明haproxy已成功通過cookie儲存了SessionID,使得同一客戶端每次訪問都是同一個Session。

haproxy通過頁面檢測伺服器和統計 

1. 狀態檢視

在/etc/haproxy.cfg配置檔案中的option httpchk GET /phpmyadmin/index.php這一行即為通過某一頁面來檢測伺服器是否正常。還可以開啟http://192.168.1.27:8888/統計面可以看到當前連線數、最大連線數、傳送/接收位元組、伺服器狀態等資訊。

clip_image003

2. 測試伺服器故障檢測功能

更改檢測頁面名稱,模擬頁面無法訪問

clip_image005

統計頁面WEB1的Status顯示為DOWN,並呈紅色預警

clip_image007

更改檢測頁面回原名

clip_image009

統計頁面顯示WEB1的Status顯示為UP

clip_image011