iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
DevOps

Hashicorp 0 到 0.003系列 第 2

Day 2. Hashicorp Consul 介紹

第二天~天氣晴,肝很硬~壓哨發文

Hashicorp Consul 是甚麼?

在還沒有微服務的應用前,當面臨效能不足要新增node時,需要先開個VM ~> 安裝middleware ~> 部屬程式 ~> 請network admin開通ACL.
但是在微服務爆炸的時代,透過容器化的技術,node總是說加就加,說減就減,在這種情況下該如何有效的發現微服務的增減,以及如何管理微服務之間的連接溝通變成了一個議題。

Hashicorp Consul提供了一些功能來解決遇到的困難。

  1. Key / Value store: 將需要動態配置的資料存放於此,透過Consul 提供HTTP API的呼叫來達到即時性。
    若無特別的配置,在跨DC的K/V是獨立於各數據中心的,但可以透過consul-replicate tool來定期複製資料。
  2. Service discovery: 當在Consul上註冊服務後,之後只要有服務的增減,Consul都可以自動發現,並將新增的node馬上對外堤供服務。
  3. Health check: 有了service discovery後還不夠,因為當node異常時,要能偵測出來,並中斷流量,才能確保user連到的node是正常的。
  4. Secure Service Communication: 在Consul上註冊的服務,Consul提供TLS的加密連線;另外也可以透過Intentions來允許或拒絕service之間的溝通。
  5. Multi Datacenter: 在雲當道的時代,你可能會使用至少兩種不同的雲供應商,或是同供應商不同region來分散故障的風險,Consul也支援多個DC或是跨region.

架構

下圖是跨了兩個不同DC的架構圖,Consul可以分為Server與Client,在閱讀官方文件時,有時會統稱為Consul agent。
Consul Server是整個網格的控制中心,通常會建置3或5台來確保高可用性,使用Consensus Protocol來確保一致性,Consul Server之間會選出一個Leader,follower會跟leader做replication;Consul Client會部屬在node上,client與server之間溝通用使用Gossip Protocol來作為可靠且快速的事件廣播;想更進一步瞭解這兩個protocol可以參考官方文件說明。

Consensus Protocol: https://www.consul.io/docs/internals/gossip
Gossip Protocol: https://www.consul.io/docs/internals/consensus

art

硬體需求

Type CPU Memory Disk Typical Cloud Instance Types
Small 2-4 core 8-16 GB RAM 50GB AWS: m5.large, m5.xlarge
Azure: Standard_D2_v3, Standard_D4_v3
GCP: n2-standard-2, n2-standard-4
Large 8-16 core 32-64 GB RAM 100GB AWS: m5.2xlarge, m5.4xlarge
Azure: Standard_D8_v3, Standard_D16_v3
GCP: n2-standard-8, n2-standard-16

.Small建議用於開發或測試環境。
.Large用於高負載的正式環境。
.效能的調校官方除了有"performance"可以設定外,也有獨立一篇文章說明。

Port 需求

Use Default Ports
DNS: The DNS server (TCP and UDP) 8600
HTTP: The HTTP API (TCP Only) 8500
HTTPS: The HTTPs API disabled (8501)*
gRPC: The gRPC API disabled (8502)*
LAN Serf: The Serf LAN port (TCP and UDP) 8301
Wan Serf: The Serf WAN port (TCP and UDP) 8302
server: Server RPC address (TCP Only) 8300
Sidecar Proxy Min: Inclusive min port number to use for automatically assigned sidecar service registrations. 21000
Sidecar Proxy Max: Inclusive max port number to use for automatically assigned sidecar service registrations. 21255

圖片來源: https://www.consul.io/docs/internals/architecture


上一篇
Day1. 開場
下一篇
Day 3. Consul 安裝與啟動DEV mode
系列文
Hashicorp 0 到 0.00330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言