В этом руководстве объясняется, как установить etcd на RHEL / CentOS 8. Etcd – это простое, надежное, быстрое и безопасное хранилище ключей с открытым исходным кодом, написанное на Go.
Оно использует алгоритм консенсуса Raft для управления реплицируемым журналом высокой доступности.
Общая установка не предназначена для использования в производственных средах, так как она находится на одном узле (один член и т. д.).
Установите etcd на RHEL / CentOS 8
Будучи написанным на Go, etcd распространяется в виде бинарного пакета, но также возможна установка из исходного кода.
В этом руководстве мы собираемся скачать готовый двоичный пакет.
Убедитесь, что на вашем сервере RHEL / CentOS 8 установлены vim и wget.
sudo dnf -y install curl vim
Шаг 1: Скачайте двоичный файл Etcd
Проверьте последнюю версию на странице релизов, прежде чем продолжить, чтобы получить последний тег выпуска
export RELEASE="3.3.12" wget https://github.com/etcd-io/etcd/releases/download/v${RELEASE}/etcd-v${RELEASE}-linux-amd64.tar.gz
Распакуйте скачанный архивный файл.
tar xvf etcd-v${RELEASE}-linux-amd64.tar.gz
Перейдите в новый каталог
cd etcd-v${RELEASE}-linux-amd64
Переместите двоичные файлы etcd и etcdctl в каталог /usr/local/bin.
sudo mv etcd etcdctl /usr/local/bin
Подтвердите версию.
$ etcd --version etcd Version: 3.3.12 Git SHA: d57e8b8 Go Version: go1.10.8 Go OS/Arch: linux/amd64
Шаг 2: Настройте службу Etcd Systemd
Мы собираемся использовать systemd для управления сервисом etcd.
Сначала создайте каталог данных для etcd.
sudo mkdir -p /var/lib/etcd/ sudo mkdir /etc/etcd
Создайте системного пользователя etcd
sudo groupadd --system etcd sudo useradd -s /sbin/nologin --system -g etcd etcd
Установите владельцем каталога /var/lib/etcd/ пользователя etcd.
sudo chown -R etcd:etcd /var/lib/etcd/
Настройте Systemd и запустите службу etcd
Создайте новый файл службы systemd для etcd.
sudo vim /etc/systemd/system/etcd.service
Вставьте содержимое в файл.
[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target
[Service]
User=etcd
Type=notify
Environment=ETCD_DATA_DIR=/var/lib/etcd
Environment=ETCD_NAME=%m
ExecStart=/usr/local/bin/etcd
Restart=always
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
Перезагрузите сервис systemd и запустите etcd
sudo systemctl daemon-reload sudo systemctl start etcd.service
Если у вас SELinux работает в принудительном режиме, то сгенерируйте модуль локальной политики, чтобы разрешить доступ к каталогам данных.
sudo ausearch -c '(etcd)' --raw | audit2allow -M my-etcd
Чтобы сделать этот пакет политики активным, выполните:
sudo semodule -X 300 -i my-etcd.pp sudo restorecon -Rv /usr/local/bin/etcd
Перезапустите службу etcd.
sudo 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 Fri 2019-03-22 22:38:07 EAT; 36s ago Docs: https://github.com/etcd-io/etcd Main PID: 1938 (etcd) Tasks: 10 (limit: 11510) Memory: 3.7M CGroup: /system.slice/etcd.service └─1938 /usr/local/bin/etcd Mar 22 22:38:05 rhel8.local etcd[1938]: enabled capabilities for version 3.3 Mar 22 22:38:07 rhel8.local etcd[1938]: 8e9e05c52164694d is starting a new election at term 2 Mar 22 22:38:07 rhel8.local etcd[1938]: 8e9e05c52164694d became candidate at term 3 Mar 22 22:38:07 rhel8.local etcd[1938]: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 3 Mar 22 22:38:07 rhel8.local etcd[1938]: 8e9e05c52164694d became leader at term 3 Mar 22 22:38:07 rhel8.local etcd[1938]: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 3 Mar 22 22:38:07 rhel8.local etcd[1938]: published {Name:992462394b1c4f2e80e7e2fd978f04f8 ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c> Mar 22 22:38:07 rhel8.local etcd[1938]: ready to serve client requests Mar 22 22:38:07 rhel8.local systemd[1]: Started etcd key-value store. Mar 22 22:38:07 rhel8.local etcd[1938]: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!
Служба запустится на локальном хосте на порту 2379
$ ss -tunelp | grep 2379 tcp LISTEN 0 128 127.0.0.1:2379 0.0.0.0:* uid:998 ino:72981 sk:45c <-> $ etcdctl member list 8e9e05c52164694d: name=992462394b1c4f2e80e7e2fd978f04f8 peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true
Шаг 3: Проверка установки Etcd
Проверьте вашу установку etcd на CentOS / RHEL 8:
$ etcdctl set /message "Hello World" Hello World
Прочитайте значение message
$ etcdctl get /message Hello World
Создайте каталог
$ etcdctl mkdir /myservice $ etcdctl set /myservice/container1 localhost:8080 localhost:8080 $ etcdctl ls /myservice /myservice/container1
Чтобы посмотреть каталог на наличие изменений, используйте:
$ etcdctl watch --recursive /myservice
Чтобы удалить ключ, выполните:
$ etcdctl rm /message PrevNode.Value: Hello World $ etcdctl rm /myservice/container1 PrevNode.Value: localhost:8080
Забыли добавить в статью содержимое etcd.service
“Вставьте содержимое в файл.”
А дальше сразу про перегрузку systemd
Спасибо огромное, поправили!