使用docker 搭建 redis 的 1主2從3哨兵

redis主從搭建+哨兵(docker):
    """推薦使用國內daocloud鏡像,鏡像地址:daocloud.io/library/"""
    1. # 拉取鏡像
       docker pull daocloud.io/library/redis:latest

    2. # 使用docker啓動3個redis容器服務,分別使用到6379、6380、6381端口
       docker run --name redis6379 -p 6379:6379 -d daocloud.io/library/redis --appendonly yes
       docker run --name redis6380 -p 6380:6379 -d daocloud.io/library/redis --appendonly yes
       docker run --name redis6381 -p 6381:6379 -d daocloud.io/library/redis --appendonly yes

    3. # 查看3個容器的IP
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6379
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6380
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6381

       172.17.0.4 redis6379   # master
       172.17.0.5 redis6380   # slave1
       172.17.0.6 redis6381   # slave2

    4. #進入docker容器內部, 使用redis-cli命令修改 redis6380、redis6381 的主機爲 172.17.0.4:6379
       docker exec -ti 容器id /bin/bash  # 進入docker容器內部
       redis-cli
       SLAVEOF 172.17.0.4 6379

    5. # 查看redis6379是否已經擁有2個從機:
       127.0.0.1:6379> info replication
       role:maste
       connected_slaves:2
       slave0:ip=172.17.0.6,port=6379,state=online,offset=224,lag=0
       slave1:ip=172.17.0.5,port=6379,state=online,offset=224,lag=1
       master_replid:e65a5e233e9caa53a3e2d1d17e3622be2bc70de9
       master_replid2:0000000000000000000000000000000000000000
       master_repl_offset:224
       second_repl_offset:-1
       repl_backlog_active:1
       repl_backlog_size:1048576
       repl_backlog_first_byte_offset:1
       repl_backlog_histlen:224

    # 哨兵
        1. 接下來直接進入3臺redis容器內部進行配置。
           docker exec -ti 容器id /bin/bash  # 進入docker容器內部

        2. 進入根目錄創建 sentinel.conf 文件
           cd / && touch sentinel.conf

        3. 修改文件內容爲, 每一臺配置完全一樣:
           sentinel monitor mymaster 172.17.0.4 6379 1

        4. 最後,啓動Redis哨兵:
           使用 "redis-sentinel /sentinel.conf &" 啓動Redis哨兵監控
           使用 "ps -ef |grep redis" 命令,可以看到redis-server和redis-sentinel正在運行

        5. 驗證哨兵機制下的自動主從切換
           我們將主 redis6379 進程kill掉。 # 停止redis6379容器
           稍等幾秒鐘後,就有另外一臺從升級爲主機,實驗時是 redis6380 升級爲了主。   # 切換過程有點慢,大公司不能容忍,必須要cluster集羣。
           用info命令查詢可以看到 redis6380 服務器的角色變成的master。說明自動主從切換成功。
           然後重新啓動之前被kill掉的 主 redis6379 服務器,啓動後用info命令查看,可以發現其變成了 redis6380 的從服務器。






 

發佈了41 篇原創文章 · 獲贊 18 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章