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