Dockerデプロイメント redis高可用性(Sentinel Mode)
ディレクトリ
I. はじめに
センチネルパターンは、まずRedisがセンチネルのコマンドを提供し、それがプロセスとして独立して動くという特殊なパターンである。センチネルは、コマンドを送信してRedisサーバーの応答を待つことで、複数のRedisインスタンスが動作していることを監視するという原理である。
この記事では、dockerとredis-sentinelをベースにした高可用性redisクラスタの構築について説明します。多くの場合、redis-sentinelも高可用性にする必要があるので、ここではまずredisのマスターと2つのスレーブ環境、さらにredisマスターを監視するredis-sentinelを3つ構築しています。
公式の推奨では、健全なクラスタデプロイメントには少なくとも3つのSentinelのインスタンスが必要とされています。
II. 環境の準備
<テーブル ノードIP ノード名 システム Dockerのインストールとバージョン ポートを開く 192.168.51.187 ノード187 CentOS 7 Docker Engine - コミュニティ 19.03.14 7001, 27001 192.168.51.226 ノード226 CentOS 7 Docker Engine - コミュニティ 19.03.14 7002, 27002 192.168.51.236 ノード236 CentOS 7 Docker Engine - コミュニティ 19.03.14 7003, 27003説明:インストール手順に従い、4つのノードにそれぞれDockerをインストールします。 https://blog.csdn.net/DZP_dream/article/details/104670943
III. 展開の手順
1.画像を引っ張ってきて、フォルダを作成(3つのノードに分かれて実行)
Pull the image
docker pull redis
Create the folder
mkdir redis
2. 設定ファイル
ノード1
redis7001.confのリソースアドレスです。 https://download.csdn.net/download/DZP_dream/13764030?spm=1001.2014.3001.5503
sentinel27001.confリソースのアドレスです。 https://download.csdn.net/download/DZP_dream/13764042?spm=1001.2014.3001.5503
ノードIIです。
redis7002.confのリソースアドレスです。 https://download.csdn.net/download/DZP_dream/13764033?spm=1001.2014.3001.5503
sentinel27002.conf https://download.csdn.net/download/DZP_dream/13764049?spm=1001.2014.3001.5503
ノード3です。
redis7003.confのリソースアドレスです。 https://download.csdn.net/download/DZP_dream/13764039?spm=1001.2014.3001.5503
sentinel27003.confリソースのアドレスです。 https://download.csdn.net/download/DZP_dream/13764054?spm=1001.2014.3001.5503
設定ファイルでは、以下を変更します。
3.redisのインストール(3つのノードでそれぞれ実行)。
#redisInstallation
# node1 execution
[root@node187 redis]# sudo docker run -d --restart=always \
-p 7001:7001 \
-v /home/redis/redis1/redis7001.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis/redis1/data:/data \
--name=redis1 redis:latest redis-server /usr/local/etc/redis/redis.conf
#node2 execute
[root@node226 redis]# sudo docker run -d --restart=always \
-p 7002:7002 \
-v /home/redis/redis2/redis7002.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis/redis2/data:/data \
--name=redis2 redis:latest redis-server /usr/local/etc/redis/redis.conf
#node3 execute
[root@node236 redis]# sudo docker run -d --restart=always -p 7003:7003 \
-v /home/redis/redis3/redis7003.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis/redis3/data:/data \
--name=redis3 redis:latest redis-server /usr/local/etc/redis/redis.conf
4. Sentinelのインストール(3つのノードでそれぞれ実行される)
#Sentinel
# Execute on node one
[root@node187 redis]# sudo docker run -d --restart=always \
-p 27001:27001 \
-v /home/redis/redis27001/sentinel27001.conf:/usr/local/etc/redis/sentinel.conf \
-v /home/redis/redis27001/data:/data \
--name=redis27001 redis:latest redis-sentinel /usr/local/etc/redis/sentinel.conf
# Execute on node two
[root@node226 redis]# sudo docker run -d --restart=always \
-p 27002:27002 \
-v /home/redis/redis27002/sentinel27002.conf:/usr/local/etc/redis/sentinel.conf \
-v /home/redis/redis27002/data:/data \
--name=redis27002 redis:latest redis-sentinel /usr/local/etc/redis/sentinel.conf
# Execute on node three
[root@node236 redis]# sudo docker run -d --restart=always \
-p 27003:27003 \
-v /home/redis/redis27003/sentinel27003.conf:/usr/local/etc/redis/sentinel.conf \
-v /home/redis/redis27003/data:/data \
--name=redis27003 redis:latest redis-sentinel /usr/local/etc/redis/sentinel.conf
5. インストールを確認する
#node1
[root@node187 redis]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a70a484a8f7 redis:latest "docker-entrypoint.s..." 29 seconds ago Up 23 seconds 6379/tcp, 0.0.0.0:27001->27001/tcp redis27001
abfb008b2c61 redis:latest "docker-entrypoint.s..." 5 minutes ago Up 5 minutes 6379/tcp, 0.0.0.0:7001->7001/tcp redis1
#node2
[root@node226 redis]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07201fab4202 redis:latest "docker-entrypoint.s..." 21 seconds ago Up 20 seconds 6379/tcp, 0.0.0.0:27002->27002/tcp redis27002
ad247183f7ce redis:latest "d
6. redis の状態を確認する
[root@node187 redis1]# docker exec -it redis1 bash
# master container query cluster status
root@e0fcaafbb45a:/data# redis-cli -a aAzhjy@123 -p 7001
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:7001> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.51.226,port=7002,state=online,offset=670505,lag=1
slave1:ip=192.168.51.236,port=7003,state=online,offset=670791,lag=1
master_replid:705a47c71c1c661af4e08b1861b800652ec932e8
master_replid2:000000000000000000000000000000000000000000
master_repl_offset:670791
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:670791
7. セントリーモニタリングの表示
[root@node187 redis1]# docker exec -it redis27001 bash
root@30d656aaceab:/data# redis-cli -p 27001
# view the cluster master library
127.0.0.1:27001> sentinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.51.187"
5) "port"
6) "7001"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
# View cluster slave library
127.0.0.1:27001> sentinel slaves mymaster
1) 1) "name"
2) "192.168.51.226:7002"
3) "ip"
4) "192.168.51.226"
5) "port"
6) "7002"
2) 1) "name"
2) "192.168.51.236:7003"
3) "ip"
4) "192.168.51.236"
5) "port"
6) "7003"
8. プロジェクトでアクセスを設定する
9. クライアントアクセスによる表示
IV. Redisビジュアルインターフェースのインストール
1. データベースredis-managerの作成
ノード2のmysqlデータベースにredis-managerというデータベースを作成し、redisクラスタの情報を格納します。
2. redis-managerのインストール
sudo docker run -d --name redis-manager \
-p 8048:8182 \
-e DATASOURCE_URL='jdbc:mysql://192.168.51.226:3306/redis-manager?characterEncoding=UTF-8&useUnicode=true&serverTimezone= Asia/Shanghai' \
-e DATASOURCE_USERNAME='root' \
-e DATASOURCE_PASSWORD='aAzhjy@123' \
reasonduan/redis-manager
3. クラスタの状態を確認する
Address: http://192.168.51.226:8048
アカウントパスワード: admin/admin
V. テスト
1. redisサービスの停止
関連
-
[解決済み】127.0.0.1:6379 で Redis に接続できませんでした。homebrewで接続が拒否された
-
[解決済み] MISCONF RedisがRDBスナップショットを保存するように設定されている。
-
[解決済み] エラーです。スタンナルメソッドでElastic cacheに接続中、ピアによって接続がリセットされました。
-
[解決済み] Redis Dockerの接続が拒否されました
-
[解決済み] Redisインスタンスのバージョンを確認する方法は?
-
[解決済み] Zookeeper vs インメモリデータグリッド vs Redis
-
を作ってください。*** ターゲット "install "を作るためのルールがありません。停止
-
error:[Errno 98] アドレスが既に使用されている場合の解決策
-
Linux installation of redis common error server.c:3318:16: error: 'struct redisServer' has no member named 'loading '
-
redis の高可用性 --- マスタースレーブレプリケーション、センチネル、クラスタ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン