3-7-LVS實現企業負載均衡高級應用配置實戰2

健康邏輯:
網絡層檢測:能不能ping通,有可能有偏差,服務不知道在不在線
傳輸層檢測:80或443端口,tcp ping 或udp ping,可是不知道服務可用不可用(頁面資源被刪)
更向上一層,應用層檢測資源,狀態碼必須是200,內容必須包含我檢測的關鍵字,可是會記錄日誌,會干擾
作哪一層的檢測,本身決定,並且檢測不是一次有問題就認爲有問題,(這叫作軟狀態)連續3次之後就轉換爲硬狀態(本身設置)或者10次之內有多少次有問題,轉換硬狀態html

注意:腳本的執行效率不好,由於腳本不是專門的編程語言,它的實現是調用系統命令,每執行一個命令就啓用一個進程,因此對時間要求較嚴格(防止一個時鐘週期過去,命令沒有執行完成)
ldirectord:是爲了輔助lvs對後端RS進行健康檢測的,而且做爲守護進程來實現週期檢測nginx

有兩個站點是用來搜索rpm包的:rpmfind.net和pkgs.org
視頻中的課件,接上一節課編程

考慮:
    (1)Director不可用,整個系統將不可用;SPoF
        解決方案:高可用
            keepalived
            heartbeat/corosync
    (2)某RS不可用時,Director依然會調度請求至此RS;
        解決方案:對各RS的健康狀態作檢查,失敗時禁用,成功時啓用;
            keepalived---能夠高可用,也能夠健康檢測
            ldirectord---只能健康檢測,並且增刪操做是直接調用內核的api不須要ipvsadm命令
        檢測方式:
        (a)網絡層檢測;
        (b)傳輸層檢測,端口探測;
        (c)應用層檢測,請求某關鍵資源;---不一樣服務檢測機制不同

        ok-->failure
        failure-->ok

ldirectord:
配置示例:
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=5
real=172.16.0.7:80 gate 2
real=172.16.0.8:80 gate 1
fallback=127.0.0.1:80 gate
service=http
scheduler=wr
checktype=negotiate
checkport=80
request="index.html"
receive="CentOS"vim

補充:共享存儲
    NAS:Network Attached Storage
        nfs/cifs
        文件系統解耦
    SAN:Storage Area Network
        "塊"接口

ldirectord須要本身安裝,去rpmfind.net或者pkgs.org站點搜索
yum install -y ldirectord---有可能本機沒有,須要本身下載
rpm -ql ldirectord能夠查看安裝這個命令後修改的文件
less 能夠查看腳本中默認的配置文件位置(視頻中說能夠本身指定位置)
若是不指定配置文件,默認配置文件放在/etc/ha.d/conf/下
less /etc/init.d/ldirectord---讀取一下腳本中的配置文件地址/etc/ha.d/ldirectord.cf
默認是沒有配置文件的,可是能夠從rpm -ql命令中看到有一個配置模板,複製到腳本中指定的位置而後編輯
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/---複製模板
vim ldirectord.cf---編輯配置文件後端

下面講配置文件
global directives---全局配置#logfile="local0"---由rsyslog來收集日誌
#emailalert="admin@x.y.z"---出現問題給誰發郵件
br/>checktimeout=3---超時時長
checkinterval=1---每隔多長時間檢測一次
#fallback=127.0.0.1:80---若是rs全掛了,會由這個主機提供服務
#fallback6=[::1]:80
autoreload=yes---若是配置文件發生改變,會自動加載
logfile="/var/log/ldirectord.log"---本身指定日誌地址
#logfile="local0"---由rsyslog來收集日誌
#emailalert="admin@x.y.z"---出現問題給誰發郵件
#emailalertfreq=3600---若是還沒修復多長時間重複發
#emailalertstatus=all---什麼狀態發郵件
quiescent=no---不要工做在靜默模式api

配置文件中一個virtual就表明一個虛擬主機
#Sample for an http virtual service
virtual=172.16.0.99:80---vip和端口
real=172.16.0.7:80 gate---rip和端口,gate表示-g dr類型
real=172.16.0.8:80 gate
fallback=127.0.0.1:80 gate
service=http---指明應用層是什麼協議
scheduler=rr
#persistent=600---要不要作持久鏈接
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80---有可能和上邊的port不一致,由於有可能專門有一臺虛擬主機用來接收檢測,不然會產生大量日誌信息
request="test1.html"---請求哪一個頁面
#receive="Test Page"---指望請求頁面中包含什麼
#virtualhost=www.x.y.z---指定向哪一個虛擬主機發請求服務器

下邊不是講解配置文件了,而是操做步驟
在Directory:172.16.0.6上
yum install -y nginx---安裝nginx服務,就是爲了提供一個say sorry的服務
mkdir /data/nginx/html -pv
vim /data/nginx/html/inde.html---建立sorry主頁
<h1>Maintanance Time</h1>---例行維護時間網絡

vim /etc/nginx/nginx.conf---定義一個虛擬主機,下邊的server配置沒有記錄徹底,視頻中用的是nginx提供的默認虛擬主機,只是把root改了
server {
listen 80 default_server;
servername ;
root /data/nginx/html;
}less

nginx -t---檢查語法錯誤
systemctl start nginx.service
ss -tnl---查看80端口已經啓動起來了curl

ipvsadm -ln---查看一下規則
ipvsadm -C---把本身的ipvsadm規則所有刪除
ifconfig eno16777736:0 172.16.0.99 netmask 255.255.255.255 broadcast 172.16.0.00 up---添加vip
service ldirectord start---啓動ldirectord服務
ipvsadm -ln---查看有沒有加進來,sorry server加進來了,其餘rs檢測失敗了
curl http://172.16.0.99
<h1>Maintanance Time</h1>---會看到本身定義的sorry server網頁
後端服務器RS啓用之後,執行curl http://172.16.0.99/test1.html是能夠訪問到的


上邊講的是定義單一服務,下邊講定義防火牆標記的集羣服務。配置文件:#Sample configuration for a fwmark based service For an explanation of#fwmark see the ipvsadm(8) man pagevirtual=3real=172.16.0.7 gate---由於是防火牆標記,因此不要加端口real=172.16.0.8 gatefallback=127.0.0.1:80 gateservice=http---指明應用層是什麼協議scheduler=rr#persistent=600---要不要作持久鏈接#netmask=255.255.255.255protocol=fwm---協議是防火牆標記checktype=negotiatecheckport=80---有可能和上邊的port不一致,由於有可能專門有一臺虛擬主機用來接收檢測,不然會產生大量日誌信息request="test1.html"---請求哪一個頁面#receive="Test Page"---指望請求頁面中包含什麼#virtualhost=www.x.y.z---指定向哪一個虛擬主機發請求而後重啓服務service ldirectord restartipvsadm -ln---能夠看到生成了新規則(防火牆標記爲3的新規則)後邊講發佈,更新服務,凌晨發佈,先下線一部分,用腳本發佈並保留老的服務(只是一個連接,方便替換)

相關文章
相關標籤/搜索