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

线上的实际情况是总共有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 인스턴스의 절반 이상이 동의해야 합니다.
다수결이 필요한 이유는 클러스터 내 분할 브레인, 즉 네트워크 분할 상황을 고려해야 하기 때문입니다.
다수결은 네트워크가 어떻게 분리되어도 보장할 수 있습니다. 얼마나 많은 소규모 클러스터가 대규모 클러스터로 분리되어 있더라도 서비스를 제공할 수 있는 소규모 클러스터의 인스턴스(인스턴스가 절반 이상 있음을 의미)는 적어도 하나의 인스턴스가 최신 상태 정보에 동기화됩니다.

위에서 언급한 과반수를 이해한 후 왜 홀수인지
짝수도 과반수를 가질 수 있습니다. 예를 들어, 4 인스턴스 클러스터의 경우 3이 다수입니다.
그런데 왜 여전히 홀수가 최고일까요?
클러스터에 인스턴스가 5개 있는 경우 인스턴스 2개의 충돌만 허용할 수 있습니다.
클러스터에 6개의 인스턴스가 있는 경우 2개의 인스턴스 충돌만 허용할 수 있습니다.
동일한 공차에서 6과 5의 차이점은 무엇입니까?

  • 클러스터는 서로 통신해야 하기 때문에 인스턴스가 많을수록 네트워크 오버헤드도 커집니다.

  • 인스턴스가 많을수록 인스턴스가 5개 있을 때 인스턴스 3개가 충돌할 확률은 인스턴스가 6개일 때보다 적습니다.

물론 홀수가 가장 비용 효율적입니다.

習慣沉默

가능합니다. 포트만 다르게 설정하면 되는데, 영향에 관해서는 특별한 영향은 없는 것 같습니다.

洪涛

3개의 머신이 있는 경우 계란을 한 바구니에 담는 대신 각 머신이 마스터를 실행한 다음 각 슬레이브를 다른 머신에 배치하여 링 백업을 형성합니다.
IP 자원이 충분하다면 고가용성을 구현하기 위한 하 미들웨어를 찾아보세요.

刘奇

동일한 물리적 머신에 프로덕션 환경을 두는 것은 권장되지 않습니다. 3개의 마스터가 있는 클러스터는 3.0 클러스터를 말하는 것입니다. 홀수의 노드는 투표가 확실한 결과를 낳을 수 있음을 보장합니다

仅有的幸福

그럼 슬레이브는 다른 곳에 두자.

이 디자인에 대해 어떻게 생각하시나요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!