Docker安裝consul集群

假設(shè)三臺主機的ip分別為:

主機一:10.21.14.164

主機二:10.21.14.165

主機三:10.21.14.166

三臺主機的安裝步驟相似,以主機一為例:

1. 安裝docker服務(wù):

2. 啟動docker服務(wù):?

3. 查找consul鏡像:

docker search consul

4. 下載官方consul鏡像:

docker pull consul

5. 下載完后可檢查鏡像:

docker images

6. 三臺主機上建立數(shù)據(jù)目錄和配置目錄,目錄為空即可:

mkdir -p /app/consul/data

mkdir -p /app/consul/conf

7. 三臺主機依次啟動容器:

主機一的命令為:

docker run --net=host --name consul -v /app/consul/data:/consul/data -v /app/consul/conf:/consul/config -d docker.io/consul consul agent -server -bind=10.21.14.164 -client 0.0.0.0 -ui -bootstrap-expect=3 -data-dir /consul/data -config-dir /consul/config

主機二的命令為:

docker run --net=host --name consul -v /app/consul/data:/consul/data -v /app/consul/conf:/consul/config -d docker.io/consul consul agent -server -bind=10.21.14.165 -client 0.0.0.0 -ui -bootstrap-expect=3 -data-dir /consul/data -config-dir /consul/config -join 10.21.14.164

主機三的命令為:

docker run --net=host --name consul -v /app/consul/data:/consul/data -v /app/consul/conf:/consul/config -d docker.io/consul consul agent -server -bind=10.21.14.166 -client 0.0.0.0 -ui -bootstrap-expect=3 -data-dir /consul/data -config-dir /consul/config -join 10.21.14.164

命令說明:

--net=host:采用主機網(wǎng)絡(luò)配置,若采用默認(rèn)的bridge模式,則會存在容器跨主機間通信失敗的問題

-v /data/consul_data/data:/consul/data:主機的數(shù)據(jù)目錄掛載到容器的/consul/data下,因為該容器默認(rèn)的數(shù)據(jù)寫入位置即是/consul/data

-v /data/consul_data/conf:/consul/config:主機的配置目錄掛載到容器的/consul/conf下,因為該容器默認(rèn)的數(shù)據(jù)寫入位置即是/consul/conf

consul agent -server:consul的server啟動模式

consul agent?-bind=192.168.0.3:consul綁定到主機的ip上

consul agent? -bootstrap-expect=3:server要想啟動,需要至少3個server

consul agent?-data-dir /consul/data:consul的數(shù)據(jù)目錄

consul agent?-config-dir /consul/config:consul的配置目錄

consul agent?-join 192.168.0.1:對于主機二、三來說,需要加入到這個集群里

-client 0.0.0.0 -ui : 啟動ui界面

都啟動完成后,可以通過如下命令觀察consul日志,了解啟動情況:

docker logs 容器id/容器名稱

8. 檢查集群狀態(tài):

docker exec -it 容器id /bin/sh

通過該命令進入容器,查看集群信息:

[release@sh-lbs02 data]$ docker exec -it consul /bin/sh/?

# consul members


至此,集群已啟動完成,consul的端口打開較多,可以在主機上觀察其端口情況:

[release@sh-web02 ~]$netstat -tlnp|grep consul

[sudo] passwordfor release:

tcp? ? ? ? 00192.168.0.1:83000.0.0.0:*? ? ? ? ? ? ? LISTEN330/consul? ? ? ? ?

tcp? ? ? ? 00192.168.0.1:83010.0.0.0:*? ? ? ? ? ? ? LISTEN330/consul? ? ? ? ?

tcp? ? ? ? 00192.168.0.1:83020.0.0.0:*? ? ? ? ? ? ? LISTEN330/consul? ? ? ? ?

tcp? ? ? ? 00127.0.0.1:85000.0.0.0:*? ? ? ? ? ? ? LISTEN330/consul? ? ? ? ?

tcp? ? ? ? 00127.0.0.1:86000.0.0.0:*? ? ? ? ? ? ? LISTEN330/consul


9. 如何啟動consul客戶端?假設(shè)consul客戶端與服務(wù)端在同一個主機上:

首先,建立客戶端的配置目錄和數(shù)據(jù)目錄:

mkdir-p /app/consul_cli/data

mkdir-p /app/consul_cli/conf

其次,在配置目錄下分配客戶端使用的端口,避免與服務(wù)端的端口沖突:

cd /app/consul_cli/conf

touch basic.json

vi basic.json

#內(nèi)容如下:

{

? ? ? ? "ports": {

? ? ? ? ? ? ? ? "http":18501,

? ? ? ? ? ? ? ? "dns":18601,

? ? ? ? ? ? ? ? "rpc":18401,

? ? ? ? ? ? ? ? "serf_lan":18301,

? ? ? ? ? ? ? ? "serf_wan":18302,

? ? ? ? ? ? ? ? "server":18300? ? ? ? }

}

最后,啟動客戶端:

docker run? --net=host --name consul-cli -v /app/consul_cli/data:/consul/data -v /app/consul_cli/conf:/consul/config -d docker.io/consul consul agent -bind=10.21.14.166 -data-dir/consul/data -config-dir/consul/config -join10.21.14.164

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容