質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

3325閲覧

Redis Cluster構築時に「Waiting for the cluster to join..........」から進まなくなる

soich

総合スコア176

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2016/12/05 14:45

###前提・実現したいこと
VMのCentOS6.8で仮想サーバを6台使用してRedis Clusterを構築しようとしています。(Master3台,Slave3台)
redis Ver.3.2.5

下記のサイトと同じ現象が起きており解決策も書いてあるようなのですが、
お恥ずかしながら英語が読めず原因を特定できません。
https://github.com/antirez/redis/issues/1703

英語が読める方・原因がわかる方、ご回答いただけますと幸いです。

###発生している問題・エラーメッセージ
下記のjoin................が終わることなく続くので、ctrl+Cで中断すると./src/redis-trib.rb〜のエラーメッセージが表示される。

[root@redis-server001 redis-3.2.5]# ./src/redis-trib.rb create --replicas 1 192.168.56.111:7001 192.168.56.112:7002 192.168.56.113:7003 192.168.56.114:7004 192.168.56.115:7005 192.168.56.116:7006 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.56.116:7006 192.168.56.115:7005 192.168.56.114:7004 Adding replica 192.168.56.113:7003 to 192.168.56.116:7006 Adding replica 192.168.56.112:7002 to 192.168.56.115:7005 Adding replica 192.168.56.111:7001 to 192.168.56.114:7004 S: e48dfa0975dbf15bc6eb694224176b8aaf3c47ba 192.168.56.111:7001 replicates 4f91b32921e5e78d1a962528eb5519e1a2c8965c S: 1a11e6f1d4aa8ba288b82c55149a0d9cb16a84dc 192.168.56.112:7002 replicates dd04313e2b2a4cf7a55504456691703cc7647623 S: 7a234f3ad703f39c3c2290e0e04b3dbc34533390 192.168.56.113:7003 replicates d08858b15ce0ae31c8edda33db1c33313b356ac8 M: 4f91b32921e5e78d1a962528eb5519e1a2c8965c 192.168.56.114:7004 slots:10923-16383 (5461 slots) master M: dd04313e2b2a4cf7a55504456691703cc7647623 192.168.56.115:7005 slots:5461-10922 (5462 slots) master M: d08858b15ce0ae31c8edda33db1c33313b356ac8 192.168.56.116:7006 slots:0-5460 (5461 slots) master Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join........................................................................................................................^C./src/redis-trib.rb:653:in `sleep': Interrupt from ./src/redis-trib.rb:653:in `wait_cluster_join' from ./src/redis-trib.rb:1306:in `create_cluster_cmd' from ./src/redis-trib.rb:1701:in `send' from ./src/redis-trib.rb:1701

###試したこと
ディレクトリを新しく作った方が良いのでは、という記述があったのでredisディレクトリの下で

[root@redis-server001 redis-3.2.5]# mkdir 7001 #ポート番号

を作成し、その下にredis.confを作成してredisサーバを起動するようにしています。(6台サーバ全て上記のようにしている)

###補足情報(言語/FW/ツール等のバージョンなど)
redis-3.2.5下の情報です。(7001はポート番号)

[root@redis-server001 redis-3.2.5]# ls 00-RELEASENOTES COPYING README.md redis.log sentinel.conf 7001 INSTALL deps runtest src BUGS MANIFESTO dump.rdb runtest-cluster tests CONTRIBUTING Makefile redis.conf runtest-sentinel utils

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

下記で一旦解決した「6379+10000ポートを開ける解決方法」以降
「Waiting for the cluster to join..........」になった例があったので、
その時の解決方法を知見のためにメモっておきます。

bindの設定で
bind 127.0.0.1 192.168.56.111
このように127.0.0.1と外部連携用に設定したIPアドレスを並べて設定しているのですが、
bind 192.168.56.111 127.0.0.1
Cluster構成として読み込みたいIPアドレスを先頭にすると解決しました。
Cluster構成時に先に書いてある127.0.0.1を読み込んでしまうため、
「Waiting for the cluster to join..........」で処理が止まってしまったのだと思われます。

投稿2016/12/23 14:37

編集2016/12/23 14:41
soich

総合スコア176

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

https://github.com/antirez/redis/issues/1703 で上手く行った人は https://redis.io/topics/cluster-tutorial を読み直したら上手く行ったと言っています。
もちろんこのページは英語ですが、 http://qiita.com/uryyyyyyy/items/fc767f7f41144e5f10a1 で日本語である程度解説があります。

また、ポート番号を1つずつ変えるのは通常1台で試しにやってみる場合です。
せっかく6台お持ちなのですから、すべて同じポート番号にしてやってみてはいかがでしょうか。

https://github.com/antirez/redis/issues/1703 にも「I'm not aware of any issues about running different instances in different hosts with the same port. Like in the example: 10.0.0.1:6339 10.0.0.2:6379 10.0.0.3:6379. This should work just fine.」とあります。
つまり「それぞれ違うインスタンス、違うホストで同じポート番号にしておけば問題は起きないはずだよ」ということです。

投稿2016/12/05 15:41

yunano

総合スコア841

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

soich

2016/12/06 08:38

ご回答いただきありがとうございます。 チュートリアルを読み直したところ、無事解決することができました! 原因は設定したポート番号+10000のポート番号も許可しなければいけませんでした。 /etc/sysconfig/iptablesに「-A INPUT -p tcp -m tcp --dport 16379 -j ACCEPT」を追記したところクラスタ構築することができました。 yunanoさんが記載いただいたhttps://redis.io/topics/cluster-tutorialの下の記述を見て気付きました。 The cluster bus port (the client port + 10000) must be reachable from all the other cluster nodes. ポート番号は別サーバなら全て同じでも大丈夫なんですね; 全てデフォルトの6379に統一いたしました。 1日中悩んでいたので助かりました!ありがとうございますmm
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問