本示例基於Centos 7,在阿里雲的三臺機器上部署redis集羣,假設目前使用的帳號爲release,擁有sudo權限。html
因爲Docker官方鏡像下載較慢,能夠開啓阿里雲的Docker鏡像下載加速器,可參考此文進行配置。redis
假設三臺主機的ip分別爲:docker
三臺主機的安裝步驟類似,以主機一爲例:bash
1. 安裝docker服務:服務器
sudo yum install -y docker
2. 啓動docker服務: app
sudo service docker start
3. 查找redis鏡像:ui
sudo docker search redis
4. 下載官方redis鏡像:阿里雲
sudo docker pull docker.io/redis
5. 下載完後可檢查鏡像:spa
sudo docker images
6. 主機上創建掛載目錄和redis配置文件:日誌
mkdir -p /data/redis_data cd /data/redis_data touch redis.conf vi redis.conf
主機一上的redis.conf配置信息以下:
logfile "redis.log" port 6379 dir /data appendonly yes appendfilename appendonly.aof requirepass 1234
主機2、三上也一樣創建掛載目錄和redis配置文件,其內容稍有不一樣:
logfile "redis.log" port 6379 dir /data appendonly yes appendfilename appendonly.aof slaveof 192.168.0.1 6389 masterauth 1234 requirepass 1234
配置說明:
7. 三臺主機上都啓動容器:
sudo docker run -p 6379:6379 -v /data/redis_data/:/data --name redis-6379 -d docker.io/redis redis-server redis.conf
命令說明:
通過這一步後,三臺主機已經創建了主從關係。
8. 查看容器運行狀況:
sudo docker ps -a
運行中的容器,其狀態爲Up,
若要中止並刪除容器,其命令爲:
sudo docker stop 容器id sudo docker rm 容器id
9. 觀察容器內部redis的狀況:
sudo docker exec -it 容器id /bin/bash
該命令可進入容器內部,其默認的工做目錄即爲/data,再執行redis-cli命令,觀察redis信息:
[release@sh-lbs02 6389-sentinel]$ sudo docker exec -it cac /bin/bash root@cac589144cfd:/data# redis-cli 127.0.0.1:6379> info NOAUTH Authentication required. 127.0.0.1:6379> auth SVKFGKPaFT OK 127.0.0.1:6379> info # Server ... # Replication role:slave master_host:192.168.0.1 master_port:6379 ...
至此,可確認三臺主機的主從模式已經創建成功。
10. 主機上創建哨兵目錄和其配置文件:
cd /data/redis_data touch sentinel.conf vi sentinel.conf
三臺主機上sentinel.conf的內容相同,以下:
logfile "sentinel.log" sentinel monitor mymaster 192.168.0.1 6379 1 sentinel auth-pass mymaster 1234
配置說明:
11. 三臺主機上啓動哨兵模式:
sudo docker run -p 26379:26379 -v /data/redis_data/:/data --name redis-26379 -d docker.io/redis redis-sentinel sentinel.conf
命令說明:
通過這一步後,哨兵模式已經創建起來。可經過觀察日誌查看啓動狀況
12. 觀察容器內哨兵狀況:
sudo docker exec -it 容器id /bin/bash
該命令可進入哨兵容器內部,其默認的工做目錄即爲/data,再執行redis-cli命令,觀察redis信息:
[release@sh-lbs02 6389-sentinel]$ sudo docker exec -it 25 /bin/bash root@259da4458937:/data# redis-cli -h 127.0.0.1 -p 26379 127.0.0.1:26379> info # Server ... # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=192.168.0.1:6379,slaves=2,sentinels=4 127.0.0.1:26379>
至此,能夠肯定哨兵模式已啓動成功。