How to add MongoDB nodes using shell commands

This should be merged to master and stable/6.0

Added "Add MongoDB nodes" to Ops-Guide section about redeploying nodes

Added link to that section from Release Notes; reworded Release Notes to
say MongoDB nodes can not be added using the Fuel Web UI.

Added information to the fuel-ref/astute.yaml page about
the ceilometer/mongodb settings that are referenced from this procedure.

I added the full contents of the Target astute.yaml file and did a quick
pass to divide it into sections that can be discussed reasonably; most of
the work on this reference page will be done in a separate CR.

I did fix the file-ref doc so the TOC only shows the top-level section
(the file name) rather than all the subsections.

Change-Id: I237f15f7f57b2b4532566ea74fc6ca701124fee8
Partial-Bug: 1308990
This commit is contained in:
Meg McRoberts 2015-01-09 13:03:55 -08:00
parent bde53df77e
commit b200fc058a
6 changed files with 756 additions and 16 deletions

View File

@ -7,5 +7,6 @@ File Format Reference
=====================
.. contents:: :local:
:depth: 2
.. include:: /contents/contents-file-ref.rst

View File

@ -16,7 +16,7 @@ Fuel uses the *astute.yaml* file to pass configuration attributes
to :ref:`puppet<puppet-term>`.
Usage
-----
~~~~~
The */etc/fuel/astute.yaml* file is installed
on the Fuel Master node

View File

@ -6,24 +6,706 @@
.. _astute-yaml-target-ref:
astute.yaml
-----------
astute.yaml -- Target nodes
---------------------------
Target Nodes:
**/etc/astute.yaml**
Fuel uses the *astute.yaml* file to pass configuration attributes
to :ref:`puppet<puppet-term>`.
to :ref:`Puppet<puppet-term>`.
Usage
-----
~~~~~
The */etc/fuel/astute.yaml* file is installed
on the Fuel Master node
and must not be deleted.
The */etc/astute.yaml* file is placed
on each target node when it is deployed
by **mcollective** and must not be deleted.
Facter extension reads data from this file
and uses it to create the `$::fuel_settings` data structure.
This structure contains all variables as a single hash
and supports embedding of other rich structures
such as nodes hash or arrays.
File Format
~~~~~~~~~~~
The *xxx.yaml* file <detailed-description>
The *astute.yaml* file <detailed-description>
Basic networking configuration
++++++++++++++++++++++++++++++
::
libvirt_type: qemu
disable_offload: true
network_scheme:
roles:
management: br-mgmt
private: br-prv
fw-admin: br-fw-admin
storage: br-storage
provider: ovs
version: "1.0"
interfaces:
eth4:
L2:
vlan_splinters: "off"
eth3:
L2:
vlan_splinters: "off"
eth2:
L2:
vlan_splinters: "off"
eth1:
L2:
vlan_splinters: "off"
eth0:
L2:
vlan_splinters: "off"
endpoints:
br-prv:
IP: none
br-mgmt:
other_nets: []
IP:
- 10.108.22.6/24
br-storage:
other_nets: []
IP:
- 10.108.24.5/24
br-fw-admin:
other_nets:
- 10.108.20.0/24
IP:
- 10.108.20.7/24
default_gateway: true
gateway: 10.108.20.2
transformations:
- action: add-br
name: br-eth0
- bridge: br-eth0
action: add-port
name: eth0
- action: add-br
name: br-eth1
- bridge: br-eth1
action: add-port
name: eth1
- action: add-br
name: br-eth2
- bridge: br-eth2
action: add-port
name: eth2
- action: add-br
name: br-eth3
- bridge: br-eth3
action: add-port
name: eth3
- action: add-br
name: br-eth4
- bridge: br-eth4
action: add-port
name: eth4
- action: add-br
name: br-mgmt
- action: add-br
name: br-storage
- action: add-br
name: br-fw-admin
- trunks:
- 0
action: add-patch
bridges:
- br-eth4
- br-storage
- trunks:
- 0
action: add-patch
bridges:
- br-eth2
- br-mgmt
- trunks:
- 0
action: add-patch
bridges:
- br-eth0
- br-fw-admin
- action: add-br
name: br-prv
- action: add-patch
bridges:
- br-eth3
- br-prv
Nova configuration
++++++++++++++++++
::
nova:
db_password: Ns08DOge
state_path: /var/lib/nova
user_password: z8sJBhvw
Swift configuration
+++++++++++++++++++
::
swift:
user_password: Li9DPL0d
mp configuration
++++++++++++++++
::
mp:
- point: "1"
weight: "1"
- point: "2"
weight: "2"
Glance configuration
++++++++++++++++++++
::
glance:
db_password: DgVvco7J
image_cache_max_size: "5368709120"
user_password: sRX4ksp6
role: primary-mongo
deployment_mode: ha_compact
Mellanox configuration
++++++++++++++++++++++
::
neutron_mellanox:
plugin: disabled
metadata:
label: Mellanox Neutron components
enabled: true
toggleable: false
weight: 50
vf_num: "16"
mongo:
enabled: false
auth_key: ""
NTP configuration
+++++++++++++++++
::
external_ntp:
ntp_list: 0.pool.ntp.org, 1.pool.ntp.org
metadata:
label: Upstream NTP
weight: 100
Zabbix configuration
++++++++++++++++++++
::
zabbix:
db_password: 7hQFiVYa
db_root_password: xB33AjUw
password: zabbix
metadata:
label: Zabbix Access
restrictions:
- condition: not ('experimental' in version:feature_groups)
action: hide
weight: 70
username: admin
Definition of puppet tasks
++++++++++++++++++++++++++
::
tasks:
- type: puppet
priority: 100
parameters:
puppet_modules: /etc/puppet/modules
cwd: /
timeout: 3600
puppet_manifest: /etc/puppet/manifests/site.pp
uids:
- "12"
auto_assign_floating_ip: false
.. _astute-ceilometer-config-ref:
Ceilometer configuration
++++++++++++++++++++++++
::
ceilometer:
db_password: ReBB1hdT
metering_secret: jzHL7r76
enabled: true
user_password: p0JVzpHv
Public networking configuration
+++++++++++++++++++++++++++++++
::
public_vip: 10.108.21.2
public_network_assignment:
assign_to_all_nodes: false
metadata:
label: Public network assignment
restrictions:
- condition: cluster:net_provider != 'neutron'
action: hide
weight: 50
Heat configuration
++++++++++++++++++
::
heat:
db_password: Vv6vslci
enabled: true
rabbit_password: TOYQuiwH
auth_encryption_key: 3775079699142c1bcd7bd8b814648b01
user_password: s54JsapR
Fuel version
++++++++++++
::
fuel_version: "6.1"
NSX configuration
+++++++++++++++++
::
nsx_plugin:
nsx_password: ""
nsx_username: admin
packages_url: ""
l3_gw_service_uuid: ""
transport_zone_uuid: ""
connector_type: stt
metadata:
label: VMware NSX
enabled: false
restrictions:
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider != 'nsx'
action: hide
weight: 20
replication_mode: true
nsx_controllers: ""
Controller nodes configuration
++++++++++++++++++++++++++++++
::
nodes:
- role: primary-controller
internal_netmask: 255.255.255.0
storage_netmask: 255.255.255.0
internal_address: 10.108.22.3
uid: "9"
swift_zone: "9"
public_netmask: 255.255.255.0
public_address: 10.108.21.3
name: node-9
storage_address: 10.108.24.2
fqdn: node-9.test.domain.local
- role: controller
internal_netmask: 255.255.255.0
storage_netmask: 255.255.255.0
internal_address: 10.108.22.4
uid: "10"
swift_zone: "10"
public_netmask: 255.255.255.0
public_address: 10.108.21.4
name: node-10
storage_address: 10.108.24.3
fqdn: node-10.test.domain.local
- role: controller
internal_netmask: 255.255.255.0
storage_netmask: 255.255.255.0
internal_address: 10.108.22.5
uid: "11"
swift_zone: "11"
public_netmask: 255.255.255.0
public_address: 10.108.21.5
name: node-11
storage_address: 10.108.24.4
fqdn: node-11.test.domain.local
.. _astute-mongodb-nodes-ref:
MongoDB nodes configuration
+++++++++++++++++++++++++++
Each OpenStack environment that uses :ref:`Ceilometer<ceilometer-term>`
and :ref:`MongoDB<mongodb-term>`
must have a definition for each MongoDB node
in the *astute.yaml* file;
one node is designated the `primary-mongo` node
and all other nodes have just `mongo` specified for the role.
Ideally, you should have one MongoDB node for each
:ref:`Controller<controller-node-term>` node in the environment.
You can use the Fuel Web UI to deploy
as many MongoDB nodes as you like
when you initially create your environment.
You must edit this file and use command line tools
to add MongoDB nodes to a deployed environment;
see :ref:`add-mongodb-ops` for instructions.
The configuration for the primary MongoDB node is:
::
- role: primary-mongo
internal_netmask: 255.255.255.0
storage_netmask: 255.255.255.0
internal_address: 10.108.22.6
uid: "12"
swift_zone: "12"
name: node-12
storage_address: 10.108.24.5
fqdn: node-12.test.domain.local
The fields are:
:internal_netmask: Netmask used for the Internal
:ref:`logical network<logical-networks-arch>`.
:storage_netmask: Netmask used for the Storage logical network.
:internal_address:
:uid:
:swift_zone:
:name:
:storage_address:
:fqdn:
The configuration for each non-primary MongoDB node:
has the same fields.
The *astute.yaml* file includes one section like this
for each configured MongoDB node:
::
- role: mongo
internal_netmask: 255.255.255.0
storage_netmask: 255.255.255.0
internal_address: 10.108.22.7
uid: "13"
swift_zone: "13"
name: node-13
storage_address: 10.108.24.6
fqdn: node-13.test.domain.local
Sahara configuration
++++++++++++++++++++
::
sahara:
db_password: 0VDkceJQ
enabled: false
user_password: 4zs7JZaY
deployment_id: 9
Provisioning configuration
++++++++++++++++++++++++++
::
provision:
method: cobbler
metadata:
label: Provision
restrictions:
- condition: not ('experimental' in version:feature_groups)
action: hide
weight: 80
image_data:
/:
uri: http://10.108.20.2:8080/targetimages/ubuntu_1204_amd64.img.gz
format: ext4
container: gzip
/boot:
uri: http://10.108.20.2:8080/targetimages/ubuntu_1204_amd64-boot.img.gz
format: ext2
container: gzip
nova_quota: false
uid: "12"
repo_metadata:
2014.2-6.0: http://10.108.20.2:8080/2014.2-6.0/ubuntu/x86_64 precise main
Storage configuration
+++++++++++++++++++++
::
storage:
objects_ceph: false
pg_num: 128
vc_user: ""
iser: false
images_ceph: false
ephemeral_ceph: false
vc_datastore: ""
vc_password: ""
osd_pool_size: "2"
volumes_vmdk: false
metadata:
label: Storage
weight: 60
vc_host: ""
volumes_lvm: true
images_vcenter: false
vc_image_dir: /openstack_glance
volumes_ceph: false
vc_datacenter: ""
Keystone configuration
++++++++++++++++++++++
::
keystone:
db_password: rwTdR4Vd
admin_token: YXauBQbY
priority: 200
Cinder configuration
++++++++++++++++++++
::
cinder:
db_password: fv85YGzr
user_password: cIVtXdbp
Corosync configuration
++++++++++++++++++++++
::
corosync:
group: 226.94.1.1
verified: false
metadata:
label: Corosync
restrictions:
- condition: "true"
action: hide
weight: 50
port: "12000"
Miscellaneous configs to look at later
++++++++++++++++++++++++++++++++++++++
::
management_vip: 10.108.22.2
test_vm_image:
img_path: /usr/share/cirros-testvm/cirros-x86_64-disk.img
img_name: TestVM
min_ram: 64
public: "true"
glance_properties: "--property murano_image_info='{\"title\": \"Murano Demo\", \"type\": \"cirros.demo\"}'"
os_name: cirros
disk_format: qcow2
container_format: bare
quantum: true
cobbler:
profile: ubuntu_1204_x86_64
status: discover
management_network_range: 10.108.22.0/24
fail_if_error: true
puppet_modules_source: rsync://10.108.20.2:/puppet/2014.2-6.0/modules/
master_ip: 10.108.20.2
puppet_manifests_source: rsync://10.108.20.2:/puppet/2014.2-6.0/manifests/
resume_guests_state_on_host_boot: true
Syslog configuration
++++++++++++++++++++
::
syslog:
syslog_transport: tcp
syslog_port: "514"
metadata:
label: Syslog
weight: 50
syslog_server: ""
debug: false
online: true
metadata:
label: Common
weight: 30
access:
email: admin@localhost
user: admin
password: admin
metadata:
label: Access
weight: 10
tenant: admin
openstack_version_prev:
use_cow_images: true
last_controller: node-11
kernel_params:
kernel: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
metadata:
label: Kernel parameters
weight: 40
mysql:
wsrep_password: 6JoYdvoz
root_password: ZtwW8gk8
external_dns:
dns_list: 8.8.8.8, 8.8.4.4
metadata:
label: Upstream DNS
weight: 90
rabbit:
password: GGcZVT4f
compute_scheduler_driver: nova.scheduler.filter_scheduler.FilterScheduler
openstack_version: 2014.2-6.0
External MongoDB configuration
++++++++++++++++++++++++++++++
::
external_mongo:
mongo_replset: ""
mongo_password: ceilometer
mongo_user: ceilometer
metadata:
label: External MongoDB
restrictions:
- condition: settings:additional_components.mongo.value == false
action: hide
weight: 20
hosts_ip: ""
mongo_db_name: ceilometer
Murano configuration
++++++++++++++++++++
::
murano:
db_password: 0PVsOHo9
enabled: false
rabbit_password: FGjWVooK
user_password: crpWYkaY
More miscellaneous configs
++++++++++++++++++++++++++
::
quantum_settings:
database:
passwd: yOL94I9n
L3:
use_namespaces: true
L2:
phys_nets:
physnet2:
vlan_range: 1000:1030
bridge: br-prv
base_mac: fa:16:3e:00:00:00
segmentation_type: vlan
predefined_networks:
net04_ext:
L2:
segment_id:
network_type: local
router_ext: true
physnet:
L3:
floating: 10.108.21.11:10.108.21.20
subnet: 10.108.21.0/24
enable_dhcp: false
gateway: 10.108.21.1
nameservers: []
tenant: admin
shared: false
net04:
L2:
segment_id:
network_type: vlan
router_ext: false
physnet: physnet2
L3:
floating:
subnet: 192.168.111.0/24
enable_dhcp: true
gateway: 192.168.111.1
nameservers:
- 8.8.4.4
- 8.8.8.8
tenant: admin
shared: false
keystone:
admin_password: gqWPu2Vg
metadata:
metadata_proxy_shared_secret: qoEcTup3
fqdn: node-12.test.domain.local
storage_network_range: 10.108.24.0/24
vCenter configuration
+++++++++++++++++++++
::
vcenter:
datastore_regex: ""
host_ip: ""
vc_user: ""
vlan_interface: ""
vc_password: ""
cluster: ""
metadata:
label: vCenter
restrictions:
- condition: settings:common.libvirt_type.value != 'vcenter'
action: hide
weight: 20
use_vcenter: true
Syslog configuration
++++++++++++++++++++
::
base_syslog:
syslog_port: "514"
syslog_server: 10.108.20.2

