溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

haproxy+keepalived(主從模式)實現高可用環境的簡單配置

發布時間:2020-06-22 15:30:48 來源:網絡 閱讀:1793 作者:Mr_sheng 欄目:建站服務器

一、HAProxy簡介

? ?代理的作用:web緩存(加速)、反向代理、內容路由(根據流量及內容類型等將請求轉發至特定服務器)、轉碼器(將后端服務器的內容壓縮后傳輸給client端)。
緩存的作用:減少冗余內容傳輸;節省帶寬、緩解網絡瓶頸;降低了對原始服務器的請求壓力,降低了傳輸延遲。
??? HAProxy是一種免費的、非??焖偾铱煽康慕鉀Q方案,它提供了高可用性、負載平衡和對TCP和基于http的應用程序的代理。它特別適用于非常高的流量網站,并為世界上訪問量最大的網站提供了強大的力量。多年來,它已經成為事實上的標準的opensource負載平衡器,現在隨大多數主流Linux發行版本一起發布,
? ? 并且經常在云平臺上默認部署。
?? ?HAProxy:只是http協議的反向代理,不提供緩存功能。????
二、HAProxy測試環境搭建
1、簡單架構圖

haproxy+keepalived(主從模式)實現高可用環境的簡單配置

2、測試環境(說明):
HAProxy:192.168.16.10
web1:? ?192.168.16.11
web2:? ?192.168.16.12

操作系統:CentOS Linux release 7.3.1611 (Core)

iptables關閉和selinux為disabled


3、HAProxy服務器安裝haproxy
通過yum安裝Haproxy:

[root@sheng1?haproxy]#?yum?-y?install?haproxy

查看Haproxy版本

[root@sheng1?haproxy]#?haproxy?-v
HA-Proxy?version?1.5.18?2016/05/10
Copyright?2000-2016?Willy?Tarreau?<willy@haproxy.org>


4、web1和web2安裝httpd

web服務器1:192.168.16.11
Web服務器2:192.168.16.11

yum -y install httpd

echo "1111111" > /var/www/html/index.html
systemctl start httpd


echo "2222222" > /var/www/html/index.html
systemctl start httpd


然后systemctl start httpd.service


查看和配置haproxy配置文件
cat?/etc/haproxy/haproxy.cfg?|?egrep?-v?'(#|^$)'


5、配置HAProxy
vim /etc/haproxy/haproxy.cfg

[root@sheng1 haproxy]# pwd

/etc/haproxy

修改haproxy.cfg的配置如下:

