日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

烂泥:高负载均衡学习haproxy之安装与配置

發布時間:2025/3/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 烂泥:高负载均衡学习haproxy之安装与配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文首發于爛泥行天下

有關高負載均衡的軟件,目前使用比較多的是haproxy、nginx和lvs。下面我們就開始學習haprxoy這款軟件。

一、haproxy介紹

以下開始介紹有關haproxy的原理及其優點。

1.1、haproxy原理

haproxy提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案。

haproxy特別適用于那些負載特別大的web站點,這些站點通常又需要會話保持或七層處理。haproxy運行在時下的硬件上,完全可以支持數以萬計的并發連接,并且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。

haproxy實現了一種事件驅動、單一進程模型,此模型支持非常大的并發連接數。多進程或多線程模型受內存限制、系統調度器限制以及無處不在的鎖限制,很少能處理數千并發連接。

事件驅動模型因為在有更好的資源和時間管理的用戶端(User-Space)實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什么他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。

1.2、haproxy的優點

(1)免費開源,穩定性也是非常好。單haproxy也跑得不錯,穩定性可以與硬件級的F5相媲美。

(2)根據官方文檔,haproxy可以跑滿10Gbps,這個數值作為軟件級負載均衡器是相當驚人的。

(3)haproxy支持連接拒絕:因為維護一個連接的打開的開銷是很低的,有時我們很需要限制***蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。這個已經為一個陷于小型DDoS***的網站開發了而且已經拯救了很多站點,這個優點也是其它負載均衡器沒有的。

(4)haproxy支持全透明代理(已具備硬件防火墻的典型特點):可以用客戶端IP地址或者任何其他地址來連接后端服務器。這個特性僅在Linux 2.4/2.6內核打了tcp proxy補丁后才可以使用。這個特性也使得為某特殊服務器處理部分流量同時又不修改服務器的地址成為可能。

(5)haproxy現多于線上的Mysql集群環境,我們常用于它作為MySQL(讀)負載均衡。

(6)自帶強大的監控服務器狀態的頁面,實際環境中我們結合Nagios進行郵件或短信報警。

(7)HAProxy支持虛擬主機,許多朋友說它不支持虛擬主機是錯誤的,通過測試我們知道,HAProxy是支持虛擬主機的。

PS:本次實驗的OS為ubuntu server 14.04。

二、業務架構圖

現在我們以實際的業務架構圖,來使用haproxy。業務架構圖如下:

這個是基本的業務架構圖,對外是haproxy這臺服務器。目前暫時沒有考慮haproxy的單點故障問題,這個問題我們會在后續的keepalived文章中會進行介紹。

現在要求如下:

2.1、域名跳轉

客戶端訪問http://dg.test.com時,要把請求分發到192.168.5.171:8080、192.168.5.174:8080、192.168.5.178:8080,這三臺服務器上。

客戶端訪問http://ilanni.test.com時,要把請求分發到ilanni.com,這臺服務器上。

2.2、IP地址跳轉

客戶端訪問http://192.168.5.171時,要把請求分發到192.168.5.174:80、192.168.5.178:80這兩臺服務器上。同時還要求客戶端每一次訪問,都跳轉到不同的服務器上。

2.3、端口跳轉

客戶端訪問http://dg.test.com:8090和http://ilanni.test.com:8090這兩個地址時,要把請求分發到192.168.5.174:8090、192.168.5.178:8090,這兩臺服務器上。

2.4、默認跳轉

如果客戶端訪問的不是dg.test.com與192.168.5.171,這兩個地址的話,要把請求全部分發到192.168.5.178:8080上。

2.5、多ACL匹配

如果客戶端的IP是192.168.5.140,同時訪問的是http://192.168.5.171時,要把請求分發到www.ilanni.com上。

三、安裝haproxy

haproxy的官網是http://www.haproxy.org/,如果打不開此站點,請***(如何***,聯系我)。

haproxy的安裝我們可以分為源碼方式和apt-get方式。下面對其安裝方式進行一一講解。

3.1 源碼方式安裝haproxy

haprxoy目前最新的版本為1.6,為了業務的穩定,在此我們選擇的是1.3.15.27這個版本。

在進行源碼安裝之前,首先要安裝相關的軟件庫。如下:

sudo apt-get -y install make gcc

創建運行haproxy時,使用的用戶。在此我們使用haproxy這個用戶,而且此用戶不能登錄到系統。如下:

sudo useradd -m haproxy

