Pesquisa de site

Como instalar o etcd no Ubuntu 22.04|20.04|18.04|16.04


Etcd é um armazenamento de valores-chave de código aberto simples, confiável, rápido e seguro, escrito em Go. Ele usa o algoritmo de consenso Raft para gerenciar um log replicado altamente disponível. Neste guia, instalaremos um único nó (um membro) etcd no Ubuntu 22.04|20.04|18.04|16.04.

Observação: esta é uma configuração de cluster de nó único. Para cluster de três nós, consulte o guia abaixo.

  • Configure o cluster Etcd no Ubuntu/Debian/CentOS

Instale o etcd no Ubuntu 22.04|20.04|18.04|16.04

O Etcd é distribuído como um pacote binário, embora você possa construí-lo a partir do código-fonte. Neste guia, vamos baixar um pacote binário pré-construído.

Verifique os binários de lançamento pré-construídos antes de prosseguir para obter a tag de lançamento mais recente. Instale os pacotes curl e wget em seu sistema Ubuntu

sudo apt update
sudo apt install vim wget curl

Baixe a versão mais recente do etcd no Ubuntu:

export RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest|grep tag_name | cut -d '"' -f 4)
wget https://github.com/etcd-io/etcd/releases/download/${RELEASE}/etcd-${RELEASE}-linux-amd64.tar.gz

Extraia o arquivo baixado.

tar xvf etcd-${RELEASE}-linux-amd64.tar.gz

Mude para o novo diretório de arquivos

cd etcd-${RELEASE}-linux-amd64

Mova os arquivos binários etcd e etcdctl para o diretório /usr/local/bin.

sudo mv etcd etcdctl etcdutl /usr/local/bin 

Confirme a versão:

$ etcd --version
etcd Version: 3.5.2
Git SHA: 99018a77b
Go Version: go1.16.3
Go OS/Arch: linux/amd64

$ etcdctl version
etcdctl version: 3.5.2
API version: 3.5

$ etcdutl version
etcdutl version: 3.5.2
API version: 3.5

Crie o arquivo de configuração e o diretório de dados do Etcd.

sudo mkdir -p /var/lib/etcd/
sudo mkdir /etc/etcd

Criar usuário do sistema etcd

sudo groupadd --system etcd
sudo useradd -s /sbin/nologin --system -g etcd etcd

Defina a propriedade do diretório /var/lib/etcd/ para o usuário etcd.

sudo chown -R etcd:etcd /var/lib/etcd/

Configure o Systemd e inicie o serviço etcd

Crie um novo arquivo de serviço systemd para etcd.

 sudo vim /etc/systemd/system/etcd.service

Cole os dados abaixo no arquivo.

[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

Recarregue o serviço systemd e inicie o etcd no Ubuntu 18.04/Ubuntu 16.04

sudo systemctl  daemon-reload
sudo systemctl  start etcd.service

Habilite o serviço para iniciar na inicialização do sistema:

$ sudo systemctl enable etcd.service
Created symlink /etc/systemd/system/multi-user.target.wants/etcd.service → /etc/systemd/system/etcd.service.

Verifique o status do serviço:

$ systemctl status etcd.service
● etcd.service - etcd key-value store
     Loaded: loaded (/etc/systemd/system/etcd.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-02-04 07:40:01 UTC; 46s ago
       Docs: https://github.com/etcd-io/etcd
   Main PID: 63132 (etcd)
      Tasks: 7 (limit: 4677)
     Memory: 6.9M
     CGroup: /system.slice/etcd.service
             └─63132 /usr/local/bin/etcd

Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.132Z","caller":"etcdserver/server.go:2031","msg":"published local member to cluster through raft","local-mem>
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.132Z","caller":"etcdserver/server.go:2480","msg":"setting up initial cluster version using v2 API","cluster->
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.132Z","caller":"embed/serve.go:98","msg":"ready to serve client requests"}
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.133Z","caller":"membership/cluster.go:584","msg":"set initial cluster version","cluster-id":"cdf818194e3a8c3>
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.133Z","caller":"api/capability.go:75","msg":"enabled capabilities for version","cluster-version":"3.5"}
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.133Z","caller":"etcdserver/server.go:2504","msg":"cluster version is updated","cluster-version":"3.5"}
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.133Z","caller":"embed/serve.go:140","msg":"serving client traffic insecurely; this is strongly discouraged!">
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.134Z","caller":"etcdmain/main.go:47","msg":"notifying init daemon"}
Feb 04 07:40:01 ubuntu-20-04-01 etcd[63132]: {"level":"info","ts":"2022-02-04T07:40:01.134Z","caller":"etcdmain/main.go:53","msg":"successfully notified init daemon"}
Feb 04 07:40:01 ubuntu-20-04-01 systemd[1]: Started etcd key-value store.

O serviço será iniciado na porta de endereço localhost 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=5fbf3d068d6c491eb687a7a427fc2263 peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true

Verificando o estado de saúde:

$ etcdctl  endpoint health
127.0.0.1:2379 is healthy: successfully committed proposal: took = 1.871483ms

Em nosso próximo tutorial, abordarei a configuração do cluster Etcd no sistema Ubuntu Linux.

Relacionado: Como instalar o etcd no RHEL/CentOS 8

Artigos relacionados: