docker を使用して Redis マスター/スレーブを構築する方法

docker を使用して Redis マスター/スレーブを構築する方法

1. Docker環境を構築する

1. Dockerfileを作成する

Centos:latest から
実行 groupadd -r redis && useradd -r -g redis redis
実行 yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools
エクスポーズ6379

2. イメージを構築する

ビルド -t docker-test を実行します。

3. 現在の画像を表示する

Docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
docker-test 最新 ccebd30e466a 12 分前 396MB
centos 最新 470671670cac 7 週間前 237MB

4. dockerのデフォルトのネットワークタイプを表示する

docker ネットワーク ls
ネットワーク ID 名前 ドライバー スコープ
a43e79987e98 ブリッジ ブリッジ ローカル
6b73067403dc ホスト ホスト ローカル
b8ad4981e57e なし null ローカル

5. カスタムネットワークタイプを作成する

docker ネットワーク作成 --subnet=172.10.0.0/16 haveyb-network

2. Redisマスタースレーブを構築する

1. redis-masterコンテナを作成する

docker run -itd --name redis-master --net haveyb-network -p 6380:6379 --ip 172.10.0.2 docker-test

パラメータの説明:

-i: コンテナを対話モードで実行します。通常は -t と一緒に使用されます。

-t: コンテナの疑似入力端子を再割り当てします。通常は -i と一緒に使用されます。

-d: コンテナをバックグラウンドで実行し、コンテナ ID を返します。

--name: 作成したコンテナに名前を付ける

--net: ネットワーク モードを指定します (ここでは、作成したカスタム ネットワーク モードを指定します)

-p: ポートマッピング、形式: ホストポート: コンテナポート

--ip: コンテナに固定IPを設定する

次に、使用するイメージを指定します(ここでは、作成したイメージ docker-test を使用します)

2. 実行中のコンテナを表示する

ドッカーps -a
コンテナIDイメージコマンドが作成されました
dc9344bbd25f docker-test "/bin/bash" 2分前
 
ステータス ポート名
2分前に起動 0.0.0.0:6380->6379/tcp redis-master

注: 特定のネットワークのコンテナのIPアドレスを表示する

docker ネットワーク検査 haveyb-network

3. redis-slave1 と redis-slave2 コンテナを作成する

docker run -itd --name redis-slave1 --net haveyb-network -p 6381:6379 --ip 172.10.0.3 docker-test
docker run -itd --name redis-slave2 --net haveyb-network -p 6382:6379 --ip 172.10.0.4 docker-test

4. redis-masterコンテナを構成する

(1) redis-masterコンテナに入る

docker exec -it redis-master bash

注: コンテナを終了してください `exit`

(2)redis.conf設定ファイルを変更する

/etc/redis.conf をviで開きます

(3)パラメータbind127.0.0.1を0.0.0.0に変更する

0.0.0.0 をバインド

(4)マスターRedisパスワードを設定する

requirepass パスワード設定

(5)メインのRedisを起動する

redis-server /etc/redis.conf &

(6) redis-cli

redis-cli
パスワード設定を認証する

5. redis-slave1 を設定する

(1) redis-slave1コンテナに入る

docker exec -it redis-slave1 bash

(2)redis.conf設定ファイルを変更する

/etc/redis.conf をviで開きます

(3)パラメータbind127.0.0.1を0.0.0.0に変更する

0.0.0.0 をバインド

(4) masterauthを設定し、次のコードを追加します(マスターRedisがパスワードを設定した後、このパラメータはRedisからの接続を確認するために必要です)

マスター認証パスワード設定

(5)slaveofを設定する(マスターredisのIPとポートを設定する)

スレーブ 172.10.0.2 6379

(5)Redisから起動

redis-server /etc/redis.conf &

(6) Redisクライアント

redis-cli

6. redis-slave2を設定する

redis-slave1と同じ設定

7. redis-cliで「info replication」を実行してマスタースレーブ情報を表示します。

redisマスター

127.0.0.1:6379> 情報レプリケーション
# レプリケーション
役割:マスター
接続スレーブ:2
スレーブ0:ip=172.10.0.3、ポート=6379、状態=オンライン、オフセット=3105、ラグ=1
スレーブ1:ip=172.10.0.4、ポート=6379、状態=オンライン、オフセット=3105、ラグ=1
マスター返信ID:a3a43b1957bc5b9f18cb3004301990085e49b0d1
マスター返信ID2:0000000000000000000000000000000000000000000
マスター_repl_オフセット:3105
秒_repl_offset:-1
repl_backlog_active:1
レプリケーションバックログサイズ:1048576
repl_backlog_first_byte_offset:1
レプリケーションバックログ履歴長:3105
127.0.0.1:6379>

redisスレーブ1

127.0.0.1:6379> 情報レプリケーション 
# レプリケーション
役割:スレーブ
マスターホスト:172.10.0.2
マスターポート:6379
マスターリンクステータス:アップ
マスター_最終_io_秒前: 1
マスター同期進行中:0
スレーブ_repl_オフセット:3203
スレーブ優先度:100
スレーブ読み取り専用:1
接続されたスレーブ:0
マスター返信ID:a3a43b1957bc5b9f18cb3004301990085e49b0d1
マスター返信ID2:0000000000000000000000000000000000000000000
マスター_repl_オフセット:3203
秒_repl_offset:-1
repl_backlog_active:1
レプリケーションバックログサイズ:1048576
repl_backlog_first_byte_offset:1
レプリケーションバックログ履歴長:3203
127.0.0.1:6379>

8. redis-masterにキーを書き込むと、redis-slave1とredis-slave2はすでにそれを取得できます。

これで、docker を使用して redis マスター/スレーブを構築する手順に関するこの記事は終了です。docker を使用して redis マスター/スレーブを構築する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker ベースの Redis マスタースレーブ クラスタの実装
  • Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明
  • Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する
  • CentOS 6 は Docker を使用して Redis マスター スレーブ データベース操作例を展開します
  • Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明
  • Docker ベースの Redis マスタースレーブ + センチネルの構築例

<<:  CSS のサイズ単位についての簡単な説明

>>:  フロントエンドJavaScriptのクラス

推薦する

JavaScriptプロトタイプチェーン図のまとめと実践

目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...

CSSフローティングとフローティング解除について

フロートの定義要素を通常のドキュメント フローから外し、要素を左また​​は右に近づけます。親要素の端...

Docker ベースの Selenium 分散環境の構築

1.画像をダウンロードするdocker pull selenium/hub docker pull ...

自動的にフォーカスを取得する要素入力ボックスの実装

最近のプロジェクトでフォームを作成するときに、コメント ボックスまで自動的にスクロールし、コメント ...

TypeScript の条件型に関する詳細な読書と実践記録

目次ジェネリック型での条件型の使用ツールタイプ脱出ポッド矢印関数で条件型を使用する型推論による条件型...

主軸上のFlex子要素の比率を制御する方法

背景フレックス レイアウトにより、配置とスペースの割り当てがより効果的に実現されます。最近、flex...

Mysql-connector-java ドライバのバージョン問題の概要

Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...

MySQLへの外部ネットワークアクセスを許可し、MySQLアカウントのパスワードを変更する方法

mysqlのrootアカウント、普段はlocalhostか127.0.0.1で接続しています。会社の...

Linux スクリプトの基礎を詳しく紹介

目次1. スクリプトvim環境2. シェルスクリプトで環境を定義する方法3. シェルスクリプト内の翻...

Linux自動ログイン例の説明

インターネット上には、expect を使用して自動ログインを実現するスクリプトが多数存在しますが、明...

Vue3は独自のページングコンポーネントをカプセル化します

この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...

MySql 学習 3 日目: データ テーブル間の接続とクエリの詳細

主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...

MySQL分離の使用手順を読む

現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...