Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Ansible进行AWS MongoDB群集资源调配_Mongodb_Amazon Web Services_Amazon Ec2_Ansible_Mongodb Replica Set - Fatal编程技术网

通过Ansible进行AWS MongoDB群集资源调配

通过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

我们正在AWS EC2实例上通过ansible部署mongodb集群。 一旦配置了一个DB实例,我们就给它相应的主/辅标记。我们有3个节点-1个用于主节点,2个用于辅助节点

在第一次运行ansible脚本时,我们将按标记类型选择主实例,启动它并向其添加辅助节点

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脚本需要知道哪个节点是主节点,有什么特殊原因吗?