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コーディングリソース更新機能強化

推薦する

CSSをインポートする方法に関する詳細な洞察の要約

CSS の開発履歴についてはここでは紹介しません。ブログを書いている理由の 1 つは、フロントエンド...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

Linux システムの .bash_profile ファイルの詳細な説明

目次1. 環境変数$PATH: 2. 環境変数を変更します。 3. bash_profileの目的要...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

Mysql5.7 で中国語の文字化けの問題を解決する

MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

CSS の高さの崩壊問題の解決

1. 崩壊度が高いドキュメント フローでは、親要素の高さはデフォルトで子要素によって拡張されます。つ...

RPM パッケージを使用して MySQL 5.7.18 をインストールするチュートリアル

システム:セントOS7 RPM パッケージ: mysql-コミュニティクライアント-5.7.18-1...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

Vueは3段階のナビゲーション表示と非表示を実装します

この記事では、3階層ナビゲーションの表示と非表示を実現するためのVueの具体的なコードを例として紹介...

ウェブデザインには目的、アイデア、思考、そして粘り強さがなければならない

<br />はじめに:このアイデアは、数日前に上級ウェブデザインの次の記事を考えていると...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...

Centos7でのMySQLインストールチュートリアル

MySQLインストールチュートリアル、参考までに具体的な内容は次のとおりです。 1. ダウンロードY...

Vueタイマーの詳細な使い方

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...