ドッカービルドRedis4.0クラスター(Rubyスクリプトを使用しないでください)

序文

私は、ああ、それを行うことができますので、運用サーバーは、ルビーをダウンロードすることはできません。

ミラープル

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 7001cluster meet 127.0.0.1 7002cluster meet 127.0.0.1 7003cluster meet 127.0.0.1 7004cluster meet 127.0.0.1 7005cluster 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までのオープンを置くことを忘れないでください

おすすめ

転載: www.cnblogs.com/Lenbrother/p/12222715.html