基础的Replica Set 由三个成员组成,提供了冗余和故障切换。根据应用需求设计Replica Set架构,尽量避免不必要的复杂化。
奇数个成员存在确保复制集可以正确选举出主节点。如果副本集现有偶数个成员,请增加一个投票节点以保证其成员个数为奇数。投票节点由于不包含数据集,占用资源很少。所以可以将投票节点设置为某个共享机器上。
对于复制集,故障容错就是保证主节点在不可用的时候,剩余节点能够顺利选举出主节点。在没有主节点时,复制集将无法接受写请求。复制集的容错受到成员个数的影响:
Number of Members | Majority Required to Elect a New Primary | Fault Tolerance |
3 | 2 | 1 |
4 | 3 | 1 |
5 | 3 | 2 |
6 | 4 | 2 |
为复制集增加节点不一定能够增加复制集的容错能力,但可以提供备份或报表功能。
增加隐藏节点或延迟节点来提供特殊服务,比如备份或报表。
若业务带来大量的读请求,可以通过读写分离提升复制集的读能力。
请保证复制集有足够的备用容量来新增节点。不要在复制集负载饱和的时候才想到新增节点来提高负载能力。
在其他数据中心拥有至少一个复制集节点可以很好地在主数据中心出现问题为数据提供安全性的保障。将这类节点的priority设置为0,以防止其升级为主节点。
当复制集在多个数据中心拥有节点,且各数据中心网络隔离时,为了保证数据的复制和传输,各节点之间需要能够正常沟通。为了保证数据集节点能够保持多数且能够选举出主节点,需要保证一个数据中心拥有复制集中的多数节点。
通过复制集标签来确保操作能够复制指定的数据中心。我们也能通过标签将指定的读操作发送指定的节点。
通过开启Journaling功能来在服务意外关闭或是掉电时保护数据。
建议复制集最少由三个节点组成。
拥有4个或更多节点的复制集可以为操作提供更多的分布结构,且可以将某些节点用于专用功能。
通过将复制集成员分布在多个数据中心此类的地理分布的方式可以很好防止不可抗拒的力量造成的数据破坏。
MongoDB-Replica Set Deployment Architecture
原文:http://www.cnblogs.com/hotbaby/p/4877756.html