Docker-設置redis容器主從模式&哨兵模式

主從複製模式設置:

首先開啓三個reids容器:

分別使用宿主機的6381 6382 6382 端口,

[root@iz2zei9wv79ob7vwy7y1jcz redis]# docker run -p 6381:6379 --name redis001  -v $PWD/data:/data -d redis redis-server --appendonly yes
a5e55a288549d67adddb613bc6f8dd4c25c3f4bd443962401f93c9f3d29fc74a
[root@iz2zei9wv79ob7vwy7y1jcz redis]# docker run -p 6382:6379 --name redis002   -d redis redis-server
e1cea94b016b2f5371a38c50964c232a4200e4d2fd645308db8f518d8cd3400d
[root@iz2zei9wv79ob7vwy7y1jcz redis]# docker run -p 6383:6379 --name redis003   -d redis redis-server
9efbc0272aae1a7152af995841de6b56d4ae17c3c16f3e2052064c9e7566554f

-p 用來設置容器端口到主機端口的映射。
–name 用來設置容器別名用來以後方便操作
-v 用來將宿主機指定目錄掛在到容器中 冒號前爲主機目錄,冒號後爲容器中目錄
-d redis 爲下載的redis鏡像
redis-server 用來再創建容器的時候就啓動redis的server端口
–appendonly yes 用來開啓redis的持久化。
docker exec -it redis001 redis-cli 用來登陸redis客戶端
info可以用來查看redis容器的各項參數

[root@iz2zei9wv79ob7vwy7y1jcz redis]# docker exec -it redis001 redis-cli
127.0.0.1:6379> info
# Server
redis_version:5.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:90b5046eb8b5d254
redis_mode:standalone
os:Linux 3.10.0-957.27.2.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0

配置redis集羣:

使用 docker inspect redis001(容器名) 查看容器內網ip地址
[root@iz2zei9wv79ob7vwy7y1jcz ~]# docker inspect redis001

在這裏插入圖片描述
我的三個內網ip地址爲:

"172.17.0.6"   ==>redis001
"172.17.0.7"    ==>redis002
"172.17.0.8"     ==>redis003
查看redis模式:

進入容器內部,查看當前redis是主master還是從slave

[root@iz2zei9wv79ob7vwy7y1jcz ~]# docker exec -it redis003 redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:16b463b4a214d67d98fbcd60a2016417c83fbdec
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

可以得到redis容器都是master

設置redis主從模式

指定redis001 爲master ,redis002和redis003爲從機
進入從機redis客戶端,使用slaveof 命令設置master ip 和 port
需要注意的是,這裏port是容器中redis對應的端口,而不是我們宿主機對應的port端口,因爲我們使用的是容器的內網ip

[root@iz2ei9wv79ob7vwy7y1jcz ~]# docker exec -it redis002 redis-cli
127.0.0.1:6379> slaveof 172.17.0.6 6379
OK

使用info replication 命令查看主從複製配置,可以看到master配置已經變成redis001的端口和ip

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:172.17.0.6
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:0
master_link_down_since_seconds:1565155373
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:4cedd9fa077ab77c4b43e824c1c191acdfe0bdb8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

同理設置redis003
進入master ==>redis001,可以看到已經有兩個slave連接上了

[root@iz2zei9wv79ob7vwy7y1jcz ~]# docker exec -it redis001 redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.7,port=6379,state=online,offset=252,lag=1
slave1:ip=172.17.0.8,port=6379,state=online,offset=252,lag=1
master_replid:242e2099f1209d5cfe81fdea8342d0cddc7a93de
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:266
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:266

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章