環境
系統:CentOS Linux release 7.6.1810 (Core)
(已經關閉防火牆)
consul版本:1.6.1
(latest)
一、單機
1、單節點
在一臺服務器172.20.36.40
上的docker中部署一個consul,開啓常用的端口及外部可以web訪問,使用命令:
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 consul agent -server -bootstrap -advertise 172.20.36.40 -client 0.0.0.0 -ui
啓動成功,且在另一臺機器上web可以訪問8500端口:
2、多節點
在一臺服務器上部署三個基於docker的consul,理論上來說沒有任何的意義,達不到分佈式部署的真正目的,我們直接不考慮,跳過。
二、多機分佈式部署
我們準備兩臺機器172.20.36.40
和172.20.36.45
,在這兩臺機器上使用docker部署consul。
1、主節點部署
在機器172.20.36.40
上部署第一個節點,對外的IP地址均使用172.20.36.40
,使用下面的指令:
docker run -d \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 8600:53/udp \
-h node1 \
consul agent -server --bootstrap-expect 2 -advertise 172.20.36.40 -client 0.0.0.0 -ui
然後用web端訪問consul的8500,發現訪問不了,結果:
因爲上面的指令設置了-bootstrap-expect 2
,必須得2個節點都正常的時候才能正常訪問
2、第二個節點部署
在機器172.20.36.45
上部署第二個節點,指令如下:
docker run -d \
-p 172.20.36.45:8300:8300 \
-p 172.20.36.45:8301:8301 \
-p 172.20.36.45:8301:8301/udp \
-p 172.20.36.45:8302:8302 \
-p 172.20.36.45:8302:8302/udp \
-p 172.20.36.45:8400:8400 \
-p 172.20.36.45:8500:8500 \
-p 172.20.36.45:8600:53/udp \
-h node2 consul agent -server -advertise 172.20.36.45 -join 172.20.36.40 -client 0.0.0.0 -ui
然後web端訪問,發現是沒有問題的: