1.下載鏡像
docker pull docker.io/redis
2.主機(jī)上建立掛載目錄和redis配置文件
mkdir -p /data/redis_data
cd /data/redis_data
touch redis.conf vi redis.conf
- 主機(jī)一(192.168.0.34)上的redis.conf配置信息如下:
logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
requirepass 123456
- 從機(jī)二、三(192.168.0.33、192.168.0.35)上也同樣建立掛載目錄和redis配置文件,其內(nèi)容稍有不同:
logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 192.168.0.34 6389
masterauth 123456
requirepass 123456
- 配置說(shuō)明:
dir:工作目錄
logfile:日志文件在工作目錄下
slaveof:指明為主機(jī)一的從機(jī)
requirepass:redis客戶端連接的認(rèn)證密碼,若不需要可不配置
masterauth:主從redis同步的認(rèn)證密碼,與連接密碼同,若不需要可不用配置
appendonly:是否需要持久化,yes為需要,默認(rèn)時(shí)everysec
no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(快)
always:表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢,安全)
everysec:表示每秒同步一次(折衷,默認(rèn)值)
appendfsync everysec
3.啟動(dòng)容器
docker run -p 6379:6379 \
-v /data/redis_data/:/data \
--name redis-6379 -d \
docker.io/redis redis-server redis.conf
- 命令說(shuō)明:
-p 6379:6379 : 將容器的6379端口映射到主機(jī)的6379端口
-v /data/redis_data:/data : 將主機(jī)中目錄/data/redis_data掛載到容器的/data
--name redis-6379: 給出容器名稱
-d: 后臺(tái)運(yùn)行
docker.io/redis: 鏡像名稱
redis-server redis.conf: redis的啟動(dòng)命令,指定配置文件
4.觀察容器內(nèi)部redis的情況:
docker exec -it redis-6379 /bin/bash
該命令可進(jìn)入容器內(nèi)部,其默認(rèn)的工作目錄即為/data,再執(zhí)行redis-cli命令,觀察redis信息
執(zhí)行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.33
master_port:6379
...
5.哨兵容器部署
5.1、主機(jī)上建立哨兵目錄和其配置文件
cd /data/redis_data
touch sentinel.conf
vi sentinel.conf
- 三臺(tái)主機(jī)上sentinel.conf的內(nèi)容相同,如下
logfile "sentinel.log"
sentinel monitor mymaster 192.168.0.34 6379 1
sentinel auth-pass mymaster 123456
- 配置說(shuō)明:
logfile "sentinel.log":輸出日志目錄
sentinel monitor mymaster 192.168.0.1 6379 1:哨兵監(jiān)控的主服務(wù)器名稱為mymaster,ip為192.168.0.1,端口為6379,將這個(gè)主服務(wù)器標(biāo)記為失效至少需要1個(gè)哨兵進(jìn)程的同意
sentinel auth-pass mymaster 1234 : 哨兵的認(rèn)證密碼
5.2、啟動(dòng)容器
docker run -p 26379:26379 \
-v /data/redis_data/:/data \
--name sentinel-redis-26379 \
-d docker.io/redis redis-sentinel sentinel.conf
- 命令說(shuō)明:
-p 26379:26379 : 將容器的26379端口映射到主機(jī)的26379端口
-v /data/redis_data:/data : 將主機(jī)中目錄/data/redis_data掛載到容器的/data
--name sentinel-redis-26379: 給出容器名稱
-d: 后臺(tái)運(yùn)行
docker.io/redis: 鏡像名稱
redis-sentinel sentinel.conf: sentinel的啟動(dòng)命令,指定配置文件
5.3、觀察容器內(nèi)哨兵情況
docker exec -it sentinel-redis-26379 /bin/bash
連接一個(gè)sentinel節(jié)點(diǎn) 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>