Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

1. 背景

現在、ゼロトラスト セキュリティ ゲートウェイに取り組んでおり、認証キャッシュ サーバーとして Redis を使用する必要があります。ゲートウェイ サーバーは複数のクラスターに分散されているため、コンピューター ルーム間の認証を毎回実装するのは簡単ではありません。そのため、Redis のマスター スレーブ同期を使用して、プロセスを記録する必要があります。これが、必要な学生の参考になれば幸いです。

2. 操作手順

  • Dockerをインストールする
  • 主なサービス構成
  • サービス構成から
  • 同期効果を確認する

3. Dockerをインストールする

この記事では主にマスタースレーブ構成を記録するプロセスについて尋ねているので、Redisサービスを構築するために最も単純なdockerメソッドを使用します。dockerをインストールするコマンドは次のとおりです。

curl -sSL https://get.daocloud.io/docker | sh

コマンドを実行すると、次の図に示すインターフェースが表示されます。

上の画像では、dockerに関する関連情報がいくつか表示されています。dockerが正常にインストールされているかどうかを確認するには、docker infoコマンドを使用することもできます。実行コマンドは次のとおりです。

docker情報

コマンドを実行すると、返される情報は下図のようになります。

上の画像では、Dockerのバージョン情報が20.10.3となっており、現時点での最新バージョンであることが確認できます。インストールが成功していることが確認できました。

4. 主なサービス構成

次に、dockerを使用してRedisサービスをインストールする必要があります。実際には、Redisイメージを直接使用するのは少し異常であることがわかったので、centosイメージを使用してコンテナにRedisをインストールしました。コンテナを実行するコマンドは次のとおりです。

docker run -d -it -p 16379:6379 --name redis_master centos:7

コマンドを実行したら、コンテナに入ります。コンテナに入るコマンドは次のとおりです。

docker exec -it redis_master bash

コマンドを実行すると、返される情報は下図のようになります。

上の画像では、コンテナに正常に入ったことがわかります。次に、コンテナにRedisをインストールする必要があります。Redisをインストールするコマンドは次のとおりです。

yum install -y epel-release && yum install -y redis

コマンドを実行すると、返される情報は下図のようになります。

上の図からわかるように、Redisがインストールされています。次に、新しいRedisマスターライブラリ設定ファイルを作成する必要があります。実行コマンドは次のとおりです。

vi ~/master.conf

設定ファイルは以下のとおりです。以下の設定ファイルをコピーし、vi編集ウィンドウに貼り付けます。

#0.0.0.0 をバインドします
保護モード はい
ポート 6379
TCPバックログ511
unixsocket /tmp/redis_auth.sock
unixsocketperm 777
タイムアウト 0
TCP キープアライブ 300
悪魔化する はい
監視付き自動車
pidファイル /var/run/redis_auth.pid
ログレベルデバッグ
ログファイル /tmp/redis_auth.log
データベース 16
保存 ""
stop-writes-on-bgsave-error はい
rdb圧縮はい
rdbchecksum はい
dbファイル名 dump.rdb
ディレクトリ /var/lib/redis
パスワード 123123123
スレーブサーブ古いデータ はい
スレーブ読み取り専用 はい
repl-ディスクレス同期なし
repl-ディスクレス同期遅延 5
repl-disable-tcp-nodelay なし
スレーブ優先度 100
追加のみ はい
ファイル名「funfe.aof」を追加します
毎秒追加同期
書き換え時にfsyncを追加しない
自動 Aof 書き換え率 100
自動 aof 書き換え最小サイズ 512 MB
aof-load-truncated はい
lua 時間制限 5000
slowlog-log-slower-than-10000 ログが 10000 より遅い
スローログ最大長 128
レイテンシモニターしきい値 0
キースペースイベントを通知する ""
ハッシュ最大 ziplist エントリ 512
ハッシュ最大 ziplist 値 64
リストの最大 ziplist サイズ -2
リスト圧縮深度 0
最大整数セットエントリ数 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-スパース最大バイト数 3000
アクティブリハッシュ はい
10ヘルツ
aof-rewrite-incremental-fsync はい

vi編集ウィンドウに貼り付けると、以下のようになります。

貼り付けて確認したら、:wq! コマンドを使用して保存し、Redis プログラムを起動します。起動コマンドは次のとおりです。

redis-server `/redis.conf

上記の起動コマンドでは、下図に示すように、設定ファイルのパスを指定する必要があります。

上の図では、Redis サービスが開始されていることがわかります。

5. サービス構成から

次に、Redisスレーブサーバーを再度起動する必要があります。コンテナを実行するコマンドは次のとおりです。

docker run -d -it -p 26379:6379 --name redis_slave centos:7

上記のコマンドでは、同一ホスト上にあるため、マスターライブラリのポートと競合しないように、ホストポートを26379に設定しました。起動が完了したら、スレーブライブラリコンテナに入ることができます。実行するコマンドは次のとおりです。

docker exec -it redis_slave bash

コマンドを実行した後、新しいRedis設定ファイルも作成する必要があります。実行するコマンドは次のとおりです。

vi ~/redis.conf

設定ファイルには、スレーブライブラリの設定コードを追加する必要があります。設定サンプルは次のとおりです。

127.0.0.1 をバインド
保護モード はい
ポート 6379
TCPバックログ511
unixsocket /tmp/redis_auth.sock
unixsocketperm 777
タイムアウト 0
TCP キープアライブ 300
悪魔化する はい
監視付き自動車
pidファイル /var/run/redis_6379.pid
ログレベル通知
ログファイル /tmp/redis.log
データベース 16
保存 ""
stop-writes-on-bgsave-error はい
rdb圧縮はい
rdbchecksum はい
dbファイル名 dump.rdb
ディレクトリ /var/lib/redis
奴隷 172.23.193.148 16379
マスター認証 123123123
スレーブサーブ古いデータ はい
スレーブ読み取り専用 はい
repl-ディスクレス同期なし
repl-ディスクレス同期遅延 5
repl-disable-tcp-nodelay なし
スレーブ優先度 100
追加のみ はい
ファイル名「funfe.aof」を追加します
毎秒追加同期
書き換え時にfsyncを追加しない
自動 Aof 書き換え率 100
自動 aof 書き換え最小サイズ 512 MB
aof-load-truncated はい
lua 時間制限 5000
slowlog-log-slower-than-10000 ログが 10000 より遅い
スローログ最大長 128
レイテンシモニターしきい値 0
キースペースイベントを通知する ""
ハッシュ最大 ziplist エントリ 512
ハッシュ最大 ziplist 値 64
リストの最大 ziplist サイズ -2
リスト圧縮深度 0
最大整数セットエントリ数 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-スパース最大バイト数 3000
アクティブリハッシュ はい
10ヘルツ
aof-rewrite-incremental-fsync はい

構成サンプルをコピーすると、ウィンドウは次のようになります。

貼り付けて確認したら、:wq! コマンドを使用して保存し、Redis プログラムを起動します。起動コマンドは次のとおりです。次に、Redis サービスをインストールします。インストールコマンドは次のとおりです。

yum install -y epel-release && yum install -y redis

コマンドを実行すると、返される情報は下図のようになります。

上の図では、スレーブライブラリのRedisもインストールされていることがわかります。次に、redis-serverコマンドを使用してスレーブライブラリサーバーを起動します。コマンドは下の図に示されています

redis サーバー redis.conf

コマンドを実行すると、返される情報は下図のようになります。

上の画像では、Redis が起動していることがわかります。次に、効果を確認します。

6. 結果の検証

検証方法は主に、マスター データベースにデータを設定し、スレーブ データベースも同期的に更新されるかどうかを観察することです。

6.1 予備検証

ただし、この操作は少し面倒です。まずはスレーブライブラリの起動ログを確認したほうがよいでしょう。起動ログを確認するコマンドは次のとおりです。

/tmp/redis.log を cat します

コマンドを実行すると、次の図に示すようにRedisログ情報が返されます。

上図のログ情報から、スレーブライブラリがマスターライブラリの情報をローカルに正常にコピーしたことがわかります。

6.2 同期チェック

ログは成功を示していますが、マスタースレーブ同期が成功したかどうかは実際の効果に依存します。ここで、マスターサーバーのターミナルウィンドウに戻り、redisコマンドコンソールに入ります。コンソールに入るコマンドは次のとおりです。

redis-cli -a 123123123

コマンドが実行されると、redisコマンド操作を実行できます。ここでは、テストのキーと値のペアを123123に設定しました。設定コマンドは次のとおりです。

セットテスト 123123

コマンドを実行すると、返される情報は下図のようになります。

上の図では、Redisがキーと値のペアが正常に設定されたことを通知していることがわかります。次に、スレーブライブラリのターミナルウィンドウに戻り、Redisコンソールに入り、次のコマンドを実行します。

redis-cli -a 123123123

コマンドを実行した後、keysコマンドを使用して現在のスレーブライブラリのキーと値のペアを表示できます。コマンドは次のとおりです。
キー *

コマンドを実行すると、返される情報は下図のようになります。

上の図では、テストデータが正常にコピーされたことがわかります。

これで、Docker を使用した Redis マスタースレーブ レプリケーションに関するこの記事は終了です。Docker Redis マスタースレーブ レプリケーションの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  MySQL トランザクション分離レベルと MVCC の詳細な説明

>>:  Zenコーディングリソース更新機能強化

推薦する

MySql の知識ポイント: トランザクション、インデックス、ロックの原則、使用状況の分析

この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...

Vueルーティングコンポーネントでパラメータを渡す8つの方法の詳細な説明

シングルページアプリケーションを開発する場合、特定のルートを入力し、パラメータに基づいてサーバーから...

パゴダパネルとドッカーを使用して Gogs をインストールするプロセス全体

目次1 Baota Software StoreにDockerをインストールする2 ゴグスイメージを...

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成expressによって自動的に作成されたディレクトリを例にとると、ディレク...

MySQL のユーザー権限を照会する方法の概要

MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...

VMwareでCentOSがインターネットにアクセスできない問題を素早く解決

昨日、VMware に CentOS7 をインストールしました。Tomcat パッケージを転送するた...

フォームを送信した後、別のファイルに移動する

<br />質問:特定のファイルにジャンプするには、HTML でどのように記述すればよい...

この記事では、Vue 3.0 レスポンシブの使い方を説明します。

目次ユースケースリアクティブAPI関連プロセス反応的なcreateReactiveObjectはレス...

JavaScript配列の一般的なメソッドの詳細な説明

目次一般的な配列メソッドポップ()シフト解除()シフト()スライス()スプライス()配列から重複した...

外部ファイル(js/vbs/css)をインポートするときに文字化けを回避する方法

ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...

nginx パニック問題の解決方法の詳細な説明

nginx パニック問題に関しては、まず nginx の起動プロセス中に、マスター プロセスが構成フ...

sql_mode を変更する際の MySQL エラーの解決方法

目次ERR 1067による殺人事件2番目の問題の原因はsql_modeです3. sql_modeを設...

jQuery ステップ進行軸プラグインの実装コード

毎日のjQueryプラグイン - ステップ進捗軸 ステップ進捗軸ツール系のサイトでは入門チュートリア...

Element+vueを使用して開始時間と終了時間の制限を実装する

この記事の例では、Element+vueを使用して開始と終了の時間制限を実装するための具体的なコード...