首先是一些關於redis的介紹和其在K8S上的安裝過程:https://www.kubernetes.org.cn/3974.html
1.1部署形態
通過上述地址的教程,可以完成redis 的安裝和使用。本文主要是要闡述一些社區版的redis-ha的形態探索。

這是我按照上述教程安裝的例子,可以看到,默認是安裝1主+2從,這是3節點的配置。同時,每個redis-server和一個redis-sentinel安裝在一個節點,也就有了三個redis-sentinel。

1.2主從切換
首先,我們通過kubectl get svc -n default的方式來獲取redis的網絡情況。(n為namespace,請根據自己情況進行更改)
然后,我們通過redis-cli的方式來訪問redis的master實例,並獲取Replication的狀態。

從上圖中,我們可以看出,redis master有兩個slave,同時,可以看到他們的ip和pod ip是對應的。(注意,這里我們是在宿主機上,通過master的clusterIP訪問的,而非redis pod的)
我們進入到redis的master server的pod中,kill掉redis server進程,因為pod存活條件應該是以redis來判斷的(有的是ping 6379這個端口,這里暫時還不知道是怎么判斷的。),這個時候因為我們kill掉了redis進程,所以k8s認為這個pod需要重啟,所以退出了bash。

注意,這里顯示的以slave的方式啟動,應該是因為我之前曾經做過類似的操作,這個節點之前是個從節點,是在一個master節點被kill掉之后才提升成為的主節點。sentinel info可以證實這一點。

稍等片刻后,我們可以看到已經完成了主從切換,同時我們依然可以通過之前的redis master的clusterIP來訪問redis的master實例。(請觀察此圖與上面那個圖片的role變化,和sentinel中的address變化)

可見,當master的pod因為某種原因down掉了之后,k8s會通過sentinel選擇一個新的master節點,並更新master的clusterIP指向新的master的podip,以便對上層應用做成無感切換。下圖依然通過master的clusterIP來訪問redis的master實例。

今天先到這里,本次主要是講述了k8s通過helm安裝的redis-ha進行主從切換對於業務和K8S的影響,之后會探索redis-ha的master,slave和sentinel的配置。
更多openstack/trove的文章:http://www.cnblogs.com/S-tec-songjian/
此文章屬博客園用戶S-tec原創作品,受國家《著作權法》保護,未經許可,任何單位及個人不得做營利性使用;若僅做個人學習、交流等非營利性使用,應當指明作者姓名、作品名稱,原文地址,並且不得侵犯作者依法享有的其他權利。
