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

推薦する

LINUX でプロセスを表示する 4 つの方法 (要約)

プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...

モバイル開発チュートリアル: ピクセル表示の問題の概要

序文モバイル端末の開発の過程で、モバイル端末のディスプレイはデスクトップ端末のディスプレイとは一般的...

mysql エラー 1045 (28000) - ユーザーへのアクセスが拒否される問題を解決する方法

問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...

Vueの監視プロパティの詳細

目次1.watchは一般的なデータ(数値、文字列、ブール値)の変更を監視します。 1. 数値2. 文...

Vue フロントエンド開発における keepAlive の使用方法の詳細な説明

目次序文keep-avlive フック関数keep-avliveはどのコンポーネントをキャッシュする...

Dayjs を使用して Vue で一般的な日付を計算する方法

vue を使用してプロジェクトを開発する場合、フロントエンドでは次のような日付と時刻を計算する必要が...

vue-router 履歴モード サーバー側設定プロセス記録

歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...

Linux サーバーでの MySQL インストール情報の表示

mysql のインストール情報を表示します。 #ps -ef | grep mysql usr/bi...

ファイルをアップロードするときに enctype フィールドを使用する理由は何ですか?

FORM 要素の enctype 属性は、フォーム データがサーバーに送信されるときに使用されるエン...

CSS3 はアニメーション属性を使用してクールな効果を実現します (推奨)

animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

Vueはechartを使用してラベルと色をカスタマイズします

この記事では、参考までに、echartを使用してタグと色をカスタマイズするVueの具体的なコードを紹...

SQL文の最適化の一般的な手順の詳細な説明

序文この記事では主に、SQL ステートメントの最適化の一般的な手順について説明します。これは、参考と...

CSS3 フィルター属性の使い方の紹介

1. はじめにフロントエンドページのアニメーション効果を記述する場合、filter 属性は多かれ少な...

MySQL5.6.17データベースをインストールするときにMy.iniファイルを構成する方法

最近、プロジェクトの開発時に MySql データベースを使用しました。MySql に関する記事をいく...