global???????????????????#全局配置
????log????127.0.0.1?local2????#日志輸出配置
????chroot??/var/lib/haproxy?????#haproxy工作目錄
????pidfile??/var/run/haproxy.pid???#haproxy的pid目錄
????maxconn??4000???????????#最大連接數(默認配置)
????user????haproxy?????????#運行haproxy用戶
????group???haproxy?????????#haproxy所屬組
????daemon???????????????#后臺啟動
????stats?socket?/var/lib/haproxy/stats??#這個不知道,后續補充
defaults??????????????????????????????????#默認配置
????mode???http????????????#默認模式mod{tcp|http|health}
????log???global??????????#日志系統與global段相同
????option??httplog??????????#日志類別采用httplog
????option??dontlognull??????????#不記錄健康檢查日志
????option??http-server-close?????#每次請求完畢后主動關閉http通道
????option??forwardfor??except?127.0.0.0/8??#后端服務器需要獲得客戶端真實ip需要配置的參數
????option??redispatch???????????#當請求的服務器掛掉之后強行切換到健康的服務器
????retries?3??????????????#3次連接服務器失敗后確定服務器不可用
????timeout?http-request?10s????#默認http請求超時時間(可優化)
????timeout?queue?????1m????#默認隊列超時時間(可優化)
????timeout?connect????10s????#默認連接超時時間(可優化)
????timeout?client????1m????#默認客戶端超時時間(可優化)
????timeout?server????1m????#默認服務器超時時間(可優化)
????timeout?http-keep-alive?10s??#默認持久連接超時時間(可優化)
????timeout?check??????10s??#默認心跳檢測超時時間(可優化)
????maxconn?????????3000??#最大連接數,不要超過全局配置最大連接數
listen?stats_auth????????????#監控頁面及監聽端口混合配置,做的有點差,僅做參考
????bind?192.168.16.10:8000??????#綁定監控頁面監聽端口
????stats?uri?/status???????#haproxy監控頁面
????stats?auth?admin:westos????#配置監控頁面賬號密碼登錄
????stats?refresh?5s????????#監控頁面自動刷新時間
????stats?hide-version???????#隱藏監控頁面haproxy版本號,保障安全
????listen?www.jzz.nginx?*:8088??#監聽的實例名稱、地址和端口,可配置多個
????server?web1?192.168.16.11:80?cookie?app1inst1?check?inter?2000?rise?2?fall?5????????
????#后端web服務器ip及其他配置
????listen?www.jzztest.org?*:8089?#監聽的實例名稱、地址和端口,可配置多個
????server?web2?192.168.16.12:80?cookie?app1inst2?check?inter?2000?rise?2?fall?5????????
????#后端web服務器ip及其他配置
????#??注意參數解釋:inter?2000?心跳檢測時間;rise?2?三次連接成功,表示服務器正常;
????#??fall?5?三次連接失敗,表示服務器異常;?weight?1?權重設置
????listen?localhost.localdomain?*:80
????balance?roundrobin??????
????#負載均衡算法(有roundrobin、static-rr、leastconn、source、url、url_param、hdr、rdp_cookie)
frontend??main?*:5000???????????#frontend前端配置,為haproxy安裝時就有,能力有限,不再解釋
????acl?url_static???????path_beg???????-i?/static?/images?/javascript?/stylesheets
????acl?url_static???????path_end???????-i?.jpg?.gif?.png?.css?.js
????use_backend?static??????????if?url_static
????default_backend?????????????app
backend?static?????????????#backend前端配置,為haproxy安裝時就有,能力有限,不再解釋
????balance?????roundrobin
????server??????static?127.0.0.1:4331?check
backend?app???????????????#backend前端配置,為haproxy安裝時就有,能力有限,不再解釋
????balance?????roundrobin
????server??app1?127.0.0.1:5001?check
????server??app2?127.0.0.1:5002?check
????server??app3?127.0.0.1:5003?check
????server??app4?127.0.0.1:5004?check


rsyslog 系統日志轉發

編輯配置文件/etc/rsyslog.conf
加入如下內容:

$ModLoad?imudp
$UDPServerRun?514
local2.*????/var/log/haproxy.log


vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r -m 0"???????????#接收遠程服務器日志




重啟rsyslog進程
systemctl restart rsyslog


6. 啟動haproxy服務

systemctl?start?haproxy


三、測試環境是否健康
通過瀏覽器訪問HAProxy

http://192.168.16.10:8000/status

訪問haproxy監控頁面端口下的/status,為了安全起見,第一次登陸需要賬號密碼,賬號密碼就是配置文件里設置的

haproxy+keepalived(主從模式)實現高可用環境的簡單配置

進入監控頁面,在這里可以看到我們的配置

haproxy+keepalived(主從模式)實現高可用環境的簡單配置

訪問haproxy服務器ip的8088端口,可以發現跳轉到了Web服務器1

haproxy+keepalived(主從模式)實現高可用環境的簡單配置

訪問haproxy服務器ip的8089端口,可以發現跳轉到了Web服務器2

haproxy+keepalived(主從模式)實現高可用環境的簡單配置


也可以設置域名訪問到不同web服務器,但要在本地host綁定域名ip對應關系。
haproxy服務器配置成功


三、haproxy+keepalived簡單配置
前提:
1.兩臺haproxy服務器,配置基本一樣,可參考上面haproxy的配置,后端web服務器一樣
2.兩臺haproxy服務器器上都已安裝完成keepalived,安裝教程參考我的lvs+keepalived配置中的keepalived的安裝。
環境:

haproxy服務器1:192.168.16.9
haproxy服務器2:192.168.16.10
haproxy代理web服務器1:192.168.16.11(hostname:www.jzz.nginx?默認頁面:1111111)
haproxy代理Web服務器2:192.168.16.12(hostname:www.jzztest.org?默認頁面:2222222)
keepalived主服務器:192.168.174.9
keepalived從服務器:192.168.174.10
VIP:192.168.16.8
操作系統:centos7.3???iptables關閉和selinux為disabled


兩臺keepalived主機的設置

? ? ? 1、配置HAProxy:新加進來的192.168.16.9也要和之前的haproxy做同樣的配置。


 ? 2、?haproxy服務器兩臺機均安裝keepalived

#安裝依賴文件與keepalive

# yum install -y openssl openssl-devel keepalived


keepalived主服務器配置文件

[root@sheng0?~]#?cat?/etc/keepalived/keepalived.conf
!?Configuration?File?for?keepalived
global_defs?{
????router_id?LVS_R1
}
vrrp_strict?chk_http_port?{
?????????script?"/opt/script/check_haproxy.sh"
?????????interval?2
?????????weight???2
}
vrrp_instance?VI_1?{
????state?MASTER
??interface?ens33
??virtual_router_id?88
??priority?100
??advert_int?1
??authentication?{
?????auth_type?PASS
?????auth_pass?1111
??}
??virtual_ipaddress?{
?????192.168.16.8
??}
??track_script?{
?????check_haproxy
??}
}


keepalived從服務器配置文件

[root@sheng1?/]#?cat?/etc/keepalived/keepalived.conf
!?Configuration?File?for?keepalived
global_defs?{
????router_id?LVS_R2
}
vrrp_strict?chk_http_port?{???????????#?Haproxy監控腳本
???????script?"/opt/script/check_haproxy.sh"
???????interval?2
???????weight?2
}
vrrp_instance?VI_1?{
????state?BACKUP
??interface?ens33
??virtual_router_id?88
??priority?80
??advert_int?1
??authentication?{
??????auth_type?PASS
???????auth_pass?1111
??}
??virtual_ipaddress?{
??????192.168.16.8
??}
??track_script?{
??????check_haproxy
??}
}


keepalived主從配置文件依舊只有很小差別,在這里只有priority和router_id不同,在這里用到了一個檢測haproxy存活性的腳本,主從配置文件都有且相同

[root@sheng1?script]#?cat?check_haproxy.sh?
#!/bin/bash
if?[?$(ps?-C?haproxy?--no-header?|?wc?-l)?-eq?0?];then
??????/etc/init.d/haproxy?start
fi
sleep?2
if?[?$(ps?-C?haproxy?--no-header?|?wc?-l)?-eq?0?];then
??????/etc/init.d/haproxy?stop
fi








*******************************************************************************************************************

附錄:

haproxy配置文件:

global
????log????????127.0.0.1?local2
????chroot??????/var/lib/haproxy
????pidfile?????/var/run/haproxy.pid
????maxconn?????4000
????user???????haproxy
????group???????haproxy
????daemon
????stats?socket?/var/lib/haproxy/stats
defaults
????mode????????????????http
????log????????????????global
????option??????????????httplog
????option??????????????dontlognull
????option?http-server-close
????option?forwardfor???????except?127.0.0.0/8
????option??????????????redispatch
????retries??????????????3
????timeout?http-request??????10s
????timeout?queue??????????1m
????timeout?connect?????????10s
????timeout?client?????????1m
????timeout?server?????????1m
????timeout?http-keep-alive?10s
????timeout?check??????????10s
????maxconn??????????????3000
listen?stats_auth
????bind?192.168.16.10:8000
????stats?uri?/status
????stats?auth?admin:westos
????stats?refresh?5s
????stats?hide-version
????listen?www.jzz.nginx?*:8088
????server?web1?192.168.16.11:80?cookie?app1inst1?check?inter?2000?rise?2?fall?5
????listen?www.jzztest.org?*:8089
????server?web2?192.168.16.12:80?cookie?app1inst2?check?inter?2000?rise?2?fall?5
????listen?localhost.localdomain?*:80
????balance?roundrobin
frontend??main?*:5000
????acl?url_static???????path_beg???????-i?/static?/images?/javascript?/stylesheets
????acl?url_static???????path_end???????-i?.jpg?.gif?.png?.css?.js
????use_backend?static??????????if?url_static
????default_backend?????????????app
backend?static
????balance?????roundrobin
????server??????static?127.0.0.1:4331?check
backend?app
????balance?????roundrobin
????server??app1?127.0.0.1:5001?check
????server??app2?127.0.0.1:5002?check
????server??app3?127.0.0.1:5003?check
????server??app4?127.0.0.1:5004?check



推廣:haproxy+keepalived(主主模式)實現高可用環境的簡單配置

https://blog.51cto.com/sf1314/2384572?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女