1. Redisイメージを取得する
2. それぞれポート6379、6380、6381を使用して3つのRedisコンテナサービスを起動します。 docker run --name redis-6379 -p 6379:6379 -d redis docker run --name redis-6380 -p 6380:6379 -d redis docker run --name redis-6381 -p 6381:6379 -dredis 3. コンテナを表示する [tcy@tcy1 ~]$ docker ps -a コンテナID イメージ コマンド 作成ステータス ポート名 a9fa77adc598 daocloud.io/library/redis "docker-entrypoint.s 2 時間前 2 時間前 0.0.0.0:6381->6379/tcp redis-6381 6ee2f2f007e6 daocloud.io/library/redis "docker-entrypoint.s 2 時間前 2 時間前にアップ 0.0.0.0:6380->6379/tcp redis-6380 ab54741166e1 daocloud.io/library/redis "docker-entrypoint.s 3 時間前 3 時間前にアップ 0.0.0.0:6379->6379/tcp redis-6379 4. テストコンテナ、成功 docker exec -it ab54741166e1 redis-cli: コンテナに入ります [root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli 127.0.0.1:6379> b tcy を設定 わかりました 127.0.0.1:6379> 取得b 「tcy」 127.0.0.1:6379> 終了[root@tcy1 tcy]# 5. Redisクラスタ構成を開始する 5.1. コンテナイントラネットのIPアドレスを確認する
3 つの Redis のイントラネット IP アドレスは次のとおりです。 redis-6379: 172.17.0.1:6379 redis-6380: 172.17.0.2:6379 レディス-6381:172.17.0.3:6379 5.2. Dockerコンテナに入り、現在のRedisロール(マスターまたはスレーブ)を確認します。 [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash ルート@ab54741166e1:/data# redis-cli 127.0.0.1:6379> 情報レプリケーション # レプリケーション 役割:マスター 接続されたスレーブ:0 マスター返信ID:d43d1ae8cde6cb084220e18b926aba79e0bb2504 マスター返信ID2:0000000000000000000000000000000000000000000 マスター_repl_オフセット:0 秒_repl_offset:-1 repl_backlog_active:0 レプリケーションバックログサイズ:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 127.0.0.1:6379>終了 root@ab54741166e1:/data# 終了 出口 現在、3つすべてがマスター状態です 5.3. redis-cli コマンドを使用して、redis-6380 と redis-6381 のホストを 172.17.0.1:6379 に変更します。 [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash //redis-6380 ルート@a9fa77adc598:/data# redis-cli 127.0.0.1:6379>スレーブ172.17.0.1 6379 わかりました 127.0.0.1:6379>終了 root@a9fa77adc598:/data# 終了 出口 [root@tcy1 tcy]# docker exec -it 6ee2f2f007e6 /bin/bash //redis-6381 ルート@6ee2f2f007e6:/data# redis-cli 127.0.0.1:6379>スレーブ172.17.0.1 6379 わかりました 127.0.0.1:6379>終了 5.4. redis-6379 にすでに 2 つのスレーブがあるかどうかを確認します。connected_slaves: 2、yes [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash ルート@ab54741166e1:/data# redis-cli 127.0.0.1:6379> 情報レプリケーション # レプリケーション 役割:マスター 接続スレーブ:2 スレーブ0:ip=172.17.0.3、ポート=6379、状態=オンライン、オフセット=378、ラグ=1 スレーブ1:ip=172.17.0.2、ポート=6379、状態=オンライン、オフセット=378、ラグ=0 マスター返信ID:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d マスター返信ID2:0000000000000000000000000000000000000000000 マスター_repl_オフセット:378 秒_repl_offset:-1 repl_backlog_active:1 レプリケーションバックログサイズ:1048576 repl_backlog_first_byte_offset:1 レプリケーションバックログ履歴長:378 127.0.0.1:6379>終了 root@ab54741166e1:/data# 終了 出口 5.5. Sentinel の設定 設定用の3つのRedisコンテナを入力し、コンテナのルートディレクトリにsentinel.confファイルを作成します。 ファイルの内容は次のとおりです: sentinel monitor mymaster 172.17.0.1 6379 1 [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash root@a9fa77adc598:/data# cd / && sentinel.conf をタッチします root@a9fa77adc598:/# vim /sentinel.conf bash: vim: コマンドが見つからない場合 解決策: 1. apt-get update 2. apt-get install vim 最後に、Redis Sentinel を起動します。 ルート@a9fa77adc598:/# redis-sentinel /sentinel.conf 342:X 24 Jun 11:37:58.934 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo 342:X 24 Jun 11:37:58.957 # Redis バージョン=4.0.10、ビット=64、コミット=00000000、変更=0、pid=342、開始しました 342:X 24 Jun 11:37:58.958 # 設定が読み込まれました 342:X 24 Jun 11:37:58.959 # 最大クライアント数 10000 を要求しましたが、最大ファイル記述子数は少なくとも 10032 必要です。 342:X 24 Jun 11:37:58.959 # OS エラーのため、サーバーは最大オープンファイルを 10032 に設定できません: 操作は許可されていません。 342:X 24 Jun 11:37:58.960 # 現在開いているファイルの最大数は 4096 です。 ulimit が低いため、maxclients は 4064 に減らされました。 maxclients をさらに増やす必要がある場合は、「ulimit -n」を増やしてください。 _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 4.0.10 (00000000/0) 64 ビット .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) センチネルモードで実行中 |`-._`-...-` __...-.``-._|'` _.-'| ポート: 26379 | `-._ `._ / _.-' | PID: 342 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' 「-._ _.-」 「-.__.-」 342:X 24 Jun 11:37:59.068 # 警告: /proc/sys/net/core/somaxconn が 128 という低い値に設定されているため、TCP バックログ設定 511 を適用できません。 342:X 24 Jun 11:37:59.089 # センチネルIDはdfd5a5bfe1036b1df3395c4ba858329034fc5b7eです 342:X 6月24日 11:37:59.091 # +モニター マスター mymaster 172.17.0.1 6379 クォーラム 1 342:X 6月24日 11:37:59.110 * +スレーブ スレーブ 172.17.0.3:6379 172.17.0.3 6379 @ mymaster 172.17.0.1 6379 342:X 6月24日 11:37:59.115 * +スレーブ スレーブ 172.17.0.2:6379 172.17.0.2 6379 @ mymaster 172.17.0.1 6379 342:X 6月24日 11:39:27.601 * +sentinel sentinel ba9b0d0539d8273edfcbd922fe138f50daa78bbb 172.17.0.2 26379 @ mymaster 172.17.0.1 6379 342:X 6月24日 11:41:59.144 * +sentinel sentinel f0510f8582b72c056531f219397ed8826683e665 172.17.0.1 26379 @ mymaster 172.17.0.1 6379 複数のウィンドウを開いて簡単に観察できます。 Sentinel センチネルの設定が完了しました 5.6 テスト マスターを閉じる [tcy@tcy1 ~]$ docker stop ab54741166e1 ab54741166e1 この時点で、残りの 2 つのスレーブは自動的に新しいマスターを選出し、ここでは 172.17.0.2 がマスターとして選出されます。 172.17.0.2 を確認すると、ホストになっています。 [root@tcy1 /]# docker exec -it 6ee2f2f007e6 /bin/bash ルート@6ee2f2f007e6:/data# redis-cli 127.0.0.1:6379> 情報レプリケーション # レプリケーション 役割:マスター 接続スレーブ:1 スレーブ0:ip=172.17.0.3、ポート=6379、状態=オンライン、オフセット=66906、ラグ=1 マスター返信ID:5a7489c8181ddf0d73d418d30d6a4c8e039198ba マスター返信ID2:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d マスター_repl_オフセット:67041 秒の繰り返しオフセット:65534 repl_backlog_active:1 レプリケーションバックログサイズ:1048576 repl_backlog_first_byte_offset:85 レプリケーションバックログ履歴:66957 127.0.0.1:6379> 要約する 上記は、編集者が紹介した Docker での redis のマスター スレーブ構成です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。 以下もご興味があるかもしれません:
|
<<: MySql で SQL 実行プランをクエリするために explain を使用する方法
>>: vue3 を使用してマテリアル ライブラリを構築する方法
1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...
問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...
環境に関する声明ホストOS: Cetnos7.9 最小インストールdocker バージョン: 20....
目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...
この記事では、WeChatアプレットの具体的なコードを参考までに共有します。具体的な内容は次のとおり...
目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...
目次プロジェクトの背景始めるvue-cliでプロジェクトを作成するモバイル適応についてnormali...
Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...
この記事の例では、ポップアップ効果を実現するためのjsの具体的なコードを参考までに共有しています。具...
序文クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要があり...
序文最近、MySQL に関するメモをいくつか尋ねる人がいたので、ブログ記事を書かなければなりません。...
最近Ubuntu 20.04をインストールしましたが、Wi-Fiに接続できず、Wi-Fiアイコンも表...
目次序文主な実装コードHTMLコードJSコード序文南の友達の多くは、雪をほとんど見たことがない、ある...
Docker はプロセスを中核としてシステムリソースを分離する管理ツールです。分離は、オペレーティン...