cat /etc/passwd |grep haproxy

通過上圖,我們可以看到haproxy用戶及用戶組的ID均為1005

現在開始下載源碼包如下:

wget http://www.haproxy.org/download/1.3/src/haproxy-1.3.15.27.tar.gz

解壓源碼包,如下:

tar -xf haproxy-1.3.15.27.tar.gz

cd haproxy-1.3.15.27/

查看haproxy的安裝文件,如下:

more README

這張圖很明顯的告訴我們,編譯安裝haproxy需要的軟件庫。除此之外還需要選擇OS的內核版本,linux2.6以上的版本,我們都選擇linux26

通過查看安裝文檔,我們可以很清楚的看出要編譯haproxy,我們首先要知道OS內核版本以及OS的位數。如下:

uname –a

通過上圖,我們可以很容易的看出linux內核的版本與OS的位數。

現在開始編譯haproxy,如下:

make TARGET=linux26 ARCH=x86_64 PREFIX=/usr/local/haproxy

其中TARGET表示OS的內核版本,ARCH表示OS的位數,PREFIX表示haprxoy的安裝路徑。

現在開始安裝haproxy,如下:

sudo make install PREFIX=/usr/local/haproxy

查看安裝后的文件,如下:

ll /usr/local/haproxy/

編輯haproxy的配置文件,haproxy默認給我們提供一個配置文件模版。如下:

sudo cp examples/haproxy.cfg /usr/local/haproxy/

查看haprxoy的版本,如下:

/usr/local/haproxy/sbin/haproxy -v

通過上圖,可以看到haproxy的版本確實是1.3.27。有關haproxy的配置實例見第三章。

3.2 apt-get方式安裝haproxy

apt-get方式安裝haproxy,如下:

sudo apt-get -y install haproxy

查看haproxy安裝的文件

dpkg -L haproxy

安裝完畢后,haproxy默認已經啟動。如下:

ps -ef |grep haproxy

查看haproxy版本,如下:

haproxy -v

通過上圖,我們知道現在haproxy的版本為1.5.4。

注意:apt-get方式安裝haproxy,如果版本為1.4.24的話。我們一定要修改/etc/default/haproxy,如下:

sudo vi /etc/default/haproxy

ENABLED=1

如果不修改的話,使用haproxy啟動腳本的話,是沒有用處的,也就說腳本不會重新加載haproxy的配置。

查看haproxy的配置文件,如下:

cat /etc/haproxy/haproxy.cfg

通過上圖,我們可以很明顯的看出默認的配置文件里面是沒有內容的。

四、配置haprxoy

haproxy安裝完畢后,我們來配置haproxy。源碼安裝的haprxoy在前面我們已經講解了,haproxy提供的配置模版haproxy.cfg。

4.1、haproxy配置實例

我們現在就以這個模版為例,配置haproxy。haproxy配置文件內容,如下:

grep -vE "^#|^$" haproxy.cfg

global

log 127.0.0.1 local0

log 127.0.0.1 local1 notice

maxconn 4096

uid 1005

gid 1005

daemon

defaults

log global

mode http

option httplog

option dontlognull

retries 3

option redispatch

maxconn 2000

contimeout 5000

clitimeout 50000

srvtimeout 50000

listen admin_stats

bind 192.168.5.171:1080

mode http

option httplog

maxconn 10

stats refresh 30s

stats uri /stats

stats auth admin:admin

stats hide-version

frontend weblb

bind *:80

acl is_dg hdr_beg(host) dg.test.com

acl is_ilanni hdr_beg(host) ilanni.test.com

acl is_171 hdr_beg(host) 192.168.5.171

acl is_ip src 192.168.5.140

use_backend acl if is_171 is_ip

use_backend dgserver if is_dg

use_backend ilanni if is_ilanni

use_backend 171server if is_171

default_backend backend_default

backend dgserver

balance source

server web1 192.168.5.171:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

server web2 192.168.5.174:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

server web3 192.168.5.178:8080 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

backend 171server

balance roundrobin

server dg1 192.168.5.174:80 check

server dg2 192.168.5.178:80 check

backend ilanni

server web1 www.yuanbaopu.com:80 weight 3 check inter 2000 rise 2 fall 3

backend acl

balance source

server web1 www.ilanni.com:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

backend backend_default

server web1 192.168.5.178:8080 weight 3 check inter 2000 rise 2 fall 3

listen 8090

bind 0.0.0.0:8090

