docker インストール redis7-マスター-スレーブモード

説明する

システムバージョン:CentOS7.9

Redis バージョン: 7.0.5 ミラー

このモードは 1 つのマスターと 2 つのスレーブで、マスター ノードのポートは 6379、スレーブ ノードのポートは 6380 と 6381 です。以下のすべての例では、例として redis7.0.5 を使用します。

画像をダウンロード

docker pull redis:7.0.5

 マウントパスの作成

コンテナーの再起動後のデータ損失を防ぐために、すべてのノードのデータ、構成ファイル、およびログがホストにマウントされます。

# 主节点
mkdir -p /root/data/redis-master/conf
mkdir -p /root/data/redis-master/data

# 从节点1
mkdir -p /root/data/redis-slave1/conf
mkdir -p /root/data/redis-slave1/data

#从节点2
mkdir -p /root/data/redis-slave2/conf
mkdir -p /root/data/redis-slave2/data

マスターノードのredis.confファイルを構成する

設定ファイルをダウンロードする

 redis7 バージョン イメージには、対応する redis.conf 構成ファイルがありません。必要に応じて、公式 Web サイトのインストール パッケージから対応するバージョンの redis.conf ファイルをダウンロードできます。ダウンロード アドレス: Redis ダウンロード以下は例として 7.0.5 を使用します。

-P: インストール パッケージを指定されたパスにダウンロードすることを意味します

wget -P /root/software https://github.com/redis/redis/archive/refs/tags/7.0.5.tar.gz

インストールパッケージを解凍します

-C: 圧縮パッケージを解凍する場所を指定します。./ は現在のフォルダーに解凍することを意味します

tar -zxvf /root/software/7.0.5.tar.gz -C /root/software/

 redis.confをマスターノードのマウントされたボリュームディレクトリにコピーします。

cp /root/software/redis-7.0.5/redis.conf /root/data/redis-master/conf/

 redis.conf ファイルを変更する

vim /root/data/redis-master/conf/redis.conf

以下の内容を修正します

# 修改bind使redis可以外部访问,正式环境不建议设置为0.0.0.0
bind 0.0.0.0
# 保护模式,默认yes,如果不需要保护模式可以设置为no            
protected-mode yes
# 端口号,默认即可
port 6379
# 日志文件存放位置
logfile /data/redis.log
# 用守护线程的方式启动,关闭
daemonize no
# 数据存放目录
dir /data
# 密码
requirepass <your password>
# 开启AOF方式持久化 默认是no
appendonly yes
# 持久化数据文件存放的文件夹名称,不能带/
appenddirname "aof"

 スレーブノードのredis.confファイルを構成する

ノード1からの構成

vim /root/data/redis-slave1/conf/redis.conf

 以下の設定内容を追加します

port 6379
replicaof <主节点ip> <主节点的port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6380

ノード2からの構成

vim /root/data/redis-slave2/conf/redis.conf

次のコンテンツを追加します

port 6379
replicaof <主节点ip> <主节点port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6381

Redisを開始する

マスターノードを起動します

docker run -p 6379:6379 \
--privileged=true \
-v /root/data/redis-master/data:/data \
-v /root/data/redis-master/conf:/usr/local/etc/redis \
--name redis-master \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

スレーブノード1の起動

docker run -p 6380:6379 \
--privileged=true \
-v /root/data/redis-slave1/data:/data \
-v /root/data/redis-slave1/conf:/usr/local/etc/redis \
--name redis-slave1 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

スレーブノード2の起動

docker run -p 6381:6379 \
--privileged=true \
-v /root/data/redis-slave2/data:/data \
-v /root/data/redis-slave2/conf:/usr/local/etc/redis \
--name redis-slave2 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

デプロイが成功したかどうかを確認する

マスターノードのログを表示する

tail -f /root/data/redis-master/data/redis.log 

クラスター情報の表示

docker exec -it redis-master redis-cli
# auth 进行权限验证
auth <your password>
# 集群信息
info replication

 テスト

マスターノードがデータを追加する

docker exec -it redis-master redis-cli
set name zs
set age 18

ノード1からデータを取得します

docker exec -it redis-slave1 redis-cli
keys *

 ノード 2 からデータを取得する

docker exec -it redis-slave2 redis-cli
keys *

 導入中に発生した問題

 SYNC 用ソケットのエラー状態: 接続が拒否されました

解決

  • スレーブノードの設定が正しいか確認してください
  • レプリカの設定では 127.0.0.1 を書き込むことができません

Could not connect to Redis at 127.0.0.1:6379: Connection refused

解決

  • 外部に公開されるポートが 6379 ではない場合は、-p を使用してリンクされたポートを指定します。

docker exec -it redis-slave1 redis-cli -p 6380

仕上げる

上記は展開プロセス全体です。3 つのノードは同じホスト上に展開され、それらを区別するために異なるポートを使用します。展開プロセス中に問題が発生した場合は、プライベート メッセージまたはコメントを送信してください。 

おすすめ

転載: blog.csdn.net/LSW_JAVADP/article/details/132307097