etcd 클러스터 배포
7291 단어 etcd
1. 환경 설명
설치 etcd
각각 마스터와 node1 기계에 etcd를 설치하다
# step1: etcd release
$ wget https://github.com/etcd-io/etcd/releases/download/v2.3.7/etcd-v2.3.7-linux-amd64.tar.gz
# step2: /data/ ( )
$ tar -C /data -zxvf etcd-v2.3.7-linux-amd64.tar.gz
# step3:
$ /data/etcd-v2.3.7-linux-amd64/etcdctl -v
etcdctl version 2.3.7
셋째, etcd 설정
etcd 중요 설정 매개 변수에 대한 설명, 버전이 통하지 않는 etcd 매개 변수 옵션 및 옵션의 기본값이 약간 차이가 있을 수 있음
etcd --help
을 통해 볼 수 있습니다.--name # etcd
--data-dir # etcd
--listen-client-urls # url
--advertise-client-urls # url
--listen-peer-urls # url
--initial-advertise-peer-urls # url
--initial-cluster #
--initial-cluster-token #
--initial-cluster-state # ,new (master new,node existing)
우리는 시스템d를 통해 etcd 서비스를 관리하기 때문에
/etc/systemd/system
디렉터리에 새 파일etcd.service
파일을 만들었습니다. 시스템d를 모르는 사람은 완일봉 선생님의 블로그를 볼 수 있습니다.1. 마스터 기기(172.18.0.30)
# vim /etcsystemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
WorkingDirectory=/data/etcd-v2.3.7-linux-amd64
User=root
ExecStart=/data/etcd-v2.3.7-linux-amd64/etcd --name etcd0 --data-dir /data/etcd_data/etcd1 \
--listen-client-urls http://172.18.0.30:2379,http://localhost:2379 --advertise-client-urls http://172.18.0.30:2379,http://localhost:2379 \
--listen-peer-urls http://172.18.0.30:2380 --initial-advertise-peer-urls http://172.18.0.30:2380 \
--initial-cluster etcd0=http://172.18.0.30:2380,etcd1=http://172.18.0.26:2480 --initial-cluster-token etcd-cluster \
--initial-cluster-state new
Restart=always
[Install]
WantedBy=multi-user.target
주: 기본
2379
, 2380
포트가 점용되었을 경우 etcd를 설정하여 다른 점용되지 않은 포트를 감청할 수 있습니다2,node1 기계(172.18.0.26)
# vim /etc/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
WorkingDirectory=/data/etcd-v2.3.7-linux-amd64
User=root
ExecStart=/data/etcd-v2.3.7-linux-amd64/etcd --name etcd1 --data-dir /data/etcd_data/etcd0 \
--listen-client-urls http://172.18.0.26:2479,http://localhost:2479 --advertise-client-urls http://172.18.0.26:2479,http://localhost:2479 \
--listen-peer-urls http://172.18.0.26:2480 --initial-advertise-peer-urls http://172.18.0.26:2480 \
--initial-cluster etcd0=http://172.18.0.30:2380,etcd1=http://172.18.0.26:2480 --initial-cluster-token etcd-cluster \
--initial-cluster-state existing
Restart=always
[Install]
WantedBy=multi-user.target
3. etcd 서비스 시작
etcd 서비스를 설정한 후, 각각 마스터와 node1 노드의 etcd 서비스를 시작합니다
# step1: systemd ( systemd )
$ systemctl daemon-reload
# step2: etcd
$ systemctl restart etcd
# etcd
$ systmectl stop etcd
# etcd
$ systemctl status etcd
# etcd
$ journalctl -u etcd
# etcd
$ systemctl enable etcd
4. etcd 사용
# etcd ( )
$ /data/etcd-v2.3.7-linux-amd64/etcdctl member list
bd3b67d271b1097d: name=etcd0 peerURLs=http://172.18.0.30:2380 clientURLs=http://172.18.0.30:2379,http://localhost:2379 isLeader=true
e5ad2a6d82697b13: name=etcd1 peerURLs=http://172.18.0.26:2480 clientURLs=http://172.18.0.26:2479,http://localhost:2479 isLeader=false
#
$ /data/etcd-v2.3.7-linux-amd64/etcdctl cluster-health
member bd3b67d271b1097d is healthy: got healthy result from http://172.18.0.30:2379
member e5ad2a6d82697b13 is healthy: got healthy result from http://172.18.0.26:2479
cluster is healthy
# master set key-value
$ /data/etcd-v2.3.7-linux-amd64/etcdctl set name tab609
tab609
# node1 get key ( : 2380 --endpoints)
$ /data/etcd-v2.3.7-linux-amd64/etcdctl --endpoints http://localhost:2479 get name
tab609
# etcdctl
$ /data/etcd-v2.3.7-linux-amd64/etcdctl help
5. etcd 그룹에 노드node2(172.18.0.17) 추가
1. etcd 설치
설치 단계와 동일
2, 설정 etcd
노드
# vim /etc/systemd/sytem/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
WorkingDirectory=/data/etcd-v2.3.7-linux-amd64
User=root
ExecStart=/data/etcd-v2.3.7-linux-amd64/etcd --name etcd2 --data-dir /data/etcd_data/etcd2 \
--listen-client-urls http://172.18.0.17:2479,http://localhost:2479 --advertise-client-urls http://172.18.0.17:2479,http://localhost:2479 \
--listen-peer-urls http://172.18.0.17:2480 --initial-advertise-peer-urls http://172.18.0.17:2480 \
--initial-cluster etcd0=http://172.18.0.30:2380,etcd1=http://172.18.0.26:2480,etcd2=http://172.18.0.17:2480 --initial-cluster-token yj1918-etcd-cluster \
--initial-cluster-state existing
Restart=always
[Install]
WantedBy=multi-user.target
마스터 노드 설정 파일의 그룹 구성원에 node2 노드를 추가하려면
--initial-cluster
매개 변수 옵션만 수정하십시오# vim /etc/systemd/sytem/etcd.service
ExecStart= ... \
--initial-cluster etcd0=http://172.18.0.30:2380,etcd1=http://172.18.0.26:2480,etcd2=http://172.18.0.17:2480
같은 node1 노드 설정 파일의 그룹 구성원도 node2 노드를 추가합니다.
--initial-cluster
매개 변수 옵션만 수정하면 됩니다.# vim /etc/systemd/sytem/etcd.service
ExecStart= ... \
--initial-cluster etcd0=http://172.18.0.30:2380,etcd1=http://172.18.0.26:2480,etcd2=http://172.18.0.17:2480
3, etcd 서비스 시작
각각 마스터, node1, node2에서 같은 시작 절차를 실행하지만, node2를 시작할 때 시작에 실패하면 다음과 같은 오류를 보고합니다
error validating peerURLs {ClusterID:b0f36b8e1c8349f4 Members:[&{ID:bd3b67d271b1097d RaftAttributes:{PeerURLs:[http://172.18.0.30:2380]} Attributes:{Name:etcd0 ClientURLs:[http://172.18.0.30:2379]
즉, 포트(master)의 rul을 검증하는 중 오류가 발생했습니다. 구글에서 해결 방법을 찾았습니다. 새로운 노드를 시작하기 전에 새 노드를 그룹에 연결한 다음 새 노드를 시작해야 합니다.
# master (master )
$ /data/etcd-v2.3.7-linux-amd64/etcdctl member add node2 http://172.18.0.17:2480
# node2 etcd (node2 )
$ systemctl restart etcd
# ( node2 , 2379 --endpoints)
$ /data/etcd-v2.3.7-linux-amd64/etcdctl --endpoints http://172.18.0.17:2479 member list
bd3b67d271b1097d: name=etcd0 peerURLs=http://172.18.0.30:2380 clientURLs=http://172.18.0.30:2379,http://localhost:2379 isLeader=true
e20ddba3b692fe46: name=etcd2 peerURLs=http://172.18.0.17:2480 clientURLs=http://172.18.0.17:2479,http://localhost:2479 isLeader=false
e5ad2a6d82697b13: name=etcd1 peerURLs=http://172.18.0.26:2480 clientURLs=http://172.18.0.26:2479,http://localhost:2479 isLeader=false
마지막으로: etcd는 집단입니다. 우리가 get에서 데이터를 찾을 때 데이터의 일치성과 신뢰성을 어떻게 보장합니까?etcd는 유사한 선거를 통해 과반이 규칙을 통해 데이터를 되돌려준다.예를 들어 집단에 세 대의 기계가 있는데 두 대의 키-value가 모두 같으면 3분의 2가 반이 넘으면 데이터를 되돌려준다.데이터의 일관성과 신뢰성을 보장하기 위해 etcd 클러스터의 시스템 수는 짝수가 아닌 홀수와 한 노드보다 커야 합니다. 자세히 보면 다음과 같습니다.https://www.jianshu.com/p/5aed73b288f7
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CRD를 통한 사용자 정의 컨트롤러의 예 소개이 항목은 사용자 정의 리소스 정의(CRD)를 사용하여 사용자 정의 컨트롤러를 구현하는 예시를 설명합니다.실시 예로 당사 내에서 개발·이용하는 Etcd as a 서비스의 개요와 구조를 소개합니다. 이 항목은 Etcd...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.