etcd#
Описание#
etcd — распределенное, согласованное и отказоустойчивое хранилище для пар «ключ-значение» (key-value). Используется для совместной настройки и координации планировщика распределенных систем и серверов, например, в продукте Platform V Pangolin SE.
Для управления хранилищем etcd используется утилита etcdctl.
Установка#
Запустите установку etcd:
dnf install etcdПосле окончания установки выведите в терминал текущую версию etcd:
etcd --versionЕсли будет выведена версия etcd, то установка завершена успешно.
Сценарии администрирования#
Важно
Команды, приведенные ниже, выполняются пользователем с административными полномочиями.
Конфигурирование#
Установите etcd (подробнее — в разделе «Установка»).
Создайте каталог данных для etcd:
mkdir -p /var/lib/etcd/Затем:
mkdir /etc/etcdСоздайте системную группу и пользователя
etcd:groupadd --system etcd useradd -s /sbin/nologin --system -g etcd etcdУстановите пользователя
etcdвладельцем каталога/var/lib/etcd/:chown -R etcd:etcd /var/lib/etcd/Создайте новый файл службы
systemdдляetcd:vim /etc/systemd/system/etcd.serviceВ открывшийся файл вставьте текст:
[Unit] Description=etcd key-value store # Описание службы Documentation=<documentation> # Ссылка на документацию (замените <documentation> на фактический URL) After=network.target # Указывает, что служба etcd должна запускаться после активации сети [Service] User=etcd # Учетная запись пользователя, от имени которого будет запущена служба etcd Type=notify # Тип службы: система будет уведомлена о завершении запуска службы Environment=ETCD_DATA_DIR=/var/lib/etcd # Переменная окружения: путь к каталогу данных etcd Environment=ETCD_NAME=%m # Переменная окружения: имя хоста etcd (заменяется на имя машины) ExecStart=/usr/local/bin/etcd # Команда для запуска etcd Restart=always # Политика перезапуска: служба будет перезапускаться всегда при завершении RestartSec=10s # Время ожидания перед перезапуском службы (10 секунд) LimitNOFILE=40000 # Ограничение на количество открытых файловых дескрипторов для процесса etcd [Install] WantedBy=multi-user.target # Указание, что служба должна быть запущена в многопользовательском режимеЗакройте файл с сохранением изменений командой
:wq.Перезагрузите сервис
systemd:systemctl daemon-reloadЗапустите etcd:
systemctl start etcd.serviceВнимание
Если SELinux работает в принудительном режиме, выполните приведенные ниже шаги.
Чтобы проверить режим SELinux, выполните команду
sestatusи проверьте значениеCurrent mode. Если указано значениеenforcing, то режим принудительный.Сгенерируйте модуль локальной политики, чтобы разрешить доступ к каталогам данных:
ausearch -c '(etcd)' --raw | audit2allow -M my-etcdЧтобы сделать этот пакет политики активным, выполните команду:
semodule -X 300 -i my-etcd.ppЗатем:
restorecon -Rv /usr/local/bin/etcdПерезапустите службу
etcd:systemctl restart etcd
Правильность команд зависит от конкретной системы и ее настроек. Рекомендуется проверить работу модуля политики после его создания и активации.
Проверьте статус службы и убедитесь, что она работает:
systemctl status etcdПример вывода:
etcd.service - etcd key-value store Loaded: loaded (/etc/systemd/system/etcd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-03-21 21:05:02 EAT; 25s ago Docs: <documentation> Main PID: 1928 (etcd) Tasks: 9 (limit: 11510) Memory: 3.5M CGroup: /system.slice/etcd.service └─1928 /usr/local/bin/etcd Mar 22 22:38:05 host.local etcd[1928]: enabled capabilities for version 3.3 Mar 22 22:38:07 host.local etcd[1928]: <hash> is starting a new election at term 2 Mar 22 22:38:07 host.local etcd[1928]: <hash> became candidate at term 3 Mar 22 22:38:07 host.local etcd[1928]: <hash> received MsgVoteResp from <hash> at term 3 Mar 22 22:38:07 host.local etcd[1928]: <hash> became leader at term 3 Mar 22 22:38:07 host.local etcd[1928]: raft.node: <hash> elected leader <hash> at term 3 Mar 22 22:38:07 host.local etcd[1928]: published {Name:<hash> ClientURLs:[http://localhost:2379]} to cluster <hash>> Mar 22 22:38:07 host.local etcd[1928]: ready to serve client requests Mar 22 22:38:07 host.local systemd[1]: Started etcd key-value store.В выводе указано, что служба запущена на локальном хосте, порт
2379.В списке сетевых подключений найдите подключение по порту
2379:ss -tunelp | grep 2379Пример вывода:
tcp LISTEN 0 128 <ip-address>:<2379> 0.0.0.0:* uid:998 ino:71982 sk:45c <->Выведите информацию об элементах кластера
etcd:etcdctl member listПример вывода:
<hash1>: name=<hash2> peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true
Проверка работоспособности#
Для проверки работы etcd запишите пару «ключ-значение»:
etcdctl --endpoints=<ip-address> put key123 "Hello World!"Где:
key123— ключ;"Hello World!"— значение.
Вывод:
Hello World!Прочитайте значение ключа
key123:etcdctl --endpoints=<ip-address> get key123Вывод:
key123 Hello World!Создайте ключ
/myservice/container1со значениемlocalhost:8080в пространстве ключейetcd:etcdctl put /myservice/container1 localhost:8080Выведите список всех ключей с префиксом
/myservice/:etcdctl get /myservice/ --prefix --keys-onlyВывод:
/myservice/container1
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
etcd --help