openstack-manuals/doc/install-guide/source/environment-etcd-ubuntu.rst
Hongbin Lu 8fad9fe997 Add etcd3 to installation tutorial
Etcd is a base service [1] so it should be include in the installation
tutorial so that other services can assume that it is installed.

Right now, there is no package available for etcd3. This patch suggest
to download the released tarball in github [2] instead. The installation
steps are similar to the automated installation script in devstack [3].

[1] https://governance.openstack.org/tc/reference/base-services.html
[2] https://github.com/coreos/etcd/releases/tag/v3.1.7
[3] https://github.com/openstack-dev/devstack/blob/master/lib/etcd3

Change-Id: Ic532e5a01571900d60d51c3e94ba170e22a30e93
2017-09-25 22:09:54 -04:00

2.5 KiB

Etcd for Ubuntu

Right now, there is no distro package available for etcd3. This guide uses the tarball installation as a workaround until proper distro packages are available.

Install and configure components

  1. Install etcd:

    • Create etcd user:

      # groupadd --system etcd
      # useradd --home-dir "/var/lib/etcd" \
            --system \
            --shell /bin/false \
            -g etcd \
            etcd
    • Create the necessary directories:

      # mkdir -p /etc/etcd
      # chown etcd:etcd /etc/etcd
      # mkdir -p /var/lib/etcd
      # chown etcd:etcd /var/lib/etcd
    • Download and install the etcd tarball:

      # ETCD_VER=v3.2.7
      # rm -rf /tmp/etcd && mkdir -p /tmp/etcd
      # curl -L https://github.com/coreos/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
      # tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd --strip-components=1
      # cp /tmp/etcd/etcd /usr/bin/etcd
      # cp /tmp/etcd/etcdctl /usr/bin/etcdctl
  2. Create and edit the /etc/etcd/etcd.conf.yml file and set the initial-cluster, initial-advertise-peer-urls, advertise-client-urls, listen-client-urls to the management IP address of the controller node to enable access by other nodes via the management network:

    name: controller
    data-dir: /var/lib/etcd
    initial-cluster-state: 'new'
    initial-cluster-token: 'etcd-cluster-01'
    initial-cluster: controller=http://10.0.0.11:2380
    initial-advertise-peer-urls: http://10.0.0.11:2380
    advertise-client-urls: http://10.0.0.11:2379
    listen-peer-urls: http://0.0.0.0:2380
    listen-client-urls: http://10.0.0.11:2379
  3. Create and edit the /lib/systemd/system/etcd.service file:

    [Unit]
    After=network.target
    Description=etcd - highly-available key value store
    
    [Service]
    LimitNOFILE=65536
    Restart=on-failure
    Type=notify
    ExecStart=/usr/bin/etcd --config-file /etc/etcd/etcd.conf.yml
    User=etcd
    
    [Install]
    WantedBy=multi-user.target

Finalize installation

  1. Enable and start the etcd service:

    # systemctl enable etcd
    # systemctl start etcd