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

推薦する

W3C チュートリアル (15): W3C SMIL アクティビティ

SMIL は、Web にタイミングとメディアの同期のサポートを追加します。 SMIL は、Web に...

XHTML チュートリアル、XHTML の基礎を簡単に紹介します

<br />この記事では、XHTMLとXHTMLの基礎知識について簡単に紹介します。 X...

Windows 7 環境での Docker 高速ビルドと Alibaba Cloud コンテナ高速化構成の詳細な説明

前回の Docker に関する記事では、MAC システムでの構築について説明しました。この記事では、...

MySQL 8.0 のデフォルトのデータディレクトリを変更する (設定なしの簡単な操作)

使用シナリオ: Alibaba Cloud を使用しており、データディスクを別途購入しました (大容...

ウェブページを自動更新するための 3 つのコード

実際、この効果を実現するのは非常に簡単で、この効果は特殊効果と呼ぶことすらできません。次のコードを ...

JavaScript タイピングゲーム

この記事では、タイピングゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...

HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

<br />ヘッダーはテーブルの最初の行を参照します。ヘッダー内のテキストは中央揃えで太...

CSS3 で transform を使用した場合のフォントぼかしの解決方法の詳細な説明

この質問は非常に奇妙なので、あまり多くを語らずにコードに直接進みます。 .g-ダイアログラッパー{ ...

VueプロジェクトにPWAを導入する手順

目次1. 依存関係をインストールする2. vue.config.js ファイルで pwa を設定しま...

MySQL InnoDB のトランザクション特性を確保するにはどうすればよいですか?

序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

DockerにRedisコンテナをインストールするための実装手順

目次DockerにRedisをインストールする1. Redisイメージを見つける2. Redisイメ...

JavaScript 以外の静的リソースのバンドルの詳細

目次1. パッケージングツールでのカスタムインポート2. ブラウザとバンドラの共通インポート構文3....