- Consul 教程
- Consul - 首頁
- Consul - 簡介
- Consul - 架構
- Consul - 安裝
- Consul - 微服務實戰
- Consul - 引導和DNS
- Consul - 查詢節點
- Consul - 故障轉移事件
- Consul - 使用UI
- Consul - 在AWS上使用Consul
- Consul 有用資源
- Consul - 快速指南
- Consul - 有用資源
- Consul - 討論
Consul - 微服務實戰
本章將瞭解微服務如何與Consul協同工作。我們還將學習以下元件如何影響Consul。
- 使用Docker
- 構建Registrator用於服務發現
- 使用rkt和Nomad
現在讓我們詳細討論每一個。
使用Docker
在開始之前,請勿在生產環境中使用此設定,因為它僅用於演示目的。Docker是一個基於容器的服務,我們可以輕鬆地部署我們的應用程式。為了使用Consul,我們將使用以下連結中的映象 –0
https://hub.docker.com/r/progrium/consul/.
假設您的系統已安裝並正確配置了Docker。讓我們嘗試從Docker Hub拉取映象,執行以下命令:
$ docker pull progrium/consul
輸出將如以下螢幕截圖所示。
我們將以以下方式釋出一些帶有其埠的介面(在Docker上使用-p選項)。
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
此外,根據拉取操作,我們將主機名設定為node1。您可以使用-h標誌和您自己的主機名將其更改為您想要的任何名稱,如下所示。
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap
輸出將如以下螢幕截圖所示。
您還可以使用以下命令啟用Consul的UI模式:
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap -ui-dir /ui
您可以在https://:8500上檢視基於UI的輸出。以下螢幕截圖可以讓您更好地瞭解基於UI的輸出。
為了在不同節點上的各種Docker容器上使用Consul,我們可以在不同節點上執行以下命令:
在Node1上
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
其中,-bootstrap-expect 3表示Consul伺服器將在有3個對等節點連線之前等待,然後才能自我引導併成為一個工作的叢集。
在繼續之前,我們需要透過檢查容器來獲取容器的內部IP。對於我們的用例,我們將宣告$JOIN_IP。
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
在Node2上
因此,讓我們啟動Node2並告訴它使用上面程式中宣告的變數加入Node1。
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
在Node3上
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
構建Registrator用於服務發現
Registrator透過檢查容器上線情況自動註冊和登出任何Docker容器的服務。我們即將使用的Registrator目前支援可插拔的服務註冊中心,目前包括Consul、Etcd和SkyDNS2。當我們在網路上與不同的服務互動時,強烈建議使用Registrator。
$ docker pull gliderlabs/registrator:latest
輸出將如以下螢幕截圖所示。
$ docker run -d \ --name = registrator \ --net = host \ --volume = /var/run/docker.sock:/tmp/docker.sock \ gliderlabs/registrator:latest \ consul://:8500
輸出將如以下螢幕截圖所示。
您收到的輸出是您剛剛啟動的Docker容器的ID。您可以使用以下命令檢查容器是否正在執行:
$ docker ps -a
輸出將如以下螢幕截圖所示。
您還可以使用以下命令檢視Registrator的日誌。
$ docker logs registrator
使用rkt和Nomad
rkt是另一個基於容器的服務,您可以在您的環境中使用它。它由CoreOS構建。構建rkt的主要原因是提高安全性,這是Docker在2013-14年開發時面臨的危機問題之一。
至於Consul,我們可以使用Rkt Registrator來處理與Consul的服務發現。這個針對rkt的Registrator專案正在開發中,不建議用於生產環境。
您可以透過轉到其路徑並執行以下命令來檢查rkt是否已安裝。
$ ./rkt
您可以檢查輸出以檢視它是否已正確安裝,如以下螢幕截圖所示。
要嘗試rkt和Consul,請檢視:https://github.com/r3boot/rkt-registrator
Nomad工具
最常用和最受歡迎的選項之一是Nomad工具。Nomad是一個用於管理機器叢集並在其上執行應用程式的工具。它類似於Mesos或Kubernetes。預設情況下,Nomad在其自身內部包含Docker和rkt驅動程式。因此,如果您正在尋找使用Consul進行大規模容器部署,Nomad可能是一個不錯的解決方案。請檢視https://www.nomadproject.io/docs/drivers/rkt.html,瞭解更多關於Nomad的資訊。