目錄
一湿滓、etcd 安裝
二、單節(jié)點(diǎn)etcd
三舌狗、部署etcd群集
四叽奥、群集搭建需注意的幾點(diǎn)
五、etcd web管理工具etcdkeeper
一把夸、etcd 安裝
1而线、下載安裝包
從https://github.com/etcd-io/etcd/releases選擇自己需要的版本,我用的是3.3.18這個(gè)版本 ,可以用wget命令下載
wget https://github.com/etcd-io/etcd/releases/download/v3.3.18/etcd-v3.3.18-linux-amd64.tar.gz
2膀篮、解壓嘹狞、重命名
tar -zxvf etcd-v3.3.18-linux-amd64.tar.gz /usr/local/etcd
cd /usr/local/etcd
mv etcd-v3.3.18-linux-amd64 etcd-v3.3.18
3、進(jìn)入主目錄誓竿,查看文件
cd etcd-v3.3.18
ls
主要有兩個(gè)文件etcd和etcdctl,etcd用于啟動(dòng)服務(wù)磅网,etcdctl屬于客戶端命令行工具
4、查看etcd版本
./etcdctl --version
可以看到api默認(rèn)版本是V2筷屡,如果要切換到V3版本需要修改環(huán)境變量涧偷,將ETCDCTL_API設(shè)為3,
vim /etc/profile
使配置文件生效
source /etc/profile
再次查看版本毙死,可以看到已經(jīng)切換到V3了燎潮,注意:V2和V3的命令有所不同,查看版本不能再用--version
./etcdctl version
5扼倘、將etcd和etcdctl復(fù)制到/usr/local/bin中确封,方便在任何目錄下直接用調(diào)用
cp etcd etcdctl /usr/local/bin/
二、單節(jié)點(diǎn)etcd
1再菊、單節(jié)點(diǎn)啟動(dòng)etcd
etcd
默認(rèn)用2379端口接受客戶端請求爪喘,數(shù)據(jù)存儲(chǔ)路默認(rèn)為主目錄下的default.etcd,當(dāng)然我們可以自定義端口和路徑纠拔,可以直接在命令中指定秉剑,也可以定義在配置文件中,啟動(dòng)命令時(shí)執(zhí)行配置文件即可
a稠诲、指定參數(shù)啟動(dòng)
etcd --listen-client-urls "http://0.0.0.0:2381" --advertise-client-urls "http://0.0.0.0:2381" --data-dir "/var/lib/etcd/data"
b侦鹏、指定配置文件啟動(dòng)
etcd --config-file=/etc/etcd/etcd.conf
查看成員列表,注意:如果客戶端請求端口設(shè)置在非2379上吕粹,需要指定endpoints參數(shù)种柑,因?yàn)槟J(rèn)請求下查看的是2379端口下成員狀態(tài)
etcdctl --endpoints=http://127.0.0.1:2381 member list --write-out=table
可以看到服務(wù)已經(jīng)正常開啟
注意:如果指定了listen-client-urls,則必須同時(shí)指定advertise-client-urls匹耕,否則會(huì)報(bào)錯(cuò)
三、部署etcd群集
群集由三臺(tái)云ecs組成荠雕,分別為:
ecs1:49.111.111.111(公),172.17.0.15(私)
ecs2:47.111.11.111(公),72.16.178.96(私)
ecs3:101.111.111.111(公),192.168.1.14(私)
考慮到安全稳其,以上公網(wǎng)ip在真實(shí)ip的基礎(chǔ)上對后三個(gè)ip段做了更改
1、三臺(tái)機(jī)器配置
第一臺(tái)機(jī)器ecs1
a炸卑、/etc目錄下新建etcd目錄既鞠,再新建etcd.conf文件
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://49.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.17.0.15:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
b、etcd配置為后臺(tái)服務(wù)配置文件:在/etc/systemd/system目錄下新建etcd.service文件
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=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
User=root
set GOMAXPROCS to number of processors
ExecStart=/usr/bin/etcd
--name={ETCD_DATA_DIR}
--listen-client-urls={ETCD_LISTEN_PEER_URLS}
--advertise-client-urls={ETCD_INITIAL_CLUSTER_TOKEN}
--initial-advertise-peer-urls={ETCD_INITIAL_CLUSTER_STATE}
--initial-cluster=${ETCD_INITIAL_CLUSTER}
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
這種方式是在ExecStart命令中指定etcd參數(shù)盖文,參數(shù)值是變量嘱蛋,來源于上面EnvironmentFile指定的/etc/etcd/etcd.conf文件,也可以指定配置文件ExecStart=/usr/bin/etcd --config-file=/etc/etcd/etcd.conf,不過此時(shí)的配置內(nèi)容格式必須是yaml或json格式,跟上面單機(jī)運(yùn)行etcd時(shí)格式一樣洒敏,如下:
name: "etcd-1"
data-dir: "/var/lib/etcd/data"
listen-client-urls: "http://0.0.0.0:2379"
listen-peer-urls: "http://0.0.0.0:2380"
initial-advertise-peer-urls: "http://49.234.197.50:2380"
advertise-client-urls: "http://172.17.0.15:2379,http://localhost:2379"
initial-cluster: "etcd-1=http://49.234.197.50:2380,etcd-2=http://47.96.100.241:2380,etcd-3=http://101.91.206.223:2380"
initial-cluster-token: "etcd-cluster-token"
initial-cluster-state: "new"
否則會(huì)報(bào)配置文件格式不正確的錯(cuò)龄恋。個(gè)人推薦使用指定配置文件的方式,方便配置集中管理凶伙,且減少了ExecStart命令的代碼行數(shù)郭毕,簡單明了
c、創(chuàng)建systemd的工作目錄WorkingDirectory "/var/lib/etcd/" 和etcd的數(shù)據(jù)存儲(chǔ)目錄data-dir "/var/lib/etcd/data",記得賦予目錄操作權(quán)限
mkdir -m 777 /var/lib/etcd
mkdir -m 777 /var/lib/etcd/data
第二臺(tái)機(jī)器ecs2
a函荣、etcd配置文件:/etc目錄下新建etcd目錄显押,再新建etcd.conf文件
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-2"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://47.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.178.96:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
b、etcd設(shè)置為后臺(tái)服務(wù)配置文件:同ecs1
c傻挂、同ecs1
第三臺(tái)機(jī)器ecs3
etcd配置文件:/etc目錄下新建etcd目錄乘碑,再新建etcd.conf文件
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-3"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://101.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.14:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
b、etcd配置為后臺(tái)服務(wù)配置文件:同ecs1
c金拒、同ecs1
2蝉仇、逐個(gè)在三臺(tái)機(jī)器上執(zhí)行如下命令,啟動(dòng)etcd服務(wù)
systemctl daemon-reload --使etcd.service文件修改生效
systemctl enable etcd
systemctl start etcd --啟動(dòng)etcd服務(wù)
3殖蚕、查看服務(wù)狀態(tài)
systemctl status etcd
可以看到etcd服務(wù)處于active狀態(tài)轿衔,啟動(dòng)成功
我們還可以用journalctl -xe查看etcd運(yùn)行日志,有問題時(shí)通過日志查找問題
journalctl -xe
4睦疫、查看成員信息
etcdctl member list --write-out=table
5害驹、查看群集狀態(tài)
etcdctl --endpoints=http://127.0.0.1:2379,http://47.111.1111.111:2379,http://101.111.111.111:2379 endpoint status --write-out=table
可以看到ecs1機(jī)器是leader,其他兩臺(tái)為follower,群集成功運(yùn)行
另外執(zhí)行etcdctl命令如果加上--write-out=table表示以表格的形式輸出結(jié)果,有title蛤育,方便看數(shù)據(jù)宛官。
四、群集搭建需注意的幾點(diǎn)
1瓦糕、--listen-client-urls用于監(jiān)聽客戶端消息,必須設(shè)置為真實(shí)ip地址底洗,如果機(jī)器為云主機(jī),可以設(shè)置為云主機(jī)的私有ip地址或0.0.0.0(代表監(jiān)聽所有地址),不能設(shè)置為公網(wǎng)ip地址咕娄,因?yàn)樵浦鳈C(jī)的公網(wǎng)ip是虛擬的亥揖,如果設(shè)置為公網(wǎng)ip會(huì)報(bào)“bind: cannot assign requested address”的錯(cuò)
2、--listen-peer-urls用于監(jiān)聽其他member發(fā)送過來的消息圣勒,跟listen-client-urls一樣费变,必須設(shè)置為真實(shí)ip地址,如果機(jī)器為云主機(jī),不能設(shè)置為公網(wǎng)ip
3、--initial-advertise-peer-urls用于監(jiān)聽其他member同步信號圣贸,該地址其他member必須能直接訪問挚歧,所以如果是云主機(jī)該地址必須設(shè)置為云主機(jī)的公網(wǎng)ip地址
4、--initial-cluster群集列表吁峻,該列表中的值必須跟各個(gè)member的initial-advertise-peer-urls值一樣
————————————————
版權(quán)聲明:本文為CSDN博主「peachesTao」的原創(chuàng)文章滑负,遵循CC 4.0 BY-SA版權(quán)協(xié)議在张,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/taoerchun/article/details/104446800