线上的实际情况是总共有4台服务器。现在主要用的是memcache
,并且目前只用了61M左右的内存空间。公司的需求是逐步把整个网站的缓存迁移到redis。
目前的想法是拿3台服务器拿来做集群,每台服务器配置一个Master实例。为了实现高可用,还需要给每台服务器配置一个Slave实例。我想问的是,可不可以将Master实例和Slave实例配置到一个主机当中,以及这样配置所带来的影响?
还有一种想法是,只用2台服务器,1台服务器运行3个Master实例,另一台服务器运行3个Slave实例。大家还有更好的解决方案吗?
还听他们说,集群的话至少要有3个主节点。用2个主节点不行吗?
マスターとスレーブを同じマシンに配置すると、問題が発生します:
実行時にマスターとスレーブの両方がメモリを占有する必要があり、マシンのメモリが十分ではない可能性があります
マシンがダウンしているか、電源がオフになっているか、ネットワークが切断されている場合、マスターとスレーブの高可用性は得られません。
マスターとスレーブを別のマシンに配置するのが最善です。
なぜ2ではなく3なのかというと。これはクラスター選挙中の最良の戦略です。 Redis3.0 はクラスターのサポートを開始します。
一般に、クラスターが特定の公開状態について合意に達するには、クラスター内の Redis インスタンスの半分以上が同意する必要があります。
なぜ過半数が必要なのでしょうか? クラスター内のスプリットブレイン、つまりネットワーク分割の状況を考慮する必要があるためです。
ネットワークがどのように分離されているかに関係なく、過半数があれば、ネットワークがどれほど分離されているかに関係なく、大規模クラスターがいくつの小規模クラスターに分離されているかに関係なく、サービスを提供できる小規模クラスター内の少なくとも 1 つのインスタンス (インスタンスの半分以上を意味します) が最新のステータス情報と同期されます。
上記を理解した上で半分以上を話して、なぜ奇数なのか
偶数について話しましょうたとえば、4 つのインスタンスからなるクラスターの場合、3 が過半数になります。
しかし、なぜ奇数が依然として最高なのでしょうか?
クラスターに 5 つのインスタンスがある場合、2 つのインスタンスのクラッシュのみ許容できます。
クラスター内に 6 つのインスタンスがある場合、2 つのインスタンスのクラッシュしか許容できません。
同じ許容範囲の下で、6 と 5 の違いは何ですか:
クラスターは相互に通信する必要があるため、インスタンスが増えるほど、ネットワークのオーバーヘッドが大きくなります
インスタンスが多いほど、インスタンスが 5 つある場合、インスタンスが 6 つある場合よりも 3 つのインスタンスがクラッシュする確率は低くなります。
だからもちろん奇数が最も費用対効果が高いです。
別のポートを設定するだけで可能です。影響については、特に影響はないと思います。
マシンが 3 台ある場合、卵を 1 つのバスケットに入れるのではなく、それぞれがマスターを実行し、それぞれのスレーブを別のマシンに配置してリング バックアップを形成します。
IP リソースが十分な場合は、高可用性を提供する ha ミドルウェアを見つけてください。
実稼働環境を同じ物理マシンに配置することはお勧めできません。 3 つのマスターを持つクラスターは 3.0 クラスターについて話しています。ノードの数が奇数であれば、投票によって確実に特定の結果が得られます
。それでは、スレーブを別の場所に置きます。
このデザインについてどう思いますか?