ホームページ  >  記事  >  データベース  >  Docker に基づいて Redis クラスターを構築する方法

Docker に基づいて Redis クラスターを構築する方法

王林
王林転載
2023-05-30 12:46:071374ブラウズ

環境: Docker (Redis:5.0.5 * 3)

1. イメージをプルします

docker  pull  redis:5.0.5

Docker に基づいて Redis クラスターを構築する方法

2. Redis コンテナーを作成します

3 つの Redis コンテナーを作成します:

  • redis-node1:6379

  • ##redis-node2:6380

  • #redis-node3:6381
  • docker create --name redis-node1 -v /data/redis-data/node1:/data -p 6379:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf
    
    docker create --name redis-node2 -v /data/redis-data/node2:/data -p 6380:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf
    
    docker create --name redis-node3 -v /data/redis-data/node3:/data -p 6381:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf

Docker に基づいて Redis クラスターを構築する方法3. クラスターの開始と形成

コンテナの開始

まずコマンド
docker start

:

Docker に基づいて Redis クラスターを構築する方法コマンドを使用して 3 つの Redis コンテナーを起動します。実行中のコマンドを実行した後、コンテナーの起動ステータスを確認します。

Docker に基づいて Redis クラスターを構築する方法上記の状況が発生した場合、

Exited (1) 3 秒前

docker ログ : ## で確認できます。

#上記のプロンプトは権限の問題です。権限を変更してみましょう: Docker に基づいて Redis クラスターを構築する方法

chmod -R  777 /data

正常に起動した後、以下に示すように:

クラスターを構築しますDocker に基づいて Redis クラスターを構築する方法

Docker で 3 つの Redis によって割り当てられた IP ノード情報を表示します:
执行「docker inspect redis-node1」得到 redis-node1 ip 信息为:172.17.0.4 
执行「docker inspect redis-node2」得到 redis-node2 ip 信息为:172.17.0.3 
执行「docker inspect redis-node3」得到 redis-node3 ip 信息为:172.17.0.2

IP 情報を取得した後(各人の IP (情報は異なる場合があります)、特定のコンテナを入力してクラスターをセットアップします: Docker に基づいて Redis クラスターを構築する方法

# 这里以进入 node1 为例
docker exec -it redis-node1 /bin/bash

# 接着执行组建集群命令(请根据自己的ip信息进行拼接)
redis-cli --cluster create 172.17.0.2:6379  172.17.0.3:6379  172.17.0.4:6379 --cluster-replicas 0

ok、クラスターがセットアップされました。テストしてみましょうそれは次です。 Docker に基づいて Redis クラスターを構築する方法

テスト クラスター

redis-cli -c
コマンドを使用してクラスター ノードに接続し、値を設定します。値を設定すると、自動的に次の場所にリダイレクトされます。 0.2 ip アドレスを指定し、Get Get it を渡します。取得に成功すると、クラスターが有効であることが証明されます。

4. 既存の問題Docker に基づいて Redis クラスターを構築する方法

上記の手順に従って、クラスターは正常に構築されましたが、まだ問題がいくつかあります。 IP アドレス

は、

172.17.0.2

などのように、Dock によって内部的に割り当てられます。 redis クラスター を使用するプロジェクトがクラスターと同じサーバー上にない場合、プロジェクトはアクセスがブロックされているため、クラスターを使用できません。

1 つの解決策は、

DockerDocker に基づいて Redis クラスターを構築する方法

ホスト モード

ネットワーク接続タイプ、つまりコンテナ内の Docker を使用させることです。 ホスト モードを使用して作成されたこれらは、独自の独立したネットワーク名前空間を持っていません。物理マシンとネットワーク スペースを共有し、物理マシンのすべての ポートと IP を共有できます。この方法では、パブリック ネットワークからコンテナに直接アクセスできますが、セキュリティ上のリスクはありますが、他に実現可能な方法はまだ見つかっていません。 既存の問題に関しては、ホスト モードを再採用し、コンテナを再作成します:

1. 実行中のコンテナを停止します <pre class="brush: html; toolbar: false">docker stop redis-node1 redis-node2 redis-node3</pre> 2. 以前に作成したコンテナ

docker rm redis-node1 redis-node2 redis-node3

# 清空上面创建的配置文件
rm -rf /data/redis-data/node*
3 を削除します。ホスト モード
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381
に基づいて再作成します。これは、以前の作成コマンドとは異なります。まず、
--net
ネットワーク タイプは
host

に指定されます。次に、この場合、コンテナ ポート サービスは -p 6379:6379 などのポート マッピングの必要はありません。現時点では外部で共有されているため、外部に公開されるポート -p 6379-p 6380 などを指定するだけで済みます。

4. コンテナを起動してクラスターを形成します

# 启动命令
docker start redis-node1 redis-node2 redis-node3

# 进入某一个容器
docker exec -it redis-node1 /bin/bash

# 组建集群,10.211.55.4为当前物理机的ip地址
redis-cli --cluster create 10.211.55.4:6379  10.211.55.4:6380  10.211.55.4:6381 --cluster-replicas 0
Docker に基づいて Redis クラスターを構築する方法

5. クラスター情報を表示します

root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes
72c291c32815194b64d1f6d0fdf771f5cc04e14a 10.211.55.4:6380@16380 master - 0 1590905997358 2 connected 5461-10922
6a595b67bbff15c94e5874c2d2cd556d6a6a6c17 10.211.55.4:6381@16381 master - 0 1590905998362 3 connected 10923-16383
4e3dbdc8f835dcbc38291c88f08165ee51d53d3d 10.211.55.4:6379@16379 myself,master - 0 1590905997000 1 connected 0-5460
127.0.0.1:6379>
Docker に基づいて Redis クラスターを構築する方法 6. クラスターをテストします

redis-cli -c
を使用してクラスターに接続し、
set

値を設定して、他のノードから値を取得します。成功したかどうかを確認します: <pre class="brush: html; toolbar: false">root@CentOS7:/data# redis-cli -c 127.0.0.1:6379&gt; set wxiaowei 123 -&gt; Redirected to slot [7515] located at 10.211.55.4:6380 OK 10.211.55.4:6380&gt; get wxiaowei &quot;123&quot;</pre>

以上がDocker に基づいて Redis クラスターを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。