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 を使用してマテリアル ライブラリを構築する方法
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...
Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...
ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...
配列[1,8,5,4,3,9,2]が与えられた場合、配列の最大値9と最小値1を取得するアルゴリズムを...
ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...
Docker はポートを IPv6 にのみマッピングし、IPv4 にはマッピングしません。 dock...
MySQL 8.0.3がリリースされます。新機能を見てみましょうMySQL 8.0.3 は RC ...
1. バージョン情報 # cat /etc/system-release CentOS Linux ...
目次概要Big O 表記法とは何ですか?オー(1)の上) (n^2) O(logn) ですの上!)結...
Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...
序文プロジェクトを開発しているときに、かなり厄介な問題に遭遇しました。この製品では、判断のためにブラ...
目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...
MySQL では、REVOKE ステートメントを使用してユーザーの特定の権限を削除できます (ユーザ...
1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...
JavaScript DOM を読み終えた後、解釈型 JavaScript スクリプト言語に対する...