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使用中に接続数が超過していることが判明しました~~~~ [root@linux-node...

MySQL トランザクション分離はどのように実現されますか?

目次同時シナリオ書き込む読む読む読み取り-書き込みと書き込み-読み取りMySQL のロック行レベルロ...

MySQL 8.0 バージョンで getTables がすべてのデータベース テーブルを返す問題の簡単な分析

序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

包括的なウェブサイト評価ソリューション

<br />「XXXのウェブサイトを見てみませんか?」といった質問をされることもあります...

XHTML CSS ウェブサイトデザインの利点と問題点

XHTML は現在国際的に推奨されている標準的な Web サイト設計言語です。Webjx.com も...

Prometheusコンテナのデプロイメントのための実用的なソリューション

環境ホスト名IPアドレス仕えるプロメテウス192.168.237.137プロメテウス、グラファナノー...

Win10 VM 仮想マシンに Mac OS10.14 を完璧にインストールする (グラフィック チュートリアル)

最近、Apple の記者会見を見てとても興奮したので、Mac システムを体験して Apple の素晴...

見落とされがちなMETAタグの特殊効果(ページ遷移効果)

Web デザインで js を使用すると、多くのページ効果を実現できますが、HTML タグの META...

MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要

目次MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要1. 遅...

Echatsチャートの大画面適応を実装する方法

目次説明する成し遂げるプロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりです要約す...

MySQL 8 の新機能: 非表示のインデックス

背景インデックスは諸刃の剣です。クエリ速度は向上しますが、DML 操作も遅くなります。結局のところ、...

win10 での mysql5.7.21 の詳細なインストール手順

この記事では、MySQL 5.7.21のインストールとインストール中に発生した問題を参考までに紹介し...

JS 面接の質問: forEach はループから抜け出すことができますか?

この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...

DockerはホストのMysql操作に接続します

今日、会社のプロジェクトでは docker を設定する必要があります。Windows に正常にインス...