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
This commit is contained in:
Hongbin Lu 2017-09-24 00:33:27 -04:00
parent 2c8f60bce9
commit 8fad9fe997
3 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,101 @@
===============
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
--------------------------------
#. Install etcd:
- Create etcd user:
.. code-block:: console
# groupadd --system etcd
# useradd --home-dir "/var/lib/etcd" \
--system \
--shell /bin/false \
-g etcd \
etcd
.. end
- Create the necessary directories:
.. code-block:: console
# mkdir -p /etc/etcd
# chown etcd:etcd /etc/etcd
# mkdir -p /var/lib/etcd
# chown etcd:etcd /var/lib/etcd
.. end
- Download and install the etcd tarball:
.. code-block:: console
# 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
.. end
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:
.. code-block:: yaml
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
.. end
3. Create and edit the ``/lib/systemd/system/etcd.service`` file:
.. code-block:: ini
[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
.. end
Finalize installation
---------------------
#. Enable and start the etcd service:
.. code-block:: console
# systemctl enable etcd
# systemctl start etcd
.. end

View File

@ -0,0 +1,12 @@
Etcd
~~~~
OpenStack services may use Etcd, a distributed reliable key-value store
for distributed key locking, storing configuration, keeping track of service
live-ness and other scenarios.
.. toctree::
:glob:
environment-etcd-*

View File

@ -80,3 +80,4 @@ For more information about system requirements, see the
environment-sql-database.rst
environment-messaging.rst
environment-memcached.rst
environment-etcd.rst