説明する
システムバージョン: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 つのノードは同じホスト上に展開され、それらを区別するために異なるポートを使用します。展開プロセス中に問題が発生した場合は、プライベート メッセージまたはコメントを送信してください。