docker-compose安裝redis過程-主從+哨兵(3臺虛擬機(jī)一主兩從)
一、部署架構(gòu)
主從結(jié)構(gòu)
- 主節(jié)點:部署于192.168.56.100
- 從節(jié)點:部署于192.168.56.101和192.168.56.103
哨兵結(jié)構(gòu)
- 每臺服務(wù)器部署一個哨兵實例,形成三哨兵集群。
| ip | redis節(jié)點名稱 | sentinel節(jié)點名稱 |
| 192.168.56.100 | redis-master | redis-sentinel |
| 192.168.56.101 | redis-slave1 | redis-sentinel |
| 192.168.56.103 | redis-slave2 | redis-sentinel |
二、配置文件準(zhǔn)備
創(chuàng)建conf目錄保存redis.conf和sentinel.conf文件
創(chuàng)建data目錄保存appendonly.aof、dump.rdb、redis.log文件

1.主節(jié)點Redis配置(redis-master.conf)
# 任何都可以連接redis bind 0.0.0.0 # 配置master密碼 requirepass 123456 # 宕機(jī)后成為從要連接master的密碼 masterauth 123456 # 開啟持久化 appendonly yes
2.從節(jié)點Redis配置(redis-slave.conf)
# 指向主節(jié)點IP和端口 replicaof 192.168.56.100 6379 # 任何都可以連接redis bind 0.0.0.0 # 從節(jié)點密碼 requirepass 123456 # 主節(jié)點密碼 masterauth 123456 # 開啟持久化 appendonly yes # 從節(jié)點具備寫入權(quán)限 #slave-read-only no
3.哨兵配置(sentinel.conf)
port 26379 # 監(jiān)控主節(jié)點,2為最小投票數(shù) sentinel monitor mymaster 192.168.56.100 6379 2 # 主節(jié)點密碼 sentinel auth-pass mymaster 123456 # 6秒無響應(yīng)判定主節(jié)點下線 sentinel down-after-milliseconds mymaster 6000 # 控制同時進(jìn)行同步的從節(jié)點數(shù)量為 1 sentinel parallel-syncs mymaster 1 # 故障轉(zhuǎn)移超時時間 sentinel failover-timeout mymaster 6000
三、Docker-Compose文件編寫
在三臺服務(wù)器分別配置docker-compose
#version: '3'
services:
redis:
image: redis:6.2.14 # redis鏡像版本
container_name: redis-master # 容器名稱
ports:
# 指定宿主機(jī)端口與容器端口映射關(guān)系
- 6379:6379
volumes:
# 映射配置文件目錄
- ./redis/conf/redis-master.conf:/usr/local/etc/redis/redis.conf
# 映射數(shù)據(jù)目錄
- ./redis/data:/usr/local/etc/redis/data
restart: always # 容器開機(jī)自啟
privileged: true # 獲取宿主機(jī)root權(quán)限
command: redis-server /usr/local/etc/redis/redis.conf # 指定配置文件啟動redis-server進(jìn)程
networks:
- my-network
sentinel:
image: redis:6.2.14
container_name: redis-sentinel
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
ports:
- "26379:26379"
volumes:
- ./redis/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf
restart: always
networks:
- my-network
networks:
my-network:
#external: true
name: my-network
driver: bridge*從節(jié)點需將redis-master.conf替換為redis-slave.conf,并調(diào)整container_name*sentinel內(nèi)容不變
四、部署步驟
1.啟動服務(wù)
docker-compose up -d # 每臺服務(wù)器執(zhí)行
2.驗證部署
- 主從同步檢查:
docker exec -it redis-master redis-cli -a 123456 info replication

查看role和connected_slaves字段
- 哨兵狀態(tài)檢查:
docker exec -it redis-sentinel redis-cli -p 26379 sentinel master mymaster

或者
進(jìn)入哨兵容器:
docker exec -it redis-sentinel /bin/bash
連接哨兵:
redis-cli -p 26379 info
五、測試主從和故障轉(zhuǎn)移
進(jìn)入redis容器:
docker exec -it redis-master /bin/bash redis-cli auth 123456

1.測試主從復(fù)制
- master節(jié)點創(chuàng)建一個鍵值對:

- 從節(jié)點查看key是否存在:

主從復(fù)制正常?。?!
2. 測試故障轉(zhuǎn)移
我們把master(192.168.56.100)停掉,查看一個哨兵的日志:
docker stop redis-master
docker logs -f redis-sentinel

故障轉(zhuǎn)移成功?。?!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Docker部署Spring Boot項目的實現(xiàn)步驟
本文主要介紹了使用Docker部署Spring Boot項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Linux下使用Docker部署MinIO存儲服務(wù)實現(xiàn)遠(yuǎn)程上傳的方法
MinIO是一個開源的對象存儲服務(wù)器,可以在各種環(huán)境中運行,例如本地、Docker容器、Kubernetes集群等,本文主要是Linux下通過Docker部署MinIO存儲服務(wù)實現(xiàn)遠(yuǎn)程上傳的文章,感興趣的朋友一起看看吧2023-11-11
Docker容器搭建android編譯環(huán)境的實踐記錄
這篇文章主要介紹了Docker容器搭建android編譯環(huán)境的實踐記錄,主要包括部署容器、鏡像管理、容器管理等相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
從零搭建docker+jenkins+node.js自動化部署環(huán)境的方法
這篇文章主要介紹了從零搭建docker+jenkins+node.js自動化部署環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

