2016-10-25 5 views
0

他のデータセンターに複製できるインメモリのキー/バリューストレージが必要です。
ここに私達の要件があります:
1.すべてのデータセンターは同じデータベースを持っていなければなりません(わずかな再同期は30-60秒のように受け入れられます)。マスターサーバーを1つしか使用できないことはわかっていて、問題ありません。 1つのデータセンター内の1つのデータベースのみがマスターになります。しかし、マスターサーバーが消滅したら、新しいマスターを選ぶ必要があります。
2.いずれかのスレーブノードに書き込み要求を送信できるようにする必要があります。マスターノードに直接書き込み要求を送信します。スレーブから書き込み要求をRedisのマスタに直接渡すことは可能ですか?

すべての書き込み要求を受け入れることができるRedisクラスタがあることは知っていますが、ノード間でデータが分散されるため、私たちにとっては適切ではありません(すべてのデータセンターのすべてのサーバは異なるデータを処理しますが、すべてのデータセンターで同じデータが使用されます。これは、書き込みが5%、読み取りが95%しかないためです)。

レディスで実現することはできますか?

+0

'slave-read-only no'を設定しても、スレーブへの書き込みはマスターに同期されません。代わりに、これらの書き込みは、スレーブがマスターと同期するときに削除されます。 –

答えて

0

私は正しくありませんでした。私はそれがRedis Clusterで実際にできることを知りました。 1つのマスターノードを作成し、すべてのハッシュスロットを割り当てなければなりません。その後、スレーブノードを作成してマスターを複製する必要があります。この状況では、自動フェイルオーバーが行われ、すべてのノードが同じデータを保持します。

スレーブノードを設定します。私。

./redis-trib.rb add-node --slave --master-id {master_id} {master_ip}:{master_port} {slave_ip}:{slave_port} 

それとも我々は新しい空のマスター追加することができます:

./redis-trib.rb add-node {any_node_ip_in_cluster}:{port} {new_node_ip}:{port} 

をそしてスレーブにそれを回す:

redis {master_ip}:{master_port}> cluster replicate {master_id} 

P.S.私たちは、次を使用する必要があるマスターを複製レディスは最低3人のマスタを必要としますが、クラスタのハードな制限ではありません。私たちはまだ1つのマスターノードしか持つことができません。

関連する問題