Etcd在Linux CentOS7下載、安裝


概述:

etcd完整的cluster(集群)至少有三台,這樣才能選舉出一個master (主節點)其他兩個就是node(次節點)。

如果小於 3 台則無法進行選舉,造成集群 不可用。

之前Etcd用的是4000和4001端口,后來由IANA分配了現在的2379和2380端口。

2379端口:提供HTTP API服務,和etcdctl交互;

2380端口:集群中節點間通訊;

一、下載etcd

[root@Cent0S7 ~]# curl -O https://github.com/etcd-io/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz

    PS:curl默認不支持Https,命令#curl -V(V大寫)查看Protocols項有沒有https ,如果沒有就要用命令:# yum install openssl-devel 裝SSL

二、 解壓 etcd-v3.1.5-linux-amd64.tar.gz 壓縮文件

[root@Cent0S7 ~]# tar -zxf etcd-v3.1.5-linux-amd64.tar.gz
[root@Cent0S7 ~]# cd etcd-v3.1.5-linux-amd64/

        將文件夾中etcdetcdctl兩個文件添加可執行文件路徑到環境變量PATH中。

 三、etcd是服務端,etcdctl是運維人員操作的控制端,一般只需要裝etcd,現在是學習就都裝在同一台機器。

[root@Cent0S7 etcd-v3.1.5-linux-amd64]# mv etcd /usr/local/bin
[root@Cent0S7 etcd-v3.1.5-linux-amd64]# mv etcdctl /usr/local/bin

       PS:用echo $PATH查看自己的環境變量路徑

四、修改環境變量PATH

[root@Cent0S7 ~]# vi /etc/profile

五、在文件最后加入變量,因為etcd默認使用V2版本,我們需要V3版本的API。

export ETCDCTL_API=3

六、變量生效,其他用戶生效也要執行下面命令。

[root@Cent0S7 ~]# source /etc/profile

七、查看版本信息

[root@Cent0S7 ~]# etcdctl -v 或 etcdctl -version
etcdctl version: 3.1.5
API version: 3.1

八、創建etcd配置文件,一定需要確認用戶數據目錄etcd有讀寫權限,否則服務可能無法正確啟動

[root@Cent0S7 ~]# mkdir -p /var/lib/etcd/
[root@Cent0S7 ~]# cat <<EOF | sudo tee /etc/etcd.conf
#節點名稱
ETCD_NAME=$(hostname -s)
#數據存放位置
ETCD_DATA_DIR=/var/lib/etcd/
EOF

九、創建開機啟動文件

[root@Cent0S7 ~]# cat <<EOF | sudo tee /etc/systemd/system/etcd.service

[Unit]
Description=Etcd Server
Documentation=https://github.com/coreos/etcd
After=network.target

[Service]
User=root
Type=notify
#這個文件特別關鍵,etcd使用的環境變量都需要通過環境變量文件讀取
EnvironmentFile=-/etc/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
EOF 

 PS:EnvironmentFile=-/etc/etcd.conf 這個配置項里/etc前的-是K8S生成配置文件時就有的,不是我誤寫的。

十、重新加載配置 && 開機啟動 && 啟動etcd

[root@Cent0S7 ~]# systemctl daemon-reload && systemctl enable etcd && systemctl start etcd

    開機啟動設置狀態,狀態enabled

[root@Cent0S7 ~]# systemctl list-unit-files etcd.service
UNIT FILE    STATE  
etcd.service enabled

1 unit files listed.

 查看etcd狀態

[root@Cent0S7 ~]# systemctl show etcd.service
Type=notify
Restart=on-failure
NotifyAccess=main
RestartUSec=10s
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
WatchdogUSec=0
WatchdogTimestamp=Sun 2020-11-29 22:44:07 CST
WatchdogTimestampMonotonic=9160693425
------  剩余內容 (略)  -------

十一、查看2379端口是否啟動成功

[root@Cent0S7 ~]# netstat -an |grep 2379
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:53156         127.0.0.1:2379          ESTABLISHED
tcp        0      0 127.0.0.1:2379          127.0.0.1:53156         ESTABLISHED

    PS: CentOS默認沒有裝netstat,需要 # yum install -y net-tools 自己裝

十二、測試

[root@Cent0S7 ~]# etcdctl put mykey "this is etcd"
OK
[root@Cent0S7 ~]# etcdctl get mykey
mykey
this is etcd

新建put后OK ,輸出也能看到值 this is etcd 啟動成功。

 

#####################   報錯  #################################

錯誤:

[tomcat@Cent0S7 ~]$ etcdctl put mykey "this is awesome"
No help topic for 'put'

解決方法:

export ETCDCTL_API=3

 

#####################  報錯     ################################

 

參考文章:

http://cnblogs.com/wujuntian/p/12837926.html

http://blog.51cto.com/zlyang/1951164

http://blog.csdn.net/gaowenhui2008/article/details/95961967

http://cnblogs.com/davygeek/p/7154780.html

http://blog.csdn.net/skh2015java/article/details/94012643


免責聲明!

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



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