通过Ansible进行AWS MongoDB群集资源调配
我们正在AWS EC2实例上通过ansible部署mongodb集群。 一旦配置了一个DB实例,我们就给它相应的主/辅标记。我们有3个节点-1个用于主节点,2个用于辅助节点 在第一次运行ansible脚本时,我们将按标记类型选择主实例,启动它并向其添加辅助节点通过Ansible进行AWS MongoDB群集资源调配,mongodb,amazon-web-services,amazon-ec2,ansible,mongodb-replica-set,Mongodb,Amazon Web Services,Amazon Ec2,Ansible,Mongodb Replica Set,我们正在AWS EC2实例上通过ansible部署mongodb集群。 一旦配置了一个DB实例,我们就给它相应的主/辅标记。我们有3个节点-1个用于主节点,2个用于辅助节点 在第一次运行ansible脚本时,我们将按标记类型选择主实例,启动它并向其添加辅助节点 rs.initiate() rs.add(secodnaryHost1) rs.add(secondaryHost2) 这个很好用 然而,有时,当一个次要的成为主要的时,我们的实例标记类型-primary和mongoDB-primary
rs.initiate()
rs.add(secodnaryHost1)
rs.add(secondaryHost2)
这个很好用
然而,有时,当一个次要的成为主要的时,我们的实例标记类型-primary和mongoDB-primary是不同的。
在这种情况下,如果我们运行ansible脚本,它们就会失败,因为主标记类型(现在是辅助标记类型)不能运行上述命令
处理此类不匹配的最佳方法是什么?您应该阅读并在模板中或通过命令行定义适当的设置。
请搜索
附言:
示例模板及其提供
- name: Create the file to initialize the mongod replica set
template: src=repset_init.j2 dest=/tmp/repset_init.js
- name: Pause for a while
pause: seconds=20
- name: Initialize the replication set
shell: /usr/bin/mongo --port "{{ mongod_port }}" /tmp/repset_init.js
使用标记来指示哪个节点是主节点,哪个节点是次节点是没有帮助的,因为(正如您所注意到的)当现有主节点脱机时,另一个节点将担任主节点的角色。Ansible脚本需要知道哪个节点是主节点,有什么特殊原因吗?