主從復制Redis集群
主從容器啟動的時候指定不同的配置文件

#!/bin/bash #change redis config ordinal=`env | grep podname | cut -d"=" -f2 | cut -d"-" -f2` sed -i "s/slaveof.*/slaveof rediscluster-0.rediscluster 6379/g" /etc/redis/redis-slave.conf if [ $ordinal -eq 0 ]; then redis-server /etc/redis/redis-master.conf else redis-server /etc/redis/redis-slave.conf fi
以上步驟實現了主從節點的數據同步,但是當主節點崩潰的時候還不能自動把一個從節點切換成主節點。要實現主從的自動切換就必須另外安裝一個redis哨兵服務
主節點宕機后從節點自動升級為主節點,但主節點的IP已經變動了,此時應用服務還是拿着原主節點的地址去訪問
一旦主節點宕機,從節點晉升成主節點,同時需要修改應用方的主節點地址,還需要命令所有從節點去復制新的主節點,整個過程需要人工干預
Redis哨兵集群安裝配置
在主從復制的基礎上,哨兵實現了自動化的故障恢復
訪問redis集群的數據都是通過哨兵集群的,哨兵監控整個redis集群
一旦發現redis集群出現了問題,比如剛剛說的主節點掛了,從節點會頂上來。但是主節點地址變了,這時候應用服務無感知,也不用更改訪問地址,因為哨兵才是和應用服務做交互的
redis容器最少需要6個,分別是1主2從3哨兵
pod0為主 pod1和pod2為從 pod3,pod4,pod5為哨兵

#!/bin/bash #change redis config ordinal=`env | grep podname | cut -d"=" -f2 | cut -d"-" -f2` sed -i "s/slaveof.*/slaveof rediscluster-0.rediscluster 6379/g" /etc/redis/redis-slave.conf if [ $ordinal -eq 0 ]; then redis-server /etc/redis/redis-master.conf elif [ $ordinal -gt 0 -a $ordinal -le 2 ]; then redis-server /etc/redis/redis-slave.conf elif [ $ordinal -gt 2 ]; then redis-sentinel /etc/redis/sentinel.conf fi
Rancher實現一個四層的負載均衡器
實現給一群pod提供一個對外訪問的入口