mode http

balance roundrobin

server web1 192.168.5.174:8090 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3

server web2 192.168.5.178:8090 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

4.2、haproxy配置實例講解

有關haproxy配置文件我們先簡單介紹,如下:

global配置段,用于設定全局配置參數。

代理配置段中,主要是使用defaults、frontend、backend、listen關鍵詞。

defaults配置段用于為所有其它配置段提供默認參數,這配置默認配置參數可由下一個“defaults”所重新設定。

frontend配置段用于定義一系列監聽的套接字,這些套接字可接受客戶端請求并與之建立連接。

backend配置段用于定義一系列“后端”服務器,代理將會將對應客戶端的請求轉發至這些服務器。

listen配置段通過關聯“前端”和“后端”定義了一個完整的代理,通常只對TCP流量有用。

在上述haproxy配置文件中,我們主要講解ACL的匹配規則。

acl is_dg hdr_beg(host) dg.test.com

該行定義一個is_dg規則,如果客戶端請求的是dg.test.com這個域名,則定義該規則為is_dg。

use_backend dgserver if is_dg

該定義一個dgserver服務器組,如果客戶端請求符合is_dg定義的規則,則把該客戶端的請求分發到dgserver服務器組。

acl is_ip src 192.168.5.140

該行定義一個is_ip規則,如果客戶端的IP地址是192.168.5.140,則定義該規則為is_ip。

use_backend acl if is_171 is_ip

該定義一個acl服務器組,如果客戶端請求同時符合is_ip和is_171定義的規則,則把該客戶端的請求分發到acl服務器組。

default_backend backend_default

該行定義一個默認服務器組,如果客戶端請求不符合上述定義的任何一個規則,則把該客戶端的請求分發到backend_default服務器組。

其他的規則就不一一進行講解了。

以上就是按照目前的業務要求,配置的haproxy。有關這些配置項參數,我們會在下一篇文章中進行詳細介紹。

五、查看haproxy監控頁面

haproxy配置完畢后,現在來啟動haproxy,使用如下命令:

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

ps -ef |grep haproxy

netstat -tunlp|grep 3173

現在我們來打開haproxy的監控頁面,如下:

http://192.168.5.171:1080/stats

輸入用戶名和密碼后,haproxy監控后臺服務器的情況,如下:

現在我們來看看haprxoy所有后臺服務器的情況,先來看看dgserver組,如下:

通過上圖,我們可以看到dgserver組,目前web1這臺服務器處于宕機狀態。也就是說haprxoy不會把客戶端的請求分發到web1服務器上了。

現在我們再來看看171server組,如下:

通過上圖,我們可以很明顯的看出171server組的服務器目前都是正常運行的。

8090組服務器的情況,如下:

通過上圖,我們可以看到8090組的服務器也是有一臺是宕機的。

六、測試haproxy負載均衡

haprxoy配置完畢并正常啟動后,我們現在來根據業務的要求進行測試。

6.1 測試域名跳轉

使用如下命令測試域名跳轉:

curl http://dg.test.com

通過上圖,我們可以看到當我們使用dg.test.com這個域名訪問時,haproxy確實為我們進行跳轉了,而且跳轉到了192.168.5.174這臺服務器上。

因為考慮到客戶端session會話的問題,所以我們在配置haproxy負載均衡沒有使用roundrobin輪詢的方法,而是使用source方法。所以haproxy目前沒有把請求分發到192.168.5.171:8080、192.168.5.178:8080這兩臺服務器上。

現在我們訪問ilanni.test.com,如下:

通過上圖,我們可以看到訪問不同的域名,haproxy把請求分發到不同的服務器上。

6.2 測試IP地址跳轉

使用如下命令測試IP地址跳轉:

curl http://192.168.5.171

通過上圖,我們可以很明顯的看到,第一次使用curl http://192.168.5.171訪問時,haproxy是把請求分發171server組的192.168.5.174這臺機器上。而第二次訪問時,把請求分發171server組的192.168.5.178這臺機器上。

因為在haproxy配置中,我們使用的是roundrobin輪詢方法,所以客戶端的每一次請求,haproxy會把請求分發到不同的服務器上。

6.3 測試端口跳轉

使用如下命令測試IP地址跳轉:

curl http://dg.test.com:8090

curl http://ilanni.test.com:8090

通過上圖,我們可以很明顯的看到客戶端在通過dg.test.com:8090和ilanni.test.com:8090進行訪問時,haproxy確實把請求分發到了8090組服務器上的192.168.5.178:8090上。

