1. 程式人生 > 其它 >k8s 應用日誌收集方案

k8s 應用日誌收集方案

主從複製架構
主從模式(master/slave),可以實現Redis資料的跨主機備份。
程式端連線到高可用負載的VIP,然後連線到負載伺服器設定的Redis後端realserver,此模式不需要在 程式裡面配 置Redis伺服器的真實IP地址,當後期Redis伺服器IP地址發生變更只需要更改redis 相應的 後端real server即可, 可避免更改程式中的IP地址設定。

主從複製特點
一個master可以有多個slave
一個slave只能有一個master
資料流向是單向的, master到slave

Redis Slave 也要開啟持久化並設定和master同樣的連線密碼,因為後期slave會有提升為master的可 能,Slave 端切換master同步後會丟失之前的所有資料,而通過持久化可以恢復資料
一旦某個Slave成為一個master的slave, Redis Slave服務會清空當前redis伺服器上的所有資料並將 master的資料匯入到自己的記憶體,但是如果只是斷開同步關係後,則不會刪除當前已經同步過的資料

當配置Redis複製功能時,強烈建議開啟主伺服器的持久化功能。否則的話,由於延遲等問題,部署的 服務應該要避免自動啟動。

參考案例: 導致主從伺服器資料全部丟失
1.假設節點A為主伺服器,並且關閉了持久化。並且節點B和節點c從節點A複製資料
2.節點A崩潰,然後由自動拉起服務重啟了節點A.由於節點A的持久化被關閉了,所以重啟之後沒有任何資料
3.節點B和節點c將從節點A複製資料,但是A的資料是空的,於是就把自身儲存的資料副本刪除。

在關閉主伺服器上的持久化,並同時開啟自動拉起程序的情況下,即便使用Sentinel來實現Redis的高可 用性,也是非常危險的。因為主
伺服器可能拉起得非常快,以至於Sentinel在配置的心跳時間間隔內沒有檢測到主伺服器已被重啟,然 後還是會執行上面的資料丟失的流程。無論何時,資料安全都是極其重要的,所以應該禁止主伺服器關 閉持久化的同時自動啟動。

命令列配置
啟用主從同步
預設redis 狀態為master,需要轉換為slave角色並指向master伺服器的IP+PORT+Password
REPLICAOF MASTER_IP PORT 指令可以啟用主從同步複製功能,早期版本使用 SLAVEOF 指令

127.0.0.1:6379> REPLICAOF MASTER_IP PORT
127.0.0.1:6379> CONFIG SET masterauth <masterpass>

 

修改配置檔案實現永久主從 命令列修改重啟服務主從同步不儲存

vim /etc/redis.conf
.......
# replicaof <masterip> <masterport>
replicaof 10.0.0.8 6379 #指定master的IP和埠號
# masterauth <master-password>
masterauth 123456 #如果密碼需要設定
.......
systemctl restart redis

 

刪除主從同步
REPLIATOF NO ONE 指令可以取消主從複製
取消複製 ,在slave上執行REPLIATOF NO ONE,會斷開和master的連線不再主從複製 , 但不會清除slave 上已有的資料
127.0.0.1:6379> REPLICAOF no one

檢視主從同步狀態
info replication

 slave 狀態只讀無法寫入資料