View File

@ -12,5 +12,6 @@ before Mirantis OpenStack 5.1.
.. include:: /pages/operations/redeploy/1000-redeploy.rst
.. include:: /pages/operations/redeploy/2000-add-compute-storage.rst
.. include:: /pages/operations/redeploy/2500-add-mongodb.rst
.. include:: /pages/operations/redeploy/3000-add-controller.rst
.. include:: /pages/operations/redeploy/4000-remove-controller.rst

View File

@ -0,0 +1,55 @@
.. _add-mongodb-ops:
Add a MongoDB node
------------------
Additional :ref:`MongoDB<mongodb-term>` roles can be added
to an existing deployment by using shell commands.
Any number of MongoDB roles (or standalone nodes)
can be deployed into an OpenStack environment
using the Fuel Web UI during the initial deployment
but you cannot use the Fuel Web UI to add MongoDB nodes
to an existing environment.
Fuel installs MongoDB
as a backend for :ref:`ceilometer-term`.
Ideally, you should configure one MongoDB node
for each Controller node in the environment so,
if you add Controller nodes,
you should also add MongoDB nodes.
To add one or more MongoDB nodes to the environment:
#. Add an entry for each new MongoDB node
to the `connection` parameter
in the *ceilometer.conf* file on each Controller node.
This entry needs to specify the new node's IP address
for the Management :ref:`logical network<logical-networks-arch>`.
#. Open the :ref:`astute.yaml<astute-yaml-target-ref>` file on any deployed MongoDB node
and determine which node has the `primary-mongo` role;
see :ref:`astute-mongodb-nodes-ref`.
Write down the value of the **fqdn** parameter;
you will use this to **ssh** to this node.
#. Retrieve the `db_password` value from the
:ref:`astute-ceilometer-config-ref` section of same file.
You will use this password to access the primary MongoDB node.
#. Connect to the MongoDB node that has the `primary-mongo` role
and log into Mongo:
::
ssh ... <fqdn-of-primary-mongo-node>
mongo -u admin -p <db_password> admin
#. Configure each MongoDB node to be added to the environment:
::
ceilometer:PRIMARY> rs.add ("<management-ip-address-of-node>")
#. Restart the ceilometer services.

View File

@ -34,16 +34,17 @@ MongoDB issues
~~~~~~~~~~~~~~
- Additional MongoDB roles cannot be added to an existing deployment
from the Fuel Web UI.
Fuel installs :ref:`mongodb-term`
as a backend for :ref:`ceilometer-term`.
Any number of MongoDB roles (or standalone nodes)
can initially be deployed into an OpenStack environment
but, after the environment is deployed,
additional MongoDB roles cannot be added.
Be sure to deploy an adequate number of MongoDB roles
(one for each Controller node is ideal)
during the initial deployment.
See `LP1308990 <https://bugs.launchpad.net/fuel/+bug/1308990>`_.
can be deployed into an OpenStack environment
during the initial deployment
(one for each Controller node is ideal);
but after the environment is deployed,
additional MongoDB roles can only be added
by using shell commands;
see :ref:`add-mongodb-ops` for details.
- If traffic is dropped to MongoDB port on the primary controller,
Ceilometer randomly fails in HA mode.