亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么安裝使用etcd

發布時間:2021-11-16 15:27:02 來源:億速云 閱讀:142 作者:iii 欄目:大數據

這篇文章主要講解了“怎么安裝使用etcd”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么安裝使用etcd”吧!

一、概述

    etcd是一個高可用的鍵值存儲系統,主要用于共享配置和服務發現。etcd是由CoreOS開發并維護的,靈感來自于 ZooKeeper 和 Doozer,它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性。Raft是一個新的一致性算法,適用于分布式系統的日志復制,Raft通過選舉的方式來實現一致性。Google的容器集群管理系統Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。在分布式系統中,如何管理節點間的狀態一直是一個難題,etcd像是專門為集群環境的服務發現和注冊而設計,它提供了數據TTL失效、數據改變監視、多值、目錄監聽、分布式鎖原子操作等功能,可以方便的跟蹤并管理集群節點的狀態。

etcd的特性如下:

  • 簡單: 支持curl方式的用戶API(HTTP+JSON)

  • 安全: 可選的SSL客戶端證書認證

  • 快速: 單實例每秒 1000 次寫操作

  • 可靠: 使用Raft保證一致性

二、安裝和使用

etcd的安裝非常簡單,可以直接下載編譯后的可執行文件。

wget https://github.com/coreos/etcd/releases/download/v3.0.12/etcd-v3.0.12-linux-amd64.tar.gz
tar xzvf etcd-v3.0.12-linux-amd64.tar.gz
./etcd --version

啟動方式:./etcd 

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcd
2019-07-06 04:05:14.961448 I | etcdmain: etcd Version: 3.0.12
2019-07-06 04:05:14.961795 I | etcdmain: Git SHA: 2d1e2e8
2019-07-06 04:05:14.962112 I | etcdmain: Go Version: go1.6.3
2019-07-06 04:05:14.962427 I | etcdmain: Go OS/Arch: linux/amd64
2019-07-06 04:05:14.962808 I | etcdmain: setting maximum number of CPUs to 1, total number of available CPUs is 1
2019-07-06 04:05:14.963079 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2019-07-06 04:05:14.964292 I | etcdmain: listening for peers on http://localhost:2380
2019-07-06 04:05:14.964866 I | etcdmain: listening for client requests on localhost:2379
2019-07-06 04:05:14.972043 I | etcdserver: name = default
2019-07-06 04:05:14.972560 I | etcdserver: data dir = default.etcd
2019-07-06 04:05:14.973497 I | etcdserver: member dir = default.etcd/member
2019-07-06 04:05:14.974055 I | etcdserver: heartbeat = 100ms
2019-07-06 04:05:14.974406 I | etcdserver: election = 1000ms
2019-07-06 04:05:14.974802 I | etcdserver: snapshot count = 10000
2019-07-06 04:05:14.975163 I | etcdserver: advertise client URLs = http://localhost:2379
2019-07-06 04:05:14.975658 I | etcdserver: initial advertise peer URLs = http://localhost:2380
2019-07-06 04:05:14.975985 I | etcdserver: initial cluster = default=http://localhost:2380
2019-07-06 04:05:14.987525 I | etcdserver: starting member 8e9e05c52164694d in cluster cdf818194e3a8c32
2019-07-06 04:05:14.988349 I | raft: 8e9e05c52164694d became follower at term 0
2019-07-06 04:05:14.988796 I | raft: newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2019-07-06 04:05:14.989133 I | raft: 8e9e05c52164694d became follower at term 1
2019-07-06 04:05:14.993798 I | etcdserver: starting server... [version: 3.0.12, cluster version: to_be_decided]
2019-07-06 04:05:15.018325 I | membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32
2019-07-06 04:05:15.191979 I | raft: 8e9e05c52164694d is starting a new election at term 1
2019-07-06 04:05:15.192994 I | raft: 8e9e05c52164694d became candidate at term 2
2019-07-06 04:05:15.193820 I | raft: 8e9e05c52164694d received vote from 8e9e05c52164694d at term 2
2019-07-06 04:05:15.194712 I | raft: 8e9e05c52164694d became leader at term 2
2019-07-06 04:05:15.195595 I | raft: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2
2019-07-06 04:05:15.197315 I | etcdserver: setting up the initial cluster version to 3.0
2019-07-06 04:05:15.199185 N | membership: set the initial cluster version to 3.0
2019-07-06 04:05:15.199995 I | api: enabled capabilities for version 3.0
2019-07-06 04:05:15.200486 I | etcdmain: ready to serve client requests
2019-07-06 04:05:15.205889 N | etcdmain: serving insecure client requests on localhost:2379, this is strongly discouraged!
2019-07-06 04:05:15.212655 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2019-07-06 04:05:15.214893 E | etcdmain: forgot to set Type=notify in systemd service file?

從上面的輸出中,我們可以看到很多信息。以下是幾個比較重要的信息:

2019-07-06 04:05:14.972043 I | etcdserver: name = default

name表示節點名稱,默認為default。

2019-07-06 04:05:14.972560 I | etcdserver: data dir = default.etcd

data-dir 保存日志和快照的目錄,默認為當前工作目錄default.etcd/目錄下。

2019-07-06 04:05:14.974055 I | etcdserver: heartbeat = 100ms

heartbeat為100ms,該參數的作用是leader多久發送一次心跳到followers,默認值是100ms。

2019-07-06 04:05:14.974406 I | etcdserver: election = 1000ms

election為1000ms,該參數的作用是重新投票的超時時間,如果follow在該時間間隔沒有收到心跳包,會觸發重新投票,默認為1000ms。

2019-07-06 04:05:14.974802 I | etcdserver: snapshot count = 10000

snapshot count為10000,該參數的作用是指定有多少事務被提交時,觸發截取快照保存到磁盤。 

2019-07-06 04:05:14.975163 I | etcdserver: advertise client URLs = http://localhost:2379

在http://localhost:2379提供HTTP API服務,供客戶端交互。 

2019-07-06 04:05:14.975985 I | etcdserver: initial cluster = default=http://localhost:2380

在http://localhost:2380和集群中其他節點通信。

集群和每個節點都會生成一個uuid。 
啟動的時候會運行raft,選舉出leader。

采用這種方式啟動的etcd只是一個程序,如果啟動etcd的窗口被關閉的話則etcd便會被關閉 
,所以如果要長期使用的話最好是為etcd開啟一個服務,此處便不提供開啟服務的方法,如果有需要讀者可以自行百度。

etcd命令行接口使用

./etcdctl -h 可以查看用法

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl -h

etcd在鍵的組織上采用了層次化的空間結構(類似于文件系統中目錄的概念),用戶指定的鍵可以為單獨的名字,如:testkey,此時實際上放在根目錄/下面,也可以為指定目錄結構,如/cluster1/node2/testkey,則將創建相應的目錄結構。

set get

set 
指定某個鍵的值。 
-ttl ‘0’ 該鍵值的超時時間(單位為秒),不配置(默認為0)則永不超時 
–swap-with-value value 若該鍵現在的值是value,則進行設置操作 
–swap-with-index ‘0’ 若該鍵現在的索引值是指定索引,則進行設置操作

get 
獲取指定鍵的值
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl set --ttl '5' key_1 "hello world"
hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl get key_1
hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl get key_1
Error:  100: Key not found (/key_1) [6]

上面第二個get方法在是在5秒之后請求的,已經請求不到key了,因為已經超時。

update

update 
對指定鍵進行修改 
–ttl ‘0’ 超時時間(單位為秒),不配置(默認為 0)則永不超時。
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl set --ttl '5' key_1 "hello world"
hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl update key_1 "hello world 2"
hello world 2
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl get key_1
hello world 2

rm

rm 
刪除某個鍵值。 
–dir 如果鍵是個空目錄或者鍵值對則刪除 
–recursive 刪除目錄和所有子鍵 
–with-value 檢查現有的值是否匹配 
–with-index ‘0’檢查現有的index是否匹配
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl set --ttl '5' key_1 "hello world"
hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl rm key_1
PrevNode.Value: hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl get key_1
Error:  100: Key not found (/key_1) [18]

