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のクラス

推薦する

Vue で @person 関数を実装する方法

この記事ではvueを使用し、マウスクリックイベントといくつかの小さなページの最適化を追加します。 基...

JavaScriptプロトタイプチェーンを理解する

目次1. プロトタイプとプロトタイプチェーンの平等関係を理解する2: プロトタイプとプロトタイプ チ...

React クラスコンポーネントのライフサイクルと実行順序

1. Reactコンポーネントを定義する2つの方法1. 関数コンポーネント。単純な関数コンポーネント...

Navicat を MySQL に接続するときに発生する 2059 エラーの解決方法

最近、Djangoを学習しているときにデータベースを使用する必要があったため、MySQLで使用するた...

便利で使いやすいウェブアプリケーションを設計するための 10 のヒント

より使いやすい Web アプリケーションを設計するための 10 のヒントをご紹介します。ヒント1: ...

MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...

Docker で Ubuntu に Python3 と Pip をインストールする際の問題

文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...

Centos7 に Zabbix3.0 をインストールするための非常に詳細な手順

序文最近、同社の業務の一部がコンピュータルームに移転し、ホストリソースの監視と管理をより便利に行うた...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

uniAppエディタWeChatスライド問題について

ユニアプリアプレットはWeChatでも同様のドロップダウン問題を抱えることになる解決策は、app.v...

Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル

背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...

DIV共通属性コレクション

1. 物件リストコードをコピーコードは次のとおりです。色: #999999 テキスト色フォントファミ...

2015-2016年に主流となるインタラクティブ体験のトレンド

5月の最も重要なインタラクティブデザイン記事!今年、Baiduのデザイナーは体験の観点から出発し、大...

JS における for、for...in、for...of、forEach の違いと使用例

forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...

MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。

Tencent Cloud上に構築されたMySQLは、開発用コンピュータでNavicatを使用して...