docker運(yùn)維部署之redis哨兵模式部署

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> 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容