etcd 是 CoreOS 團隊於 2013 年 6 月發起的開源項目,它的目標是構建一個高可用的分布式鍵值(key-value)數據庫,基於 Go 語言實現,內部采用 raft 協議作為一致性算法。etcd目前默認使用 2379 端口提供 HTTP API 服務。
安裝
進入官網: https://github.com/coreos/etcd/releases/
下載相應的版本,例如我下載的是etcd-v3.3.2-linux-amd64.tar.gz,然后解壓。
進入目錄啟動etcd
cd etcd-v3.3.2-linux-amd64
./etcd
在實際使用時還需要把etcd的路徑加入到PATH中,這樣在其它的目錄下都可以直接啟動etcd。這種方法只是暫時設置環境變量,要永久設置可以參考修改/etc/profile文件或.bashrc文件。
ETCD=/home/suraer/Downloads/etcd-v3.3.2-linux-amd64
export ETCD
PATH=$PATH:$ETCD
設置完上述過程后在其它目錄下只要執行etcd命令就可以啟動etcd,后面有關etcd的操作都需要在啟動etcd的情況下完成。
在etc的同級目錄下有個可執行文件etcdctl,這個是etcd的一個工具,有關etcdctl的使用可以參考相關教程。
etcd API
etcd提供了許多API來操作數據,這里介紹幾個常見的API來說明。
創建數據
// 鍵/message的值為"Hello word"
curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello world"
獲取數據
// 獲取/message的值
curl http://127.0.0.1:2379/v2/keys/message
修改數據
curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello etcd"
刪除數據
curl http://127.0.0.1:2379/v2/keys/message -XDELETE
設置鍵的存活時間
// 5秒后/foo將被銷除
curl http://127.0.0.1:2379/v2/keys/foo -XPUT -d value=bar -d ttl=5
更多API參考官網: https://coreos.com/etcd/docs/latest/v2/api.html
Python-etcd
首先安裝etcd包
pip install python-etcd
創建client對象
注意,創建client的端口一定要和etcd啟動的端口一致,不然會報錯。
client = etcd.Client(host='127.0.0.1', port=2379)
設置值
client.write('/nodes/n1', 1)
獲取值
print(client.read('/nodes/n1').value)
刪除值
client.delete('/nodes/n1')