6.4 測試默認跳轉

要測試默認跳轉,我們可以隨便使用一個域名進行測試。如下:

curl http://test.test.com

通過上圖,我們可以很明顯的看出haproxy把test.test.com的請求轉發到了默認服務器組的192.168.5.178:8080上。

6.5 測試多ACL匹配

要測試默認跳轉,我們先切換到192.168.5.140這臺機器上,然后訪問http://192.168.5.171。如下:

通過上圖,我們可以很明顯的看到在192.168.5.171這臺機器上訪問http://192.168.5.171時,haproxy確實把請求分發到www.ilanni.com這臺機器上。

七、centos安裝haproxy

有關在centos上安裝haproxy,我們在此就不多做介紹了。只把相關的操作命令貼出來。

yum方式安裝:yum -y install haproxy

源碼方式安裝:

useradd haproxy

cat /etc/passwd |grep haproxy

uname –a

yum -y install gcc make

wget http://www.haproxy.org/download/1.3/src/haproxy-1.3.27.tar.gz

tar -xf haproxy-1.3.27.tar.gz

cd haproxy-1.3.27

make TARGET=linux26 ARCH=x86_64 PREFIX=/usr/local/haproxy

make install PREFIX=/usr/local/haproxy

總結

以上是生活随笔為你收集整理的烂泥:高负载均衡学习haproxy之安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 里番acg★同人里番本子大全 | 日韩精品一区二区免费视频 | 国产1区2区3区 | 日韩av在线一区二区 | 性久久久久久久久久久 | 国产最新在线观看 | 亚洲蜜桃av| 三点尽露的大尺度国产 | 国产夫妻av | 激情黄色小视频 | 涩涩视屏 | 无码人妻av免费一区二区三区 | 欧美不卡视频 | 亚洲骚| av操操| 成人里番精品一区二区 | 中国吞精videos露脸 | 亚洲特黄特色 | 三级全黄视频 | 无码gogo大胆啪啪艺术 | av官网在线观看 | 日韩欧美成人一区 | 综合久久久久久久 | 欧美综合一区二区 | 中国黄色a级片 | 欧美激精品 | 1024手机在线看片 | 成人高潮视频 | 2021中文字幕 | 色撸撸在线观看 | 亚洲精品免费在线 | 成人高潮片免费视频 | 中文字幕乱码一二三区 | 女生和男生一起插插插 | 国产永久免费视频 | 国产手机精品视频 | 国产精品1 | 麻豆视频软件 | 91在线一区 | 国内毛片毛片 | 午夜亚洲AV永久无码精品蜜芽 | 天天草天天射 | 李丽珍毛片 | 99er久久| 亚洲一线二线在线观看 | 91亚洲在线 | 99久久免费国产精精品 | 啪啪的网站 | 亚洲成人黄色片 | 国产黄色网页 | 国产乱欲视频 | 成年人免费毛片 | 欧美日韩电影一区二区 | 无码少妇一级AV片在线观看 | 伊人资源网 | 青青草狠狠操 | 人乳videos巨大吃奶 | 欧洲中文字幕日韩精品成人 | 亚洲午夜久久久久久久久久久 | 日本色www| 97人妻一区二区精品免费视频 | 女女互慰吃奶互揉调教捆绑 | 97人妻精品一区二区 | 性视频播放免费视频 | 天堂无乱码 | 国产最爽的乱淫视频国语对白 | 丝袜一区二区三区四区 | 日韩一区二区三免费高清在线观看 | 韩国三级视频在线观看 | av网站国产 | 在线激情视频 | 国产强伦人妻毛片 | 日韩一级黄| 91视频一区二区三区 | 懂色视频在线观看 | 刘亦菲毛片一区二区三区 | 免费www xxx| 亚洲你懂的 | 欧美三日本三级少妇三级99观看视频 | www国产精品内射老熟女 | www.av在线| 亚洲黄色片网站 | 一级女性全黄久久生活片免费 | 毛片自拍| 樱花草av | 黄视频网站在线看 | 欧美乱妇狂野欧美视频 | 自慰无码一区二区三区 | 四虎影视库| 久草久操| 欧美一级二级在线观看 | 国产操比视频 | 荷兰女人裸体性做爰 | 亚洲精品在 | 九九色在线 | 黑人操bb| 午夜有码 | 男人的天堂视频在线观看 | 欧美啪啪网|