在AWS上的MongoDB ReplicaSet集群中,我们的主站区域(例如:cn-north-1a)存在着多数节点,而异地区域(如:cn-north-1b)存在少数的备份复制集。而实例之间的配置又不同,这就要求我们让一些节点避免成为primary。这就用到了RS的priority属性——在RS配置中,非仲裁节点都有一个priority,范围为0-100,越大的值越优先成为priority。默认情况下是1。如果是0,则不能成为primary。
例如在下面一个集群中,0,1,2位于cn-north-1a,配置2最大。而3位于cn-north-1b,我们可以通过设置优先级让2更倾向于成为primary,0&1其次,而让3避免成为primary。
1 2 3 4 5 6 7 8 9 10 11 |
testrs:PRIMARY> config=rs.conf() testrs:PRIMARY> config.members[1].priority = 80 80 testrs:PRIMARY> config.members[1].priority = 80 80 testrs:PRIMARY> config.members[1].priority = 99 99 testrs:PRIMARY> config.members[1].priority = 1 10 testrs:PRIMARY> rs.reconfig(config) { "ok" : 1 } |
这样就实现了我们的目的~