반응형
우분투에 etcd를 설치하는 방법
etcd는 분산형 키-값 저장소로 주로 Kubernetes와 같은 분산 시스템의 상태 저장에 사용됩니다.
etcd 사용자 및 그룹 생성
sudo useradd -r etcd
작업 디렉토리로 이동
cd /usr/local/src
etcd 바이너리 다운로드(3.5.15)
ETCD_VERSION=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest | grep -oP '(?<="tag_name": "v)[^"]*')
- AMD(CentOS, Ubuntu)
curl -fsSL "https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz" \
-o /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz
- ARM(macOS)
curl -fsSL "https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-arm64.tar.gz" \
-o /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz
압축 해제 및 설치
tar xzf /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz -C /usr/local/bin --strip-components=1
etcd 데이터 디렉토리 생성 및 권한 부여
sudo mkdir /var/lib/etcd
sudo chown -R etcd:etcd /var/lib/etcd
etcd 서비스 설정
vim /etc/systemd/system/etcd.service
[Unit]
Description=etcd
Documentation=https://etcd.io
After=network.target
[Service]
User=etcd
ExecStart=/usr/local/bin/etcd --data-dir=/var/lib/etcd
Restart=always
RestartSec=5
LimitNOFILE=65536
LimitNPROC=4096
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
etcd 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start etcd
sudo systemctl enable etcd
더보기
---
기본 설정으로 실행
기본 설정으로 etcd를 실행합니다.sudo /usr/local/bin/etcd --data-dir=/var/lib/etcd
---
etcd 로그 확인
journalctl -u etcd
728x90
네트워크 및 포트 확인
etcd는 기본적으로 포트 2379와 2380을 사용합니다.
sudo netstat -tuln | egrep '2379|2380'
$ sudo netstat -tuln | egrep '2379|2380'
tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN
데이터 쓰기
- etcdctl put 명령어를 사용하여 데이터를 etcd에 저장할 수 있습니다.
etcdctl put <key> <value>
etcdctl --endpoints=localhost:2379 put foo bar
$ etcdctl --endpoints=localhost:2379 put foo bar
OK
데이터 읽기
- etcdctl get 명령어를 사용하여 저장된 데이터를 읽을 수 있습니다.
etcdctl get <key>
etcdctl --endpoints=localhost:2379 get foo
$ etcdctl --endpoints=localhost:2379 get foo
foo
bar
데이터 삭제
- etcdctl del 명령어를 사용하여 특정 키의 데이터를 삭제할 수 있습니다.
etcdctl del <key>
etcdctl --endpoints=localhost:2379 del foo
$ etcdctl --endpoints=localhost:2379 del foo
1
모든 데이터 나열
- 모든 데이터를 나열하려면 etcdctl get 명령어에 --prefix 플래그를 추가하여 범위 검색을 수행할 수 있습니다.
etcdctl get "" --prefix
$ etcdctl get "" --prefix
foo
bar
etcd 설치 스크립트
스크립트 작성
vim install_etcd.sh
#!/bin/bash
ETCD_VERSION=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest | grep -oP '(?<="tag_name": "v)[^"]*')
DOWNLOAD_URL=https://github.com/etcd-io/etcd/releases/download
cd /usr/local/src || { echo "Failed to change directory to /usr/local/src"; exit 1; }
# 현재 시스템의 아키텍처를 확인합니다.
ARCH=$(uname -m)
# 아키텍처를 설정하는 조건문입니다.
if [[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]]; then
Architecture="arm64"
elif [[ "$ARCH" == "x86_64" ]]; then
Architecture="amd64"
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
# etcd 바이너리 다운로드
curl -fsSL ${DOWNLOAD_URL}/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-${Architecture}.tar.gz -o /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz
if [[ $? -ne 0 ]]; then
echo "Failed to download etcd"
exit 1
fi
# etcd 압축 해제
tar xzf /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz -C /usr/local/bin --strip-components=1
if [[ $? -ne 0 ]]; then
echo "Failed to extract etcd"
rm -f /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz
exit 1
fi
# 임시 파일 삭제
rm -f /usr/local/src/etcd-v${ETCD_VERSION}.tar.gz
# etcd 바이너리 권한 설정
chmod +x /usr/local/bin/etcd
chmod +x /usr/local/bin/etcdctl
chmod +x /usr/local/bin/etcdutl
# etcd 버전 출력
echo -e "\netcd version : $(etcd --version)"
echo -e "\netcdctl version $(etcdctl version)"
echo -e "\netcdutl version : $(etcdutl version)\n"
chmod +x install_etcd.sh
$ bash install_etcd.sh
etcd version : etcd Version: 3.5.15
Git SHA: 9a5533382
Go Version: go1.21.12
Go OS/Arch: linux/arm64
etcdctl version etcdctl version: 3.5.15
API version: 3.5
etcdutl version : etcdutl version: 3.5.15
API version: 3.5
참고URL
- etcd GitHub 릴리스 페이지 : https://github.com/etcd-io/etcd/releases
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에 HashiCorp Vault를 설치하고 클러스터를 구성하는 방법 (0) | 2024.07.25 |
---|---|
etcd 클러스터를 구성하는 방법 (0) | 2024.07.23 |
쿠버네티스 클러스터를 멀티 마스터 환경에서 고가용성을 구현하는 방법 (0) | 2024.07.22 |
우분투에서 동일한 물리적 인터페이스에 여러 IP 주소를 설정하는 방법 (0) | 2024.07.22 |
쿠버네티스 대시보드를 통해 Nginx를 배포하는 방법 (0) | 2024.07.22 |