做Redis集群的时候,可不可以将Master实例和Slave实例放在一个主机当中?
PHP中文网
PHP中文网 2017-04-25 09:03:24
0
5
954

线上的实际情况是总共有4台服务器。现在主要用的是memcache,并且目前只用了61M左右的内存空间。公司的需求是逐步把整个网站的缓存迁移到redis。

目前的想法是拿3台服务器拿来做集群,每台服务器配置一个Master实例。为了实现高可用,还需要给每台服务器配置一个Slave实例。我想问的是,可不可以将Master实例和Slave实例配置到一个主机当中,以及这样配置所带来的影响?

还有一种想法是,只用2台服务器,1台服务器运行3个Master实例,另一台服务器运行3个Slave实例。大家还有更好的解决方案吗?

还听他们说,集群的话至少要有3个主节点。用2个主节点不行吗?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(5)
过去多啦不再A梦

マスターとスレーブを同じマシンに配置すると、問題が発生します:

  1. 実行時にマスターとスレーブの両方がメモリを占有する必要があり、マシンのメモリが十分ではない可能性があります

  2. マシンがダウンしているか、電源がオフになっているか、ネットワークが切断されている場合、マスターとスレーブの高可用性は得られません。

マスターとスレーブを別のマシンに配置するのが最善です。

なぜ2ではなく3なのかというと。これはクラスター選挙中の最良の戦略です。 Redis3.0 はクラスターのサポートを開始します。

一般に、クラスターが特定の公開状態について合意に達するには、クラスター内の Redis インスタンスの半分以上が同意する必要があります。
なぜ過半数が必要なのでしょうか? クラスター内のスプリットブレイン、つまりネットワーク分割の状況を考慮する必要があるためです。
ネットワークがどのように分離されているかに関係なく、過半数があれば、ネットワークがどれほど分離されているかに関係なく、大規模クラスターがいくつの小規模クラスターに分離されているかに関係なく、サービスを提供できる小規模クラスター内の少なくとも 1 つのインスタンス (インスタンスの半分以上を意味します) が最新のステータス情報と同期されます。

上記を理解した上で半分以上を話して、なぜ奇数なのか
偶数について話しましょうたとえば、4 つのインスタンスからなるクラスターの場合、3 が過半数になります。
しかし、なぜ奇数が依然として最高なのでしょうか?
クラスターに 5 つのインスタンスがある場合、2 つのインスタンスのクラッシュのみ許容できます。
クラスター内に 6 つのインスタンスがある場合、2 つのインスタンスのクラッシュしか許容できません。
同じ許容範囲の下で、6 と 5 の違いは何ですか:

  • クラスターは相互に通信する必要があるため、インスタンスが増えるほど、ネットワークのオーバーヘッドが大きくなります

  • インスタンスが多いほど、インスタンスが 5 つある場合、インスタンスが 6 つある場合よりも 3 つのインスタンスがクラッシュする確率は低くなります。

だからもちろん奇数が最も費用対効果が高いです。

いいねを押す +0
習慣沉默

別のポートを設定するだけで可能です。影響については、特に影響はないと思います。

いいねを押す +0
洪涛

マシンが 3 台ある場合、卵を 1 つのバスケットに入れるのではなく、それぞれがマスターを実行し、それぞれのスレーブを別のマシンに配置してリング バックアップを形成します。
IP リソースが十分な場合は、高可用性を提供する ha ミドルウェアを見つけてください。

いいねを押す +0
刘奇

実稼働環境を同じ物理マシンに配置することはお勧めできません。 3 つのマスターを持つクラスターは 3.0 クラスターについて話しています。ノードの数が奇数であれば、投票によって確実に特定の結果が得られます

いいねを押す +0
仅有的幸福

それでは、スレーブを別の場所に置きます。

このデザインについてどう思いますか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート