序文
私は、ああ、それを行うことができますので、運用サーバーは、ルビーをダウンロードすることはできません。
ミラープル
docker pull docker:4.0
カードを作成します。
docker network create redis-net
クラスタ環境を作成するのRedis
私のファイルが中に配置され/opt/docker/redis-cluster/
、独自のディレクトリを変更し、適切なディレクトリ、。
sudo mkdir /opt/docker/redis-cluster/
テンプレートファイルを作成します。vim redis-cluster.tmpl
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 127.0.0.1 #注意这儿一定是你的外网IP
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
設定ファイルとデータ格納ディレクトリを生成します。
for port in `seq 7001 7006`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
この通路の意味はディレクトリ及び7001から7006と以下のconfデータディレクトリ、$ {ポート}とRedisの-cluster.tmplを作成することであるCONFの各redis.confにそれぞれ7001から7006に置き換えられています。
Redis4.0コンテナを作成します
for port in `seq 7001 7006`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
--name="redis-${port}"\
-v /opt/docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /opt/docker/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis:4.0 redis-server /usr/local/etc/redis/redis.conf; \
done
今、このステップの後、私たちは6つの別々の容器のRedisのを持っています
コンテナは、クラスタに接続されているのRedis
オープンレイズ-CLIクライアント:docker exec -it redis-7001 redis-cli -p 7001
Redisの-CLIで各コンテナを関連付ける:cluster meet 127.0.0.1 7001
、cluster meet 127.0.0.1 7002
、cluster meet 127.0.0.1 7003
、cluster meet 127.0.0.1 7004
、cluster meet 127.0.0.1 7005
、cluster meet 127.0.0.1 7006
注:ここで127.0.0.1あなたが外部ネットワークIPを置き換えるために
、関連情報を表示する:cluster nodes
注:最初の列はコンテナIDで、次の意志使用
終了はRedisの-CLI:exit
マスタースレーブ構成
私の構成は、7004,7005,7006は、スレーブである、7001,7002,7003がマスターである
7004から7001に構成されたノード:docker exec -it redis-7004 redis-cli -p 7004 cluster replicate 7001的容器id(一长串字符串)
、
7005 7002にノード構成から:docker exec -it redis-7005 redis-cli -p 7005 cluster replicate 7002的容器id(一长串字符串)
、
7006 7003にノード構成から:docker exec -it redis-7006 redis-cli -p 7006 cluster replicate 7003的容器id(一长串字符串)
オープンレイズ-cliクライアント:docker exec -it redis-7001 redis-cli -p 7001
実行後のcluster nodes
主な配分からの眺め。
マスタノード点分配溝のRedis
ポイントへ分配溝7001: docker exec -it redis-7001 redis-cli -p 7001 cluster addslots {0..5461}
、
分配溝7002点:docker exec -it redis-7002 redis-cli -p 7002 cluster addslots {5462..10922}
、
分配溝に7003ポイント:docker exec -it redis-7003 redis-cli -p 7003 cluster addslots {10923..16383}
。
注1:かどうかは、いくつかのマスターノードを持っているが、完全にこれ以上と劣らず、16個の383スロット・ポイントが割り当てられていないする必要があります。ノードを追加するには、新しいノードに溝ポイントのセグメンテーション部分を繰り返す必要があります。
注2:これは、クラスタaddslots {a..b}コマンド外で実行されなければならない、唯一の実行のために別のノードに割り当てることができ、クライアントは隣接ノードを割り当てることができません。ERR無効か、範囲のスロットのうち:エラーが発生します
エンディング
これまでのところ、クラスタが完了するまで設定されています!あなたは訪問にクライアントを使用することができます。
サーバーのポート7001から7006までのオープンを置くことを忘れないでください