mk

mk 
如果給定的鍵不存在,則創建一個新的鍵值。 
–ttl ‘0’ 超時時間(單位為秒),不配置(默認為 0)。則永不超時
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl mk /testdir/testkey "hello world"
hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl mk /testdir/testkey "hello world"
Error:  105: Key already exists (/testdir/testkey) [20]

mkdir

mkdir 
–ttl ‘0’ 超時時間(單位為秒),不配置(默認為0)則永不超時。 
如果給定的鍵目錄不存在,則創建一個新的鍵目錄。
如果給定的鍵目錄存在,則報錯
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl mkdir dir2
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl mkdir dir2
Error:  105: Key already exists (/dir2) [21]

setdir

setdir 
創建一個鍵目錄。如果目錄不存在就創建,如果目錄存在更新目錄TTL。 
–ttl ‘0’ 超時時間(單位為秒),不配置(默認為0)則永不超時。
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl setdir dir3

rmdir

rmdir 
刪除一個空目錄,或者鍵值對。
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl rmdir dir3

ls

ls 
列出目錄(默認為根目錄)下的鍵或者子目錄,默認不顯示子目錄中內容。 
–sort 將輸出結果排序 
–recursive 如果目錄下有子目錄,則遞歸輸出其中的內容 
-p 對于輸出為目錄,在最后添加/進行區分
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl ls
/message
/test
/testdir
/dir2

非數據庫操作,非數據庫操作包括:備份、監測、節點管理等

backup

backup 
備份etcd的數據。 
–data-dir etcd的數據目錄 
–backup-dir 備份到指定路徑
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl backup --data-dir default.etcd/ --backup-dir ~/

watch

watch 
監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值并退出。 
–forever 一直監測直到用戶按CTRL+C退出 
–after-index ‘0’ 在指定index之前一直監測 
–recursive 返回所有的鍵值和子鍵值

先設置mykey="hello world",然后監測mykey

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl set mykey "Hello world"
Hello world
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl watch mykey

在另一個窗口中修改mykey的值:

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl update mykey "test"
test

之前的監控界面便打印出test,然后退出:

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl watch mykey
test

exec-watch 

exec-watch 
監測一個鍵值的變化,一旦鍵值發生更新,就執行給定命令。 
–after-index ‘0’ 在指定 index 之前一直監測 
–recursive 返回所有的鍵值和子鍵值
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl exec-watch  mykey -- sh -c "ls"

當我在另一個窗口更新mykey時,輸出:

Documentation	   README.md		default.etcd	   etcd     nohup.out
README-etcdctl.md  READMEv2-etcdctl.md	docker-node1.etcd  etcdctl

member

member 
list 列出etcd實例 
add 添加etcd實例 
remove 刪除etcd實例

查看列表: 

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl member list
8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true

刪除節點:

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl member remove 8e9e05c52164694d
Removed member 8e9e05c52164694d from cluster
duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl member list
Error:  client: etcd cluster is unavailable or misconfigured
error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused

向集群中新加節點,例如:

duandingyang@ubuntu:~/etcd-v3.0.12-linux-amd64$ ./etcdctl member add etcd2  http://localhost:2380

感謝各位的閱讀,以上就是“怎么安裝使用etcd”的內容了,經過本文的學習后,相信大家對怎么安裝使用etcd這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 浙江省| 拉萨市| 潮州市| 松桃| 乌兰察布市| 微博| 克山县| 广平县| 天长市| 钦州市| 资兴市| 和林格尔县| 江陵县| 南昌县| 大连市| 新河县| 蒲城县| 安化县| 丽江市| 海城市| 凤山县| 大名县| 平度市| 新疆| 剑河县| 益阳市| 城步| 张家港市| 马关县| 双鸭山市| 友谊县| 淅川县| 丰宁| 吉林省| 崇明县| 耒阳市| 田东县| 潞西市| 祥云县| 安庆市|