deploy mongodb as cluster for HA 73/4773/15
authorcarey.xu <carey.xuhan@huawei.com>
Thu, 17 Dec 2015 10:16:12 +0000 (18:16 +0800)
committercarey.xu <carey.xuhan@huawei.com>
Fri, 25 Dec 2015 05:18:21 +0000 (13:18 +0800)
JIRA: COMPASS-207

Change-Id: I1069bcc2d0dd97dd6a4c7bb61351be993d86b33a
Signed-off-by: carey.xu <carey.xuhan@huawei.com>
deploy/adapters/ansible/roles/common/tasks/main.yml
deploy/adapters/ansible/roles/database/tasks/main.yml
deploy/adapters/ansible/roles/database/tasks/mongodb_config.yml [new file with mode: 0755]
deploy/adapters/ansible/roles/database/tasks/mongodb_install.yml [moved from deploy/adapters/ansible/roles/database/tasks/mongodb.yml with 72% similarity, mode: 0755]
deploy/adapters/ansible/roles/database/templates/mongodb.conf
deploy/adapters/ansible/roles/database/templates/replica.js [new file with mode: 0644]
deploy/adapters/ansible/roles/glance/tasks/nfs.yml
deploy/adapters/ansible/roles/glance/vars/Debian.yml
deploy/adapters/ansible/roles/keystone/vars/main.yml

index da11463..1276429 100644 (file)
   shell: hwclock --systohc
   ignore_errors: True
 
+- name: create fireball keys dir
+  file: path=~/.fireball.keys state=directory mode=0700
+  delegate_to: 127.0.0.1
+  run_once: true
+
 - name: restart services
   service: name={{ item }} state=restarted enabled=yes
   with_items: services| union(services_noarch)
@@ -61,3 +66,7 @@
 - name: write services to monitor list
   lineinfile: dest=/opt/service create=yes line='{{ item }}'
   with_items: services| union(services_noarch)
+
+- name: kill daemon for accelerate
+  shell: lsof -ni :5099|grep LISTEN|awk '{print $2}'|xargs kill -9
+  ignore_errors: true
index 20b6fe4..bfdcb75 100644 (file)
@@ -9,4 +9,7 @@
   when:
     - inventory_hostname == haproxy_hosts.keys()[0]
 
-- include: mongodb.yml
+- include: mongodb_install.yml
+- include: mongodb_config.yml
+  when:
+    - inventory_hostname == haproxy_hosts.keys()[0]
diff --git a/deploy/adapters/ansible/roles/database/tasks/mongodb_config.yml b/deploy/adapters/ansible/roles/database/tasks/mongodb_config.yml
new file mode 100755 (executable)
index 0000000..573b30a
--- /dev/null
@@ -0,0 +1,35 @@
+---
+- name: copy replica js
+  template:
+    src: replica.js
+    dest: /opt/replica.js
+
+- name: init replica servers
+  shell: mongo compass /opt/replica.js
+
+- name: wait replica servers are ready
+  shell: mongo compass --eval 'printjson(rs.status())'|grep -E 'PRIMARY|SECONDARY'|wc -l
+  register: servers
+  until: servers.stdout|int == 3
+  retries: 20
+  delay: 3
+
+- debug: msg='{{ servers.stdout |int }}'
+
+- name: create mongodb user and db
+  mongodb_user:
+    login_host: "{{ internal_vip.ip }}"
+    database: ceilometer
+    name: ceilometer
+    password: "{{ CEILOMETER_DBPASS }}"
+    roles: 'readWrite,dbAdmin'
+    state: present
+
+- name: grant user privilege
+  mongodb_user:
+    login_host: "{{ internal_vip.ip }}"
+    database: ceilometer
+    name: ceilometer
+    password: "{{ CEILOMETER_DBPASS }}"
+    roles: 'readWrite,dbAdmin'
+    state: present
old mode 100644 (file)
new mode 100755 (executable)
similarity index 72%
rename from deploy/adapters/ansible/roles/database/tasks/mongodb.yml
rename to deploy/adapters/ansible/roles/database/tasks/mongodb_install.yml
index ada7f7e..1e7988d
 - name: write mongodb to monitor list
   lineinfile: dest=/opt/service create=yes line={{ mongodb_service}}
 
-- wait_for: port=27017 delay=3 timeout=60 host={{ internal_vip.ip }}
-
-- name: create mongodb user
-  run_once: True
-  mongodb_user:
-    login_host: "{{ internal_vip.ip }}"
-    database: ceilometer
-    name: ceilometer
-    password: "{{ CEILOMETER_DBPASS }}"
-    roles: 'readWrite,dbAdmin'
-    state: present
+- name: wait for mongod ready
+  wait_for: host=0.0.0.0 port=27017 delay=10
index 68b84d7..1830615 100644 (file)
@@ -1,4 +1,5 @@
 # mongodb.conf
-bind_ip = {{ internal_vip.ip }}
+bind_ip = 0.0.0.0
+replSet = compass
 port = 27017
 smallfiles = true
diff --git a/deploy/adapters/ansible/roles/database/templates/replica.js b/deploy/adapters/ansible/roles/database/templates/replica.js
new file mode 100644 (file)
index 0000000..3282cd6
--- /dev/null
@@ -0,0 +1,8 @@
+config = { _id:"compass", members:[
+{% for host in haproxy_hosts.values() %}
+{% set pair = '%s:27017' % host %}
+    {_id:{{ loop.index0 }},host:"{{ pair }}"},
+{% endfor %}
+]
+};
+rs.initiate(config);
index ff72ecb..758ec08 100644 (file)
   local_action: file path=/opt/images state=directory mode=0777
   run_once: True
 
+- name: remove nfs config item if exist
+  local_action: lineinfile dest=/etc/exports state=absent
+              regexp="^/opt/images"
+  run_once: True
+
 - name: update nfs config
   local_action: lineinfile dest=/etc/exports state=present
-              regexp="/opt/images *(rw,insecure,sync,all_squash)"
               line="/opt/images *(rw,insecure,sync,all_squash)"
   run_once: True
 
index d743b4e..dc660e9 100644 (file)
@@ -40,9 +40,9 @@ os_services:
     type: metering
     region: regionOne
     description: "OpenStack Telemetry"
-    publicurl: "http://{{ public_vip.ip }}:8777/v2.0"
-    internalurl: "http://{{ internal_vip.ip }}:8777/v2.0"
-    adminurl: "http://{{ internal_vip.ip }}:8777/v2.0"
+    publicurl: "http://{{ public_vip.ip }}:8777"
+    internalurl: "http://{{ internal_vip.ip }}:8777"
+    adminurl: "http://{{ internal_vip.ip }}:8777"
 
   - name: cinder
     type: volume