Haproxy + keepalived 負載均衡日誌定製

定製輸出日誌的好處

用戶全部請求都經過負載均衡器,所以在此處收集日誌,比在各後端真實服務器收集日誌再彙總要有效得多。後端

工做目標

 記錄用戶訪問日誌:haproxy產生。
 記錄keepalived日誌:keepalived啓動、運行狀態,用於排錯。瀏覽器

整體規劃

  •  使用獨立的分區存儲日誌。因keepalived日誌內容較少,可與haproxy日誌共用存儲空間。好比個人項目裏,用/data/logs做爲日誌的存儲路徑(/data最好用獨立的分區或者磁盤),haproxy日誌名稱haproxy.log,keepalived日誌名稱keepalived.log。若果對日誌保留又要求,須要歸檔及輪轉。
  •  系統日誌與haproxy日誌分離,不重複記錄--配置不佳的方案,會致使系統日誌與haproxy日誌重複記錄,佔用大量的磁盤空間,一旦與系統相關的分區被填滿,整個負載均衡將失效。

定製日誌所涉及的組件

 系統日誌服務rsyslog。
 負載均衡haproxy。
 高可用keepalived。服務器

技術實現

從負載均衡器裏選擇備機先作配置,這樣作的好處是不會對現有業務形成影響。接着建立好存儲目錄/data/logs,確保此目錄能建立及寫入文件。負載均衡

  •  系統日誌配置:針對/etc/rsyslog.conf文件進行修改,一個完整的內容以下(去掉了註釋行及空行):
    $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
    $ModLoad imjournal # provides access to the systemd journal
    $ModLoad imklog # reads kernel messages (the same are read from journald)
    $ModLoad immark  # provides --MARK-- message capability
    $ModLoad imudp
    $UDPServerRun 514
    $WorkDirectory /var/lib/rsyslog
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    $IncludeConfig /etc/rsyslog.d/*.conf
    $OmitLocalLogging on
    $IMJournalStateFile imjournal.state
    mail.none;authpriv.none;cron.none                /var/log/messages
    authpriv.*                                              /var/log/secure
    mail.*                                                  -/var/log/maillog
    cron.*                                                  /var/log/cron
    *.emerg                                                 :omusrmsg:*
    uucp,news.crit                                          /var/log/spooler
    local7.*                                                /var/log/boot.log
    local3.* /data/logs/haproxy.log
    local4.* /data/logs/keepalived.log

重要說明
mail.none;authpriv.none;cron.none /var/log/messages 這一行刪掉了字段「*.info;」,若是不刪除,會在/var/log/messages文件及/data/logs/haproxy.log重複記錄訪問日誌。ide

最後兩行爲手動添加進去的,特別是最後一行「local4.* /data/logs/keepalived.log」,是與keepalived日誌要求相匹配,不然不能起做用。3d

  •  配置keepalived:無需修改配置文件keepalived.conf,只須要在啓動服務時,加入選項「-S 4」就行。那麼,我是怎樣知道加這個選項的呢?執行指令keepalived --help,可看到輸出項「-S, --log-facility=[0-7] Set syslog facility to LOG_LOCAL[0-7]」,前邊配置rsyslog時,定義了」local4.」,所以啓動keepalived服務添加的選項爲「-S 4」。Keepalived啓動命令以下.
    /usr/local/keepalived/sbin/keepalived -D -d -S 4
    爲了簡便及通用性(適用於各類
    nix),我把它直接寫到文件/etc/rc.local。
  •  配置haproxy,設定日誌輸出。在主配置文件全局設定代碼塊加入一行「log 127.0.0.1 local3」。rest

  •  啓動相關服務:
     啓動rsyslog:service rsyslog restart;
     啓動haproxy:又有keepalived處於運行狀態,只要用指令 killall -9 haproxy殺掉進程,haproxy就會自動被keepalived重啓。
     啓動keepalived:/usr/local/keepalived/sbin/keepalived -D -d -S 4

驗證配置

切換到日誌存儲目錄/data/logs/,查看是否有兩個日誌文件生成。
Haproxy + keepalived 負載均衡日誌定製
手動綁定負載均衡器的物理ip地址,而後用瀏覽器訪問該負載均衡器設定的某個主機名,看日誌文件/data/logs/haproxy.log是否產生新的記錄行。若是真如所預期,則進行下一步操做。
Haproxy + keepalived 負載均衡日誌定製
重啓或臨時關閉主負載均衡器系統,使全部請求漂移到設定好keepalived及haproxy日誌的系統上來,用指令 tail –f /data/logs/haproxy.log 查看日誌生成狀況,若是滾屏猶如電機飛轉,應接不暇,則大功告成。日誌

最後,再以一樣的方式給主負載均衡設定好日誌。code

相關文章
相關標籤/搜索