軟件:haproxy---主要是做負(fù)載均衡的7層,也可以做4層負(fù)載均衡
HAPROXY配置文件中分五大部分:
- global:全局參數(shù)配置,用來(lái)控制Haproxy啟動(dòng)前的一些進(jìn)程及系統(tǒng)設(shè)置。
- defaults:配置一些默認(rèn)的參數(shù),可以被frontend,- backend,listen段使用
- frontend:匹配接收客戶所請(qǐng)求的域名,uri等,并針對(duì)匹配做不同的請(qǐng)求處理;
- backend:定義后端服務(wù)器集群,以及對(duì)后端服務(wù)器集群的一些權(quán)重、隊(duì)列、連接數(shù)等選項(xiàng)的設(shè)置,類似于nginx中的upstream模塊,類似于LVS中的real server節(jié)點(diǎn);
- listen:可以理解為frontend和backend的組合體。
-
Haproxy配置文件的配置方法主要有兩種,一種是由前端(frontend)和后端(backend)配置塊組成,前端和后端都可以有多個(gè)。第二種方法是只有一個(gè)listen配置塊來(lái)同時(shí)實(shí)現(xiàn)前端和后端。最常用也是推薦的方法為第一種,即frontend和backend的模式。
global
log 127.0.0.1 local2 #日志服務(wù)器
pidfile /var/run/haproxy.pid #pid文件(進(jìn)程)
maxconn 4000 #最大連接數(shù)
user haproxy #用戶
group haproxy #組
daemon #守護(hù)進(jìn)程方式后臺(tái)運(yùn)行
nbproc 1 #工作進(jìn)程數(shù)量 cpu內(nèi)核是幾就寫幾
defaults #提供默認(rèn)參數(shù)
mode http #工作模式 http ,tcp 是 4 層,http是 7 層
log global
option redispatch #服務(wù)不可用后重定向到其他健康服務(wù)器
retries 3 #健康檢查。3次連接失敗就認(rèn)為服務(wù)器不可用,主要通過(guò)后面的check檢查
maxconn 4000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen stats ##使用瀏覽器訪問(wèn)http://192.168.246.169/haproxy,可以看到服務(wù)器狀態(tài)(web界面顯示haproxy狀態(tài))
bind *:81 #自定義端口
stats enable
stats uri /haproxy #自定義URL開頭
stats auth qianfeng:123 #用戶認(rèn)證,客戶端使用elinks瀏覽器的時(shí)候不生效
frontend web
mode http #七層模式
bind *:80
option httplog #日志類別 http 日志格式
acl html url_reg -i \.html$ #1.訪問(wèn)控制列表名稱html。規(guī)則要求訪問(wèn)以html結(jié)尾的url(可選) #acl訪問(wèn)控制,-i忽略大小寫
use_backend xxx if html #如果滿足acl html規(guī)則,則推送給后端服務(wù)器xxx
default_backend httpservers ¥設(shè)置默認(rèn)后端標(biāo)簽
backend httpservers #名字要與上面的名字必須一樣
balance roundrobin #算法:輪詢
server http1 192.168.246.162:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2
server http2 192.168.246.163:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2
listen mysql
bind *:3306
mode tcp #四層模式
balance roundrobin #算法:輪詢
server mysql1 192.168.246.163:3306 weight 1 check inter 1s rise 2 fall 2
server mysql2 192.168.246.162:3306 weight 1 check inter 1s rise 2 fall 2
#inter表示健康檢查的間隔,單位為毫秒 可以用1s等,fall代表健康檢查失敗2回后放棄檢查。rise代表連續(xù)健康檢查成功2此后將認(rèn)為服務(wù)器可用。默認(rèn)的,haproxy認(rèn)為服務(wù)時(shí)永遠(yuǎn)可用的,除非加上check讓haproxy確認(rèn)服務(wù)是否真的可用。
keepalived實(shí)現(xiàn)高可用+擴(kuò)展對(duì)調(diào)度器Haproxy健康檢查
- 思路:兩臺(tái)機(jī)器都做腳本
- 讓Keepalived以一定時(shí)間間隔執(zhí)行一個(gè)外部腳本(check_haproxy_status.sh),腳本的功能是當(dāng)Haproxy失敗,則關(guān)閉本機(jī)的Keepalived
[root@ha-proxy ~]# cat /etc/keepalived/check_haproxy_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null
if [ $? -ne 0 ];then
# /etc/init.d/keepalived stop
systemctl stop keepalived
fi
#賦予權(quán)限
[root@ha-proxy ~]# chmod a+x /etc/keepalived/check_haproxy_status.sh
Keepalived配置
[root@ha-proxy keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
router_id director1
}
#聲明腳本位置
vrrp_script check_haproxy {
script "/etc/keepalived/check_haproxy_status.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.246.17/24
}
track_script {
check_haproxy
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。