pacemaker + corosync 實現 haproxy 的高可用負載均衡
1. HAProxy簡介
- HAProxy 是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟體,支援虛擬主機,它是免費、快速並且可靠的一種解決方案。 HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy執行在時下的硬體上,完全可以支援數以萬計的 併發連線。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web伺服器不被暴露到網路上。
- HAProxy 實現了一種事件驅動、單一程序模型,此模型支援非常大的併發連線數。多程序或多執行緒模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千併發連線。事件驅動模型因為在有更好的資源和時間管理的使用者端(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充套件性較差。這就是為什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。
- HAProxy 支援連線拒絕 : 因為維護一個連線的開啟的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限制它們的連線開啟從而限制它們的危害。 這個已經為一個陷於小型DDoS攻擊的網站開發了而且已經拯救了很多站點,這個優點也是其它負載均衡器沒有的。
2. haproxy 配置
拓撲:
haproxy 伺服器 server2ip:172.25.21.2,server3:172.25.21.4
httpd 伺服器 Server7,server13
1. 進行haprox 的安裝
換取haproxy 原始碼包,並進行安裝
- 將原碼包編譯成rpm包
原碼包中需要包含 .spec 檔案,其中寫入了原碼編譯成rpm包的規則
find -name *.spec 通過此命令來查詢是否存在
然後將原碼包編譯成 rpm 包
[root@server3 haproxy-1.6.11]# rpmbuild -tb haproxy-1.6.11.tar.gz
可看到rpm 包被建立的為位置
然後執行 rpm -ivh 加安裝包 進行安裝
可在其啟動指令碼中檢視配置檔案,然後在原碼包中獲取
進入原碼包獲取配置檔案
啟動指令碼
原始碼包,配置檔案模版
/mnt/haproxy-1.6.11/examples
2. 配置haproxy
生成haproxy配置檔案
[[email protected] examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
[[email protected] ~]vim /etc/haproxy/haproxy.cfg
對配置檔案進行編輯
內容如下:
global
maxconn 10000 # 最大連線數
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200 # 使用者ID 如果沒有,需要手動新增使用者
gid 200
chroot /var/empty
# 監牢,保護機制,讓訪問的使用者在此目錄內,無法對其他目錄進行操作
daemon
defaults # 定義預設配置
mode http # 負載均衡軟體,7層協議
log global
option httplog
option dontlognull
monitor-uri /monitoruri # 本機狀態的健康檢查
maxconn 8000 # 最大連機數,會覆蓋gloab 中的設定
timeout client 30s
stats uri /admin/stats uri 狀態,全域性狀態,包含本機與後端服務
option prefer-last-server
retries 2
option redispatch
timeout connect 5s
timeout server 5s
# The public 'www' address in the DMZ
frontend public # 前端配置
bind *:80 name clear # 監聽本機所有IP
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
default_backend static # 預設後端的名稱
# The static backend backend for 'Host: img', /img and /css.
backend static # 後端
mode http # http 協議
balance roundrobin # 演算法rr
server statsrv1 172.25.21.7:80 check inter 1000 # 後端伺服器
server statsrv2 172.25.21.13:80 check inter 1000
編輯完成,重啟服務:
[root@server2 ~]# /etc/init.d/haproxy restart
Shutting down haproxy: [ OK ]
Starting haproxy: [ OK ]
在瀏覽取中檢視狀態
輸入 172.25.21.2/monitoruri # 本機狀態的健康檢查
輸入 172.25.21.2/adminstats # monitoruri # 本機狀態的健康檢查
開啟後端伺服器,進行負載均衡的檢視
[root@server7 ~]# /etc/init.d/httpd start
[root@server13 ~]# /etc/init.d/httpd start
瀏覽器中檢視
3 設定日誌記錄
在配置檔案中可看到日誌記錄規定
log 127.0.0.1 local0
Local0 為日誌記錄
編輯/etc/rsyslog.conf 進行設定
[root@server2 log]# vim /etc/rsyslog.conf
編輯如下:
允許UDP 日誌接收
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages
不將日誌傳送到/var/log/messages
local0.* /var/log/haproxy.log
# 定義日誌接收點
編輯完成,重啟日誌服務
檢視日誌
4. haproxy動靜分離:
定義多個後端
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
use_backend static2 if { path_end -i .php }
# 如過訪問的頁面以 .php 結尾,則訪問後端 static2
default_backend static1 # 預設訪問的後端 static1
# The static backend backend for 'Host: img', /img and /css.
backend static1 # 後端1
mode http
balance roundrobin
server statsrv1 172.25.21.7:80 check inter 1000
backend static2 # 後端2
mode http
balance roundrobin
server statsrv2 172.25.21.13:80 check inter 1000
編輯如下:
在瀏覽器檢視
預設後端
訪問.php
5. haproxy訪問控制:
在前端定義
編輯配置檔案,進行訪問控制設定
[[email protected] log]# vim /etc/haproxy/haproxy.cfg
# The public 'www' address in the DMZ
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
acl black_lsit src 172.25.21.250
# 訪問控制列表 black_list 為自定義,前後一致即可
http-request deny if black_list
# http-request deny 訪問控制黑名單
errorloc 403 http://172.25.1:8080
# 重定向,將錯誤顯示型別,重新定向到指定頁面
172.25.21.250 主機訪問效果如下:
根據錯誤型別將訪問重定向:
172.25.25.2:8080 為該172.25.21.2主機http 的埠
編輯預設釋出檔案,並重新啟動服務
172.25.21.250 主機訪問效果如下:
編輯配置檔案,進行訪問重定向(crul 命令不支援重定向)
redirect location 重定向,將訪問的頁面重新定向到指定頁面
[[email protected] log]# vim /etc/haproxy/haproxy.cfg
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
# acl black_list src 172.25.21.250
# http-request deny if black_list
# errorloc 403 http://172.25.21.2:8080 # 重定向
acl blacklist src 172.25.21.250
redirect location http://www.nba.com
# 將上述訪問的源地址重定向到 www.nba.com
編輯完成重新載入配置檔案
[root@server2 log]# /etc/init.d/haproxy reload
172.25.21.250 主機訪問效果如下:直接被重新定向到www.nba.com
6. haproxy讀寫分離:
通過haproxy 實現網頁的讀寫分離
編輯 /etc/haproxy/haproxy.cfg
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
編輯內容如下:
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
# acl black_list src 172.25.21.250
# http-request deny if black_list
# errorloc 403 http://172.25.21.2:8080 # 重定向
# acl blacklist src 172.25.21.250
# redirect location http://www.nba.com # 重定向
acl write method POST # 控制表寫,方法為PSOT
acl write method PUT # 控制表寫,方法為PUT
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
use_backend static2 if { path_end -i .php }
use_backend static2 if write # 執行寫的方法時,訪問static2
.........................省略...............................
backend static1
mode http
balance roundrobin
server statsrv1 172.25.21.7:80 check inter 1000
backend static2
mode http
balance roundrobin
server statsrv2 172.25.21.13:80 check inter 1000
編輯完成重啟服務
給haproxy 服務端安裝 php ,來進行對.php的解析
[root@server2 ~]# /etc/init.d/haproxy reload
在後端伺服器進行配置
在172.25.21.7,與172.25.21.13 /var/www/html/載入下載安裝目錄
Upload 目錄,中實現簡單的upload
兩個後端http伺服器都進行此操作
在兩個後端伺服器進行php服務的安裝
然後重啟httpd 服務
為172.25.21.7主機的/var/www/html/images/ 新增圖片
[root@server7 html]# yum install -y php
[root@server7 html]# /etc/init.d/httpd restart
[root@server13 html]# yum install -y php
[root@server13 html]# /etc/init.d/httpd restart
在服務端進行測試:
訪問172.25.21.7/images/中的檔案
訪問haproxy主機
進行上傳操作
進行上傳檔案的選擇
選擇上傳
上傳成功
2. Pacemaker + haproxy 實現高可用叢集
- 基本配置:
給兩個節點安裝 haproxy ,pacemaker,corosync,crmsh,pssh
安裝完成後,進行 corosync 的配置:
編輯主配置檔案:
compatibility: whitetank
totem {
version: 2
secauth: off
threads: 0
interface { # 需要根據你的環境設定以下值
ringnumber: 0
bindnetaddr: 172.25.21.0 # 叢集網段
mcastaddr: 226.94.1.21 # 多播地址,保證與其他叢集伺服器不 同,否則會造成衝突
mcastport: 5405 # 多播埠
ttl: 1
}
}
..................省略.........................
service {
name: pacemaker # 新增服務名稱
ver: 0 #
}
編輯成功,兩節點同時啟動corosync
可通過 crm 命令來進行對配置進行管理
Crm recurce
Crm_verify -VL
首先檢測配置檔案是否異常
這是因為stonith,目前,我們禁用這個特性,然後在 配置STONISH 章節來配置它。這裡要指出,使用STONITH是非常有必要的。關閉這個特性就是告訴叢集:假裝故障的節點已經安全的關機了。一些供應商甚至不允許這個特性被關閉。
我們將 stonith-enabled設定為 false 來關閉STONITH
# crm configure property stonith-enabled=false
# crm_verify -L
設定完這個選項以後,校驗配置檔案就正常了。
進行Fence的安裝
進行fence的安裝
[root@server3 ~]# yum install -y fence-virt-0.2.3-15.el6.x86_64
在真實主機安裝fence 服務,並生成金鑰,傳到兩個節點主機的/etc/cluster下
通過crm configure 進行配置
crm(live)configure# primitive vmfence stonith:fence_xvm params pcmk_host_map="server2:Server2;server3:Server4" op monitor interval=30s
# pcmk_host_map=“節點名+節點所在主機的域名;節點名+節點所在主機域名”
crm(live)configure# property stonith-enabled=ture
# 啟用 stonith
crm(live)configure# commit
# 儲存配置
[root@server2 cluster]# crm configure
crm(live)configure# show
檢視最終配置
在節點處檢視狀態
crm_mon
進行測試fence(高可用測試)
手動讓server2 服務所在機器崩潰
Echo c > /proc/sysrq-trigger 手動讓核心崩潰
Server2 宕機,服務全部移動至server3,fence 重新啟動server2
相關推薦
linux進階之pacemaker+corosync實現haproxy高可用
一、環境介紹 1. 系統環境 rhel6.5 selinux and iptables if disable server1: 172.25.14.1 pacemaker + haproxy node1 server4: 172.25.14.4
Keepalived+Haproxy高可用負載均衡群集
刷新 rfi opened width col vim router 一個 .com 介紹 HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,
keepalived+haproxy 高可用負載均衡叢集
案例 chkconfig NetworkManager off chkconfig iptables off cat /etc/sysconfig/selinux #例行公事四臺都要這樣selinux為disabled狀態。 #web為配置好的狀態 只有一個頁面。
centos部署lvs+keepalived+apache/tomcat實現高效能高可用負載均衡
前言: 常用的負載均衡軟體有lvs、haproxy、nginx,一般lvs和keeplavied一起使用 lvs是實現負載均衡作用的,即將客戶端的需求採用特定的負載均衡演算法分發到後端的web應用伺服器上,keepalived是用來實現高可用的,即保證主lvs宕機後,從lv
基於salt-stack實現的高可用負載均衡 salt-stack模組介紹認識
Salt-satck一鍵部署keepalived;haproxy服務: 角色 server-id 安裝 MASTER Server1 haproxy;keepalived(MASTER) MINION Serve
Nginx + Keepalived實現應用高可用負載均衡功能
監控nginx .tar.gz provides listening 一個 list nginx負載均衡 服務器ip load 說明:此處僅介紹 Keepalived 實現nginx負載均衡器的高可用,關於nginx介紹和負載均衡實現可查看我的另兩篇博文 Nginx負載均衡
pacemaker + corosync 實現 haproxy 的高可用負載均衡
1. HAProxy簡介 HAProxy 是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟體,支援虛擬主機,它是免費、快速並且可靠的一種解決方案。 HAProxy特別適用於那些負載特大的web站點,這些站點通常又
Haproxy + Pacemaker 實現高可用負載均衡(二)
Pacemaker server1 和 server2 均安裝pacemaker 和 corosync server1 和 server2 作相同配置 [root@server1 ~]# yum install -y pacemaker coros
HAProxy+Varnish+LNMP實現高可用負載均衡動靜分離集群部署
else 應用服務器 bash == 開機啟動 多少 heal 啟用 4.0 轉自http://bbs.hfteams.com/forum.php?mod=viewthread&tid=11&extra=page%3D1 HAProxy+Varnish+LN
http高可用+負載均衡 corosync + pacemaker + pcs
http高可用+負載均衡 corosync + pacemaker + pcs openstack pike 部署 目錄彙總 http://www.cnblogs.com/elvi/p/7613861.html #http高可用+負載均衡pacemaker+haproxy #ht
docker下用keepalived+Haproxy實現高可用負載均衡叢集
先記錄下遇到的坑,避免之後忘了; 花時間最多去解決的一個題是:在docker下啟動haproxy服務後在這個docker服務內安裝keepalived無法ping通的問題,雖然最後也是莫名其妙就好了,但是加強了不少對docker的理解和還需深入學習的地方。 為什麼要用
saltstack實現一鍵部署keepalived+haproxy的高可用負載均衡叢集
配置環境 主機名 ip 服務 server1 172.25.1.1 salt-master、salt-minion haproxy、keepalived server2 172.25.1.2 salt-minion
Keepalived+Nginx實現高可用負載均衡集群
連接 靜態 adf -1 rip mail fff hostname dex 一 環境介紹 1.操作系統CentOS Linux release 7.2.1511 (Core) 2.服務keepalived+lvs雙主高可用負載均衡集群及LAMP應用keepalived-1
基於HAProxy+Keepalived高可用負載均衡web服務的搭建
1.2 epo cnblogs oba backup 保持 ica mysql redis 一 原理簡介 1.HAProxyHAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那
LVS+Keepalived實現高可用負載均衡
lvs+keepalived 高可用 負載均衡 用LVS+Keepalived實現高可用負載均衡,簡單來說就是由LVS提供負載均衡,keepalived通過對rs進行健康檢查、對主備機(director)進行故障自動切換,實現高可用。1. LVS NAT模式配置準備三臺服務器,一臺director, 兩
corosync+pacemaker+crm實現drbd高可用
drbd.not configured corosync packmaker crm pcs 系統:Centos 7.2 內核3.10.0-327.el7.x86_64 # 內核需要高於2.6.32Drbd : 192.168.8.111:node1/dev/drdb0 /my
Haproxy + keepalived 高可用負載均衡解決方案
haproxy + keepalived文檔作者:amunlinux文檔版本:Version 1.1修改記錄:2017-04-22系統環境:CentOS 6.8 64 bitIP 信息列表: 名稱 IP -----------------------------------VIP 192.1
[轉] Haproxy、Keepalived雙主高可用負載均衡
配置過程 virtual dev gnu 文本 tpch margin amp queue http://blog.chinaunix.net/uid-25266990-id-3989321.html 在測試了Nginx+Keepalived的負載均衡後,也對Haprox
Keepalived+Haproxy搭建高可用負載均衡
eas 1.5 desc patch ble set 雙機 backend sql global_defs { notification_email { [email protected]/* */ } n
基於corosync和pacemaker+drbd實現mfs高可用
mfs高可用 drbd pacemaker corosync moosefs 基於corosync和pacemaker+drbd實現mfs高可用一、MooseFS簡介1、介紹 MooseFS是一個具備冗余容錯功能的分布式網絡文件系統,它將數據分別存