1. 程式人生 > 實用技巧 >阿里雲Docker+Redis單機版搭建叢集(主從)配置最詳細記錄

阿里雲Docker+Redis單機版搭建叢集(主從)配置最詳細記錄

參考來源:https://www.cnblogs.com/fan-gx/p/11463400.html

原文是測試多臺伺服器,我的只有單臺,仿照這個,自己探索了一番,搞出來了,非常詳細的記錄如下:

主機配置檔案(6379)

# 註釋這一行,表示Redis可以接受任意ip的連線
# bind 127.0.0.1

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

# 關閉保護模式
protected-mode no

# 讓redis服務後臺執行
daemonize yes

# 設定密碼(可選,如果這裡開啟了密碼要求,slave的配置裡就要加這個密碼. 只是練習配置,就不使用密碼認證了)
# requirepass masterpassword

# 配置日誌路徑,為了便於排查問題,指定redis的日誌檔案目錄
logfile "/mylog/redis-master.log"

從機1配置檔案(6380)

# 註釋這一行,表示Redis可以接受任意ip的連線
# bind 127.0.0.1

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380

# 關閉保護模式
protected-mode no

# 讓redis服務後臺執行
daemonize yes

# 設定密碼(可選,如果這裡開啟了密碼要求,slave的配置裡就要加這個密碼)
requirepass masterpassword

# 設定主庫的密碼,用於認證,如果主庫開啟了requirepass選項這裡就必須填相應的密碼
masterauth <master-password>

# 設定master的IP和埠號,redis配置檔案中的預設埠號是6379
# 低版本的redis這裡會是slaveof,意思是一樣的,因為slave是比較敏感的詞彙,所以在redis後面的版本中不在使用slave的概念,取而代之的是replica
# 將35.236.172.131做為主,其餘兩臺機器做從。ip和埠號按照機器和配置做相應修改。
replicaof 35.236.172.131 6379

# 配置日誌路徑,為了便於排查問題,指定redis的日誌檔案目錄
logfile "/mylog/redis-slave.log"

從機2配置檔案(6382)【只修改port即可】

# 註釋這一行,表示Redis可以接受任意ip的連線
# bind 127.0.0.1

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6382

# 關閉保護模式
protected-mode no

# 讓redis服務後臺執行
daemonize yes

# 設定密碼(可選,如果這裡開啟了密碼要求,slave的配置裡就要加這個密碼)
requirepass masterpassword

# 設定主庫的密碼,用於認證,如果主庫開啟了requirepass選項這裡就必須填相應的密碼
masterauth <master-password>

# 設定master的IP和埠號,redis配置檔案中的預設埠號是6379
# 低版本的redis這裡會是slaveof,意思是一樣的,因為slave是比較敏感的詞彙,所以在redis後面的版本中不在使用slave的概念,取而代之的是replica
# 將35.236.172.131做為主,其餘兩臺機器做從。ip和埠號按照機器和配置做相應修改。
replicaof 35.236.172.131 6379

# 配置日誌路徑,為了便於排查問題,指定redis的日誌檔案目錄
logfile "/mylog/redis-slave.log"

安裝主機(6379)

#其中/var/lib/docker/containers/myconf/redis_1.conf是我放置主機配置檔案位置
docker run -it --name redis-1 -v /var/lib/docker/containers/myconf/redis_1.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash

安裝從機(6380)

docker run -it --name redis-2 -v /var/lib/docker/containers/myconf/redis_2.conf:/usr/local/etc/redis/redis.conf -d -p 6380:6379 redis /bin/bash

安裝從機(6382)

docker run -it --name redis-4 -v /var/lib/docker/containers/myconf/redis_4.conf:/usr/local/etc/redis/redis.conf -d -p 6382:6379 redis /bin/bash

啟動redis伺服器(主6379)

# 以互動模式進入容器redis-1
$ docker exec -it redis-1 bash

# 建立日誌檔案目錄(這裡如果不寫,直接從下方redis-server開始會報錯,錯誤就是沒有這個)
# 這裡的/mylog/redis-master.log就是我的配置檔案中的logfile
$ mkdir /mylog
$ touch /mylog/redis-master.log

# 啟動redis伺服器,如果沒有任何輸出,就說明成功了
$ redis-server /usr/local/etc/redis/redis.conf

# 在容器裡啟動一個redis客戶端
$ redis-cli

# 執行info命令,檢視伺服器狀態
127.0.0.1:6379> info replication

# 最後退出容器
$ exit

啟動redis伺服器(從6380)

# 以互動模式進入容器redis-2
$ docker exec -it redis-2 bash

# 建立日誌檔案目錄(這裡如果不寫,直接從下方redis-server開始會報錯,錯誤就是沒有這個)
# 這裡的/mylog/redis-slave.log就是我的配置檔案中的logfile
$ mkdir /mylog
$ touch /mylog/redis-slave.log

# 啟動redis伺服器,如果沒有任何輸出,就說明成功了
$ redis-server /usr/local/etc/redis/redis.conf

# 在容器裡啟動一個redis客戶端
$ redis-cli -p 6380

# 執行info命令,檢視伺服器狀態(看到前方127.0.0.1:【6380】了沒,這就ok啦,哈哈)
127.0.0.1:6380> info replication

# 最後退出容器
$ exit

啟動redis伺服器(從6382)

# 以互動模式進入容器redis-4
$ docker exec -it redis-4 bash

# 建立日誌檔案目錄(這裡如果不寫,直接從下方redis-server開始會報錯,錯誤就是沒有這個)
# 這裡的/mylog/redis-slave.log就是我的配置檔案中的logfile
$ mkdir /mylog
$ touch /mylog/redis-slave.log

# 啟動redis伺服器,如果沒有任何輸出,就說明成功了
$ redis-server /usr/local/etc/redis/redis.conf

# 在容器裡啟動一個redis客戶端
$ redis-cli -p 6382

# 執行info命令,檢視伺服器狀態(看到前方127.0.0.1:【6382】了沒,這就ok啦,哈哈)
127.0.0.1:6382> info replication

# 最後退出容器
$ exit

然後在主機下面info replication就會發現跟了兩個從機,yeah!

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=我的ip保密,port=6380,state=online,offset=1688,lag=0
slave1:ip=我的ip保密,port=6382,state=online,offset=1688,lag=1
master_replid:a8708b275e0694e97cf18aea3db4f683b536925a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1688
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1688