HAProxy一箭雙鵰——讓一個端口完成兩件事

背景

這裏爲啥會想到讓一個端口做兩件事呢,主要是因爲小編的網絡環境處於校園網裏面,而校園網的防火牆對外只開放TCP的80端口,也就是說,如果從外部網絡訪問校園網內部的機器那隻能通過80端口來訪問。而學過套接字編程的童鞋都明白,一個端口號和固定的IP地址共同標識了物理機器上的一個進程,對於只有單個網卡的機器來說,通過一個端口號只能訪問到本物理機器上的一個進程。但是在實際應用的需求中,顯然是希望該物理機器能夠提供多種服務,而每一種服務都是需要對外提供一個可訪問的端口,顯然這點在校園網的防火牆下是不可行的。那麼是否存在一種方法是的通過一個端口來完成多種服務呢?是的,有這樣的方法,這就是代理的使用。


工具

HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。通過HAProxy對指定端口進行監聽,分析連接協議,如果是http協議就讓服務器交給http服務程序(如Apache、Nginx等)處理,如果是ssh協議就交給ssh服務程序,這樣就完成了一個端口完成兩件事情的需求,當然,這裏完成的事情可以根據實際需求來變更,小編這裏主要是完成讓服務器對外提供兩種服務,一個是Squid代理服務,一個是SSH登陸服務。


HAProxy安裝和配置

對於Squid和SSH的安裝配置,網上的教程很多,小編在這裏不再複述。

而小編的安裝配置環境是Ubuntu,安裝的過程很簡單,通過sudo apt-get install haproxy就可以完成安裝過程,而剩下的就是配置問題,在配置過程中,小編走了不少彎路。

首先提供一個HAProxy的配置文件說明,傳送門:http://leejia.blog.51cto.com/4356849/1421882

初次完成安裝的時候,可能很多童鞋會發現,在HAProxy啓動的時候就碰到一個麻煩,就是通過指令執行sudo service haproxy start之後,終點沒有任何反應,而通過進程查找也沒有找到對應的後臺進程,是的,沒有後臺進程說明沒有啓動,而之所以沒有啓動是因爲系統的默認是不支持啓動,需要做的工作很簡單,執行需要進入/etc/default/haproxy文件中,然後修改ENABLED=1,然後再次執行啓動指令,就可以發現HAProxy進行順利啓動。

保證了HAProxy之後,剩下的就是配置的問題了,這裏小編直接提供小編的配置文件:


需要注意的地方在圖中均已經標識出來,HAProxy正是通過規則的匹配來完成這所謂的一箭雙鵰的過程。而測試也表明該配置確實可行,至此也就克服了端口受限的問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章