システム環境: Ubuntu 16.04LTS この記事では、6 つの Docker コンテナを使用して、単一マシンのクラスター テストを構築します。実際の環境に複数のマシンがある場合は、それに応じてコンテナの数、ポート番号、クラスター IP アドレスを変更できます。各マシンで、以下の同じ手順を実行できます。 公式Redisイメージを取得する docker pull redis:5.0 設定ファイルとデータディレクトリを作成する ディレクトリを作成する mkdir ~/redis_cluster cd ~/redis_cluster 新しいテンプレート ファイル sudo vim redis_cluster.tmpl を作成し、次の内容を入力します。 # redis ポート ${PORT} # 保護モードを無効にする protected-mode no # クラスターを有効にする cluster-enabled yes # クラスターノード構成 cluster-config-file nodes.conf #タイムアウト クラスターノードタイムアウト 5000 # クラスタノードIPホストモードはホストマシンのIPです クラスターアナウンスIP 10.10.100.197 # クラスターノードポート 7000 - 7005 クラスターアナウンスポート ${PORT} クラスターアナウンスバスポート 1${PORT} # appendonly バックアップモードを有効にする appendonly yes # 1秒ごとにバックアップ appendfsync everysec #ファイルの圧縮時に同期を実行するかどうか no-appendfsync-on-rewrite no # 現在の aof ファイルのサイズが最後に書き換えられた aof ファイルのサイズの 100% を超えると、再度書き換えられます。auto-aof-rewrite-percentage 100 # 書き換え前のAOFファイルの最小サイズはデフォルトで64MBです 自動 aof 書き換え最小サイズ 5120 MB # スナップショットバックアップ保存を無効にする "" 設定ファイルとデータ ディレクトリをバッチで作成するには、ターミナルで次のコマンドを実行します。 `seq 7000 7005` のポートの場合、\ を実行します。 mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; \ 終わり Redisコンテナをバッチで起動する コンテナの IP アドレスはホスト モードを使用します。 `seq 7000 7005` のポートの場合、\ を実行します。 docker run -d -it --memory=1G \ -v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v ~/redis_cluster/${ポート}/data:/data \ --restart 常に --name redis-${port} --net ホスト \ --sysctl net.core.somaxconn=1024 redis:5.0 redis-server /usr/local/etc/redis/redis.conf; \ 終わり ここで、--memeory=1G は、単一の Docker コンテナのメモリ サイズを 1G に制限します。この制限を超えると、プロセスは強制終了されます。実行時に、「スワップなしではメモリが制限されます...」という警告が表示される場合がありますが、これは無視できます。メモリを制限する必要がない場合は、--memeory パラメータを削除できます。 クラスターの作成 いずれかのコンテナーを入力します。 docker exec -it redis-7000 bash 入力後、以下のコマンドを実行してクラスターを作成します。 redis-cli --cluster を作成します 10.10.100.197:7000 10.10.100.197:7001 10.10.100.197:7002 10.10.100.197:7003 10.10.100.197:7004 10.10.100.197:7005 --cluster-replicas 1 redis-cli コマンドをインストールします (すでにインストールされている場合はこの手順をスキップしてください)。 sudo apt で redis-tools をインストールします yes と入力すると、クラスターが作成されます。Docker を終了し、いずれかのノードにログインして、クラスターの可用性を確認します。 redis-cli -c -p 7000 クラスターのステータスを表示するにはクラスターノードを入力します 127.0.0.1:7000> クラスターノード 06851aa134d50096d82a434eced9194233b5204e 10.10.100.197:7003@17003 スレーブ 8b33f273386c9504ef8bd10b005e24825b3b9596 0 1567671901000 4 台接続済み a42297b65f7101fc9e4941ef8a0e65080d1b6338 10.10.100.197:7005@17005 スレーブ 0aa20378d14e3ef0859815196cbafa67e1001d0e 0 1567671901581 6 が接続されています e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 10.10.100.197:7002@17002 マスター - 0 1567671902582 3 接続済み 10923-16383 0aa20378d14e3ef0859815196cbafa67e1001d0e 10.10.100.197:7000@17000 自分、マスター - 0 1567671901000 1 接続済み 0-5460 8b33f273386c9504ef8bd10b005e24825b3b9596 10.10.100.197:7001@17001 マスター - 0 1567671902383 2 接続 5461-10922 fe355eed99100197f43d1216d1de82643dd496a5 10.10.100.197:7004@17004 スレーブ e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 0 1567671901380 5 接続済み クラスターパスワードを設定する テンプレートファイルを使用して設定ファイルを一括作成する場合、上記の手順でパスワードを記述してみてはいかがでしょうか? クラスターを作成するために ruby を使用する redis 5.x でも以前の redis バージョンでも、クラスターを作成する redis-cli --cluster create プロセスにはパスワード パラメータ設定がないため、クラスターを作成した後にパスワードを設定する必要があります。 config set メソッドを使用して、各ノードに同じパスワードを設定します (Redis を再起動する必要はなく、再起動後も有効です)。その前に、すべての Redis 構成ファイルに w 権限を追加してください。そうしないと、パスワードをファイルに保存できません。 現在のパスはまだ ~/redis_cluster/ であることに注意してください。 `seq 7000 7005` のポートの場合、\ を実行します。 chmod a+w ./${port}/conf/redis.conf; \ 終わり 例として 1 つ挙げてみましょう。 ノードにログインします。 redis-cli -c -p 7000 パスワードを設定: 127.0.0.1:7000> 設定マスター認証 123456 わかりました 127.0.0.1:7000> config に requirepass 123456 を設定します わかりました 127.0.0.1:7000>認証123456 わかりました 127.0.0.1:7000> 設定の書き換え わかりました 次のデバイスでも同じ操作を実行します。 クラスタ書き込みデータの簡単なテスト 任意のクラスターノードにログインします。 redis-cli -c -p 7003 -a 123456 データの書き込み: 127.0.0.1:7003> va 1 を設定 -> 10.10.100.197:7001 にあるスロット [7800] にリダイレクトされました わかりました 10.10.100.197:7001> vaを取得 「1」 10.10.100.197:7001> デルヴァ (整数) 1 クラスター内の任意のノードによって書き込まれたデータは、他の任意のノードによって読み取ることができることがわかります。 この時点で、Redis クラスターが構築されます。 その他の考慮事項
`seq 7000 7005` のポートの場合、\ を実行します。 docker redis-${port} を停止します。 docker rm redis-${port}; 終わり 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法
>>: MySQL における 8 つの一般的な SQL 使用例
目次推測する事例:理解を深める参照する後で忘れないように、キーワード infer をメモしておきます...
問題を見つける今日、仕事中に、ローカル データベースから仮想マシン CentOS 6.6 上のデータ...
Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...
ページが非常に長い場合は、下にさらにコンテンツがあることをユーザーに知らせるために矢印が必要になるこ...
HTML コードを書くとき、最初の行は DOCTYPE にする必要がありますが、DOCTYPE は通...
目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...
navicatを使用してテストと学習を行います。まず、 set autocommit = 0;を使用...
以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...
1. バージョン情報 # cat /etc/system-release CentOS Linux ...
長い移植と情報検索の期間を経て、組み込みDockerの問題を解決することができました。インターネット...
1. はじめに以前のプログラム アーキテクチャは次の形式になります。プログラムのサイズが大きくなると...
ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...
目次1. サンプルコード2. 現象を通して本質を見抜く3. 実施原則4. 親コンポーネントのコンパイ...
序文: js はシングルスレッド言語なので、非同期にすることは不可能です。しかし、js のホスト環境...
序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...