Add a Ceph Monitor node

Add a Ceph Monitor node

This section describes how to add a Ceph Monitor node to an existing Ceph cluster.

Warning

Prior to the 2019.2.10 maintenance update, this feature is available as technical preview only.

Note

The Ceph Monitor service is quorum-based. Therefore, keep an odd number of Ceph Monitor nodes to establish a quorum.

To add a Ceph Monitor node:

  1. In your project repository, add the following lines to the cluster/ceph/init.yml file and modify them according to your environment:

    _param:
       ceph_mon_node04_hostname: cmn04
       ceph_mon_node04_address: 10.13.0.4
       ceph_mon_node04_ceph_public_address: 172.16.47.145
    linux:
      network:
        host:
          cmn04:
            address: ${_param:ceph_mon_node04_address}
            names:
            - ${_param:ceph_mon_node04_hostname}
            - ${_param:ceph_mon_node04_hostname}.${_param:cluster_domain}
    
  2. Define the backup configuration for the new node in cluster/ceph/init.yml. For example:

    parameters:
      _param:
        ceph_mon_node04_ceph_backup_hour: 4
        ceph_mon_node04_ceph_backup_minute: 0
    
  3. Add the following lines to the cluster/ceph/common.yml file and modify them according to your environment:

    parameters:
      ceph:
        common:
          members:
            - name: ${_param:ceph_mon_node04_hostname}
              host: ${_param:ceph_mon_node04_address}
    
  4. Add the following lines to the cluster/infra/config/nodes.yml file:

    parameters:
      reclass:
        storage:
          node:
            ceph_mon_node04:
              name: ${_param:ceph_mon_node04_hostname}
              domain: ${_param:cluster_domain}
              classes:
              - cluster.${_param:cluster_name}.ceph.mon
              params:
                ceph_public_address: ${_param:ceph_mon_node04_ceph_public_address}
                ceph_backup_time_hour: ${_param:ceph_mon_node04_ceph_backup_hour}
                ceph_backup_time_minute: ${_param:ceph_mon_node04_ceph_backup_minute}
                salt_master_host: ${_param:reclass_config_master}
                linux_system_codename: ${_param:ceph_mon_system_codename}
                single_address: ${_param:ceph_mon_node04_address}
                keepalived_vip_priority: 104
    
  5. Add the following lines to the cluster/infra/kvm.yml file and modify infra_kvm_node03_hostname depending on which KVM node the Ceph Monitor node should run on:

    parameters:
      salt:
        control:
          size:
            ceph.mon:
              cpu: 8
              ram: 16384
              disk_profile: small
              net_profile: default
          cluster:
            internal:
              node:
                cmn04:
                  name: ${_param:ceph_mon_node04_hostname}
                  provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
                  image: ${_param:salt_control_xenial_image}
                  size: ceph.mon
    
  6. Refresh pillars:

    salt '*' saltutil.refresh_pillar
    
  7. Log in to the Jenkins web UI.

  8. Open the Ceph - add node pipeline.

  9. Specify the following parameters:

    Parameter

    Description and values

    SALT_MASTER_CREDENTIALS

    The Salt Master credentials to use for connection, defaults to salt.

    SALT_MASTER_URL

    The Salt Master node host URL with the salt-api port, defaults to the jenkins_salt_api_url parameter. For example, http://172.18.170.27:6969.

    HOST

    Add the Salt target name of the new Ceph Monitor node. For example, cmn04*.

    HOST_TYPE

    Add mon as the type of Ceph node that is going to be added.

  10. Click Deploy.

The Ceph - add node pipeline workflow:

  1. Launch the Ceph Monitor VMs.

  2. Run the reclass state.

  3. Run the linux, openssh, salt, ntp, rsyslog, ceph.mon states.

  4. Update ceph.conf files on all Ceph nodes.

  5. Run the ceph.mgr state if the pillar is present.