HaProxy安裝/啟動/簡單配置

來源:互聯網
上載者:User
Haproxy 雖然帶著ha,但它做的確是負載平衡。haproxy是工作在四層之上的,這也就意味著它可以代理的服務要比nginx更廣泛,效能比nginx也要更高一些。相比較lvs,可配置性又比較好,需要的機器沒有lvs那麼多。因此haproxy在一定需求下使用還是不錯的。比如使用haproxy來對mysql的從節點進行負載平衡。下面我們就來簡單的使用haproxy來進行MySQL的負載平衡。
環境準備
IP地址 職能
192.168.111.100 負載平衡伺服器
192.168.111.101 MySQL伺服器
192.168.111.102 MySQL伺服器

我們這裡假設兩台節點的MySQL伺服器都已經安裝完畢了。而且進行了如下配置
1.MySQL的連接埠都為3306 2.伺服器開啟了 3306 連接埠 3.建立MySQL使用者 test ,密碼 test ,可被 192.168.111.* 下的主機訪問 4.為了顯示負載到兩個不同的機器,在一個機器中建立一個不同於另一個機器的資料庫,用以區分。一個是MySQL1,一個是MySQL2
下面主要針對的是負載平衡節點的安裝以及配置,也就是本筆記的核心。
先來下載haproxy,下載地址
http://www.haproxy.org/
解壓
tar -zxvf haproxy-1.7.8.tar.gz

安裝(編譯的時候需要指定核心的版本,安裝的時候需要指定安裝的路徑)
make TARGET=linux26make install PREFIX=/usr/local/haproxy

在make的過程中需要指定linux的核心版本,可以通過下面的命令來查看核心版本
cat /proc/version

安裝成功資訊(下面的安裝資訊是不指定PREFIX的情況下的)
[root@m007 haproxy-1.7.8]# make installinstall -d "/usr/local/sbin"install haproxy  "/usr/local/sbin"install -d "/usr/local/share/man"/man1install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1install -d "/usr/local/doc/haproxy"for x in 51Degrees-device-detection architecture close-options configuration cookie-options DeviceAtlas-device-detection intro linux-syn-cookies lua management netscaler-client-ip-insertion-protocol network-namespaces proxy-protocol SPOE WURFL-device-detection; do \        install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \    done
在這裡,我先說說我的目錄結構的規劃,我在學習的過程中,感覺在目錄結構上遇到了很多坑。在這裡把我的目錄結構列出來,我的haproxy是放到usr/local/haproxy下的
/usr/local/haproxy      sbin    這裡放的是可執行檔,就是haproxy (安裝的過程中建立的)           haproxy      logs     這裡放的是記錄的日誌(自己建立的)           haproxy.log      conf     這裡放置的是設定檔(自己建立的)           haproxy.cnf           haproxy.pid      doc     我還沒用到過,看名字應該是存放的文檔(安裝過程中建立的)           haproxy      share     這個我也沒用到過也是在安裝過程中建立的           man 也就是說,我們這裡要自己建立兩個檔案夾,一個是logs,一個是conf。在這兩個檔案夾下,要建立一個log檔案,一個cnf主設定檔和一個pid檔案。
安裝成功之後就是要進行配置,配置的過程還是比較麻煩的。首先1.7.8這個版本我並沒有找到它提供的設定檔。我確實找了examples下的設定檔,沒有找到。於是我在網上找到的一些配置進行的拼湊出來的。下面列出haproxy最簡單的配置資訊。這個配置的內容是放到/usr/local/haproxy/conf/haproxy.cnf檔案中的。其中這裡用到了pid檔案,我在pid中就儲存了一個1.
global        daemon               # 後台方式運行        nbproc 1        pidfile /usr/local/haproxy/conf/haproxy.piddefaults        mode tcp               #預設的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK        retries 2               #兩次串連失敗就認為是伺服器不可用,也可以通過後面設定        option redispatch       #當serverId對應的伺服器掛掉後,強制定向到其他健康的伺服器        option abortonclose     #當伺服器負載很高的時候,自動結束掉當前隊列處理比較久的連結        maxconn 4096            #預設的最大串連數        timeout connect 5000ms  #連線逾時        timeout client 30000ms  #用戶端逾時        timeout server 30000ms  #伺服器逾時        #timeout check 2000      #=心跳檢測逾時        log 127.0.0.1 local0 err #[err warning info debug]########test1配置#################listen test1                         #這裡是配置負載平衡,test1是名字,可以任意        bind 0.0.0.0:3306            #這裡是監聽的IP地址和連接埠,連接埠號碼可以在0-65535之間,要避免連接埠衝突        mode tcp                     #串連的協議,這裡是tcp協議        #maxconn 4086        #log 127.0.0.1 local0 debug        server s1 192.168.111.101:3306 #負載的機器        server s2 192.168.111.102:3306 #負載的機器,負載的機器可以有多個,往下排列即可
這樣就配置好了。下面來啟動haproxy
./usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cnf
-f 是指定我們的設定檔的路徑。
啟動過程中沒有任何日誌資訊列印,安靜到讓你懷疑沒有啟動成功,然後本都的你去查看日誌,發現日誌裡沒有任何資訊,不知道是你的日誌沒有配置正確還是系統啟動沒有問題,茫茫然的感覺,不知該從哪裡下手。但作為程式員的你思維還是敏捷的,咱先測測能不能負載平衡啊,於是使用MySQL的用戶端工具,輸入本地機器的ip,加上監聽的連接埠號碼,發現連上了,然後再退出重新連,發現連了另外的一台機器,到這裡,我們發現這個實驗已經成功了。但作為程式員的你仍心有不甘,我們要監控,我們還要查看日誌。下面來繼續
配置監控 haproxy帶有監控功能,而且配置簡單,直接在主設定檔中加入一下配置即可,格式就是這麼縮排的,非拷貝出現問題。這個配置中可以看到,項目的名稱使用的是haproxy,訪問的時候在瀏覽器中輸入原生IP地址加連接埠加上uri就可以了。例如:http://192.168.111.100:8888/haproxy
listen  admin_stats        bind 0.0.0.0:8888         mode  http         stats uri   /haproxy        stats realm     Global\ statistics         stats auth  admin:admin


下面配置日誌
日誌暫時沒還搞定(跟著網上的步驟在做,但始終就是不給我記錄,我也沒轍啊,研究完再單獨寫一個記錄日誌的吧)
連接埠檢測 haproxy可以檢測我們的服務是否宕機,檢測的方式就是通過指定檢測連接埠。配置非常簡單
listen test1        bind 0.0.0.0:3306        mode tcp        #maxconn 4086        #log 127.0.0.1 local0 debug        server s1 192.168.111.101:3306 check port 3306        server s2 192.168.111.102:3306 check port 3306
當我們停止一個服務的時候,監控視圖如下(很快把我們關掉的機器就標記為紅色了)


查看haproxy的進程狀態
ps -ef | grep haproxy
殺掉haproxy進程
kill -9 pid

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.