Etcd docker 容器化部署
Etcd標(biāo)準(zhǔn)軟件基于Bitnami Etcd 構(gòu)建。當(dāng)前版本為3.5.11
你可以通過輕云UC部署工具直接安裝部署,也可以手動(dòng)按如下文檔操作,該項(xiàng)目已經(jīng)全面開源,可以從如下環(huán)境獲取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
什么是etcd
etcd是一個(gè)分布式的、高可用的、一致的key-value存儲數(shù)據(jù)庫,基于Go語言實(shí)現(xiàn),主要用于共享配置和服務(wù)發(fā)現(xiàn)。 它歸根結(jié)底是一個(gè)存儲組件,且可以實(shí)現(xiàn)配置共享和服務(wù)發(fā)現(xiàn)。在分布式系統(tǒng)中,各種服務(wù)配置信息的管理共享和服務(wù)發(fā)現(xiàn)是一個(gè)很基本也是很重要的問題,無論你調(diào)用服務(wù)還是調(diào)度容器,都需要知道對應(yīng)的服務(wù)實(shí)例和容器節(jié)點(diǎn)地址信息。etcd 就是這樣一款實(shí)現(xiàn)了元數(shù)據(jù)信息可靠存儲的組件。
容器示例
在示例中,我們將創(chuàng)建一個(gè) Etcd 客戶端實(shí)例,該實(shí)例將連接到與客戶端在同一 docker 網(wǎng)絡(luò)上運(yùn)行的服務(wù)器實(shí)例。
適用docker 命令行
第 1 步:創(chuàng)建網(wǎng)絡(luò)
docker network create app-tier --driver bridge
步驟 2:啟動(dòng) Etcd 服務(wù)器實(shí)例
使用命令--network app-tier的參數(shù)docker run將 Etcd 容器連接到網(wǎng)絡(luò)app-tier。
docker run -d --name Etcd-server \
--network app-tier \
--publish 2379:2379 \
--publish 2380:2380 \
--env ALLOW_NONE_AUTHENTICATION=yes \
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/etcd:latest
第 3 步:啟動(dòng) Etcd 客戶端實(shí)例
最后,我們創(chuàng)建一個(gè)新的容器實(shí)例來啟動(dòng) Etcd 客戶端并連接到上一步中創(chuàng)建的服務(wù)器:
docker run -it --rm \
--network app-tier \
--env ALLOW_NONE_AUTHENTICATION=yes \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/etcd:latest etcdctl --endpoints http://etcd-server:2379 put /message Hello
使用 Docker Compose 文件
如果未指定,Docker Compose 會自動(dòng)設(shè)置一個(gè)新網(wǎng)絡(luò)并將所有已部署的服務(wù)附加到該網(wǎng)絡(luò)。但是,我們將顯式定義一個(gè)bridge名為 的新網(wǎng)絡(luò)app-tier。在此示例中,我們假設(shè)您希望從您自己的自定義應(yīng)用程序映像連接到 Etcd 服務(wù)器,該映像在以下代碼段中通過服務(wù)名稱進(jìn)行標(biāo)識myapp。
version: '2'
networks:
app-tier:
driver: bridge
services:
Etcd:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/etcd:latest'
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
ports:
- 2379:2379
- 2380:2380
networks:
- app-tier
myapp:
image: 'YOUR_APPLICATION_IMAGE'
networks:
- app-tier
重要:
請使用應(yīng)用程序image更新上述代碼片段中的占位符YOUR_APPLICATION_IMAGE
在應(yīng)用程序容器中,使用主機(jī)名etcd連接到 Etcd 服務(wù)器
啟動(dòng)容器:
docker-compose up -d
配置
通過掛載宿主機(jī)的目錄到容器目錄中十分容易的更改相關(guān)配置,容器配置位置為:/opt/bitnami/etcd/conf
docker run --name etcd -v /path/to/etcd.conf.yml:/opt/bitnami/etcd/conf/etcd.conf.yml registry.cn-hangzhou.aliyuncs.com/qingcloudtech/etcd:latest
隨后可以通過宿主機(jī)上更改相關(guān)配置文件
更改docker-compose.yml完成此操作:
etcd:
...
volumes:
- /path/to/etcd.conf.yml:/opt/bitnami/etcd/conf/etcd.conf.yml
...
注意:默認(rèn)情況下,環(huán)境變量ETCDCTL_API設(shè)置為3. 修改此環(huán)境變量以使用不同的 API 版本。