在Linux上部署etcd集群


前言

1.1 etcd簡介

etcd是CoreOS團隊於2013年6月發起的開源項目,它的目標是構建一個高可用的分布式鍵值(key-value)數據庫。etcd內部采用raft協議作為一致性算法,etcd基於Go語言實現。

etcd作為服務發現系統,有以下的特點:

  • 簡單:安裝配置簡單,而且提供了HTTP API進行交互,使用也很簡單
  • 安全:支持SSL證書驗證
  • 快速:根據官方提供的benchmark數據,單實例支持每秒2k+讀操作
  • 可靠:采用raft算法,實現分布式系統數據的可用性和一致性

1.2 安裝環境

本實驗需要兩台服務器,如下表所示。

 

 

操作系統

內存

CPU

IP地址

主機名

服務器1

Centos 7.5

32G

雙核四線程CPU * 2

10.40.239.234

node234

服務器2

Centos 7.5

32G

雙核四線程CPU * 2

10.40.239.235

node235

2 操作流程

2.1 對服務器校時

這里我們使用國家授時中心NTP(Network Time Protocol)服務對兩台服務器校時:

ntpdate ntp.ntsc.ac.cn

2.2 安裝etcd

在兩台服務器上執行下面的命令,安裝etcd:

yum -y install etcd

 

執行下面的命令,查看etcd:

yum list installed |grep -i etcd

如果出現如下結果,表示安裝成功:

etcd.x86_64                 3.3.11-2.el7.centos            @extras

 

2.3 配置etcd

2.3.1 node234 上的配置

    1. 備份原先的etcd配置文件。

cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

 

2.編輯配置文件:

vi /etc/etcd/etcd.conf

配置如下內容:

ETCD_DATA_DIR="/var/lib/etcd/node234.etcd"

ETCD_LISTEN_PEER_URLS="http://10.40.239.234:2380"

ETCD_LISTEN_CLIENT_URLS="http://10.40.239.234:2379,http://localhost:2379"

ETCD_NAME="node234"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.40.239.234:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://10.40.239.234:2379"

ETCD_INITIAL_CLUSTER="node234=http://10.40.239.234:2380, node235=http://10.40.239.235:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

 

這里解釋一下這些參數的含義:

ETCD_DATA_DIR:數據存儲目錄。由etcd自動創建。

 

ETCD_LISTEN_PEER_URLS:監聽在對等節點流量上的URL列表,該參數告訴etcd在指定的 “協議://IP:端口”組合上接收來自其對等方的傳入請求。協議可以是http或者https。或者,使用unix://<file-path>或者unixs://<file-path>到unix sockets。如果將0.0.0.0作為IP,etcd將監聽在所有的接口上的給定端口。如果給定了IP和端口,etcd將監聽指定的接口和端口。可以使用多個URL指定要監聽的地址和端口的數量。 etcd將響應來自任何列出的地址和端口的請求。

 

ETCD_LISTEN_CLIENT_URLS:監聽在客戶端流量上的URL列表,該參數告訴etcd在指定的“協議://IP:端口”組合上接受來自客戶端的傳入請求。協議可以是http或者https。或者,使用unix://<file-path>或者unixs://<file-path>到unix sockets。如果將0.0.0.0作為IP,etcd將監聽在所有的接口上的給定端口。如果給定了Ip和端口,etcd將監聽指定的接口和端口。可以使用多個URL指定要監聽的地址和端口的數量。 etcd將響應來自任何列出的地址和端口的請求。

 

ETCD_NAME:此成員的名字。

 

ETCD_INITIAL_ADVERTISE_PEER_URLS:此成員對等URL的列表,用來通知到集群的其余部分。 這些地址用於在集群周圍傳送etcd數據。 所有集群成員必須至少有一個路由。 這些URL可以包含域名。

 

ETCD_ADVERTISE_CLIENT_URLS:此成員的客戶端URL的列表,這些URL廣播給集群的其余部分。 這些URL可以包含域名。

 

ETCD_INITIAL_CLUSTER:啟動集群的初始化配置。配置集群的成員。

 

ETCD_INITIAL_CLUSTER_TOKEN:引導期間etcd群集的初始集群令牌。

 

ETCD_INITIAL_CLUSTER_STATE:初始群集狀態(“新”或“現有”)。 對於在初始靜態或DNS引導過程中存在的所有成員,將其設置為new。 如果此選項設置為existing,則etcd將嘗試加入現存集群。 如果設置了錯誤的值,etcd將嘗試啟動,但會安全地失敗。

 

更多信息,可以參照etcd官方文檔

 

2.3.1 node235 上的配置

1. 備份原先的etcd配置文件。

cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

 

2.編輯配置文件:

 

ETCD_DATA_DIR="/var/lib/etcd/node235.etcd"

ETCD_LISTEN_PEER_URLS="http://10.40.239.235:2380"

ETCD_LISTEN_CLIENT_URLS="http://10.40.239.235:2379,http://localhost:2379"

ETCD_NAME="node235"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.40.239.235:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://10.40.239.235:2379"

ETCD_INITIAL_CLUSTER="node234=http://10.40.239.234:2380,node235=http://10.40.239.235:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

 

 

2.4 修改etcd.service

在兩台服務器上,分別修改服務啟動文件 /usr/lib/systemd/system/etcd.service,內容設置如下:

 

[Service]

Type=notify

WorkingDirectory=/var/lib/etcd/

EnvironmentFile=-/etc/etcd/etcd.conf

User=etcd

# set GOMAXPROCS to number of processors

ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \

--name=\"${ETCD_NAME}\" \

--data-dir=\"${ETCD_DATA_DIR}\" \

--listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \

--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\" \

--initial-advertise-peer-urls=\"${ETCD_INITIAL_ADVERTISE_PEER_URLS}\" \

--advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \

--initial-cluster=\"${ETCD_INITIAL_CLUSTER}\"  \

--initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \

--initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\""

Restart=on-failure

LimitNOFILE=65536

 

 

2.5 啟動 etcd

依次啟動 node234和node235節點的 etcd

systemctl start etcd.service

設置允許開機啟動:

systemctl enable etcd.service

2.6 查看etcd的狀態

執行下列命令,驗證etcd的狀態:

etcdctl cluster-health

結果:

member 5a4542289ef36c64 is healthy: got healthy result from http://10.40.239.234:2379

member f792ada069403352 is healthy: got healthy result from http://10.40.239.235:2379

 

查看etfd 結點列表:

etcdctl member list

結果:

5a4542289ef36c64: name=node234 peerURLs=http://10.40.239.234:2380 clientURLs=http://10.40.239.234:2379 isLeader=true

f792ada069403352: name=node236 peerURLs=http://10.40.239.235:2380 clientURLs=http://10.40.239.236:2379 isLeader=false


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM