1、haproxy介紹html
HAProxy是一個使用C語言編寫的自由及開放源代碼軟件[1],其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。
HAProxy特別適用於那些負載特大的web站點,這些站點一般又須要會話保持或七層處理。HAProxy運行在當前的硬件上,徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中, 同時能夠保護你的web服務器不被暴露到網絡上。linux
haproxy 的配置文件由兩部分組成:全局設定和對代理的設定,共分爲五段:global,defaults,frontend,backend,listen。web
2、安裝haproxyredis
去haproxy下載源碼包上傳到服務器或者wget算法
而後解壓vim
[root@mymaster yasuobao]# tar -zxvf haproxy-2.0.1.tar.gz [root@mymaster yasuobao]# cd haproxy-2.0.1
編譯[root@mymaster yasuobao]# make TARGET=linux31
後端
這裏TARGET參數視centos版本而定,uname -r查看系統版本centos6.X須要使用TARGET=linux26 centos7.x使用linux31
安裝centos
[root@mymaster yasuobao]# make install PREFIX=/usr/local/haproxy
瀏覽器
建立conf目錄[root@mymaster yasuobao]# mkdir /usr/local/haproxy/conf
安全
複製文件
[root@mymaster yasuobao]# cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg [root@mymaster yasuobao]# cd /usr/local/haproxy/conf
編輯配置文件
[root@mymaster conf]# vim haproxy.cfg
字段含義以下
global # 全局參數的設置 log 127.0.0.1 local0 info # log語法:log <address_1>[max_level_1] # 全局的日誌配置,使用log關鍵字,指定使用127.0.0.1上的syslog服務中的local0日誌設備,記錄日誌等級爲info的日誌 maxconn 4096 #最大鏈接數 user nobody #所屬用戶 group nobody #所屬組 daemon #以守護進程方式運行haproxy nbproc 1 #指定啓動的haproxy進程的個數,只能用於守護進程模式的haproxy,默認爲1 pidfile /usr/local/haproxy/logs/haproxy.pid #指定pid文件生成目錄 defaults mode http #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK retries 3 # 定義鏈接後端服務器的失敗重連次數,鏈接失敗次數超過此值後將會將對應後端 timeout connect 10s #鏈接超時 timeout client 20s #客戶端超時 timeout server 30s #服務器端超時 timeout check 5s #檢測超時 frontend www bind *:80 #監聽地址爲80 mode http option httplog #啓用記錄HTTP請求、會話狀態和計時器的功能 option forwardfor #容許在發往服務器的請求首部中插入「X-Forwarded-For」首部。 option httpclose #每次請求完畢後主動關閉http通道 log global #啓用事件和流量日誌 default_backend htmpool #默認後端 backend htmpool mode http option redispatch # 當使用了cookie時,haproxy將會將其請求的後端服務器的serverID插入到cookie中,以保證會話的SESSION持久性;而此時,若是後端的服 務器宕掉了, 可是客戶端的cookie是不會刷新的,若是設置此參數,將會將客戶的請求強制定向到另一個後端server上,以保證服務的正常。 option abortonclose #丟棄因爲客戶端等待時間過長而關閉鏈接但仍在haproxy等待隊列中的請求 balance static-rr #負載均衡算法(#banlance roundrobin 輪詢,balance source 保存session值,支持static-rr,leastconn,first,uri等參數) cookie SERVERID #容許插入serverid到cookie中,serverid後面能夠定義 option httpchk GET /index.html server myslave02 172.18.74.87:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 #cookie 1表示serverid 爲1,check inter 1500 是檢測心跳頻率,rise 2是2次正確認爲服務器可用,fall 3是3次失敗認爲服務器不可用,weight表明權重 server myslave 172.18.74.119:80 cookie 1 weight 3 check inter 2000 rise 2 fall 3 listen admin_stats bind 0.0.0.0:9188 #監聽端口 mode http log 127.0.0.1 local0 err #全局的日誌配置,local0 是日誌設備,err 表示日誌級別。其中日誌級別有err、 warning、info、debug 四種可選。這個配置表示使用 127.0.0.1 上的 rsyslog 服務中的local0 日誌設備,記錄日誌等級爲err。 stats refresh 30s #統計頁面自動刷新時間 stats uri /haproxy-status #統計頁面url stats realm welcome login\ Haproxy #統計頁面密碼框上提示文本 stats auth admin:admin123 #統計頁面用戶名和密碼設置 stats hide-version #隱藏統計頁面上HAProxy的版本信息 stats admin if TRUE #經過設置此選項,能夠在監控頁面上手工啓用或禁用後端真實服務器,僅在haproxy1.4.9 之後版本有效
啓動haproxy
[root@mymaster conf]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
而後在後端服務器編輯index.html
[root@myslave html]# cat index.html this is 119 html [root@myslave02 html]# cat index.html this is 87 html
curl檢查haproxy是否正常工做
瀏覽器訪問172.18.74.59:9188/haproxy-status,用戶名admin,密碼admin123,登錄。能夠看到haproxy的工做狀態