iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
DevOps

Hashicorp 0 到 0.003系列 第 8

Day 8. Consul Service Discovery

  • 分享至 

  • xImage
  •  

還記得剛聽到Consul Service Discovery的介紹時,感覺很神可以自動發現服務,但玩下去才發現,原來也是要先定義好service的相關資訊才能做到service discovery.
接下來會介紹如何定義一個service, 如何告訴Consul我的service長的怎麼樣子?

在開始前我會準備兩台nodes,皆安裝好Consul client 以及啟動Nginx來當作是service.
我的環境會像這樣

$ consul members
Node              Address            Status  Type    Build  Protocol  DC      Segment
consul-server-01  10.168.1.175:8301  alive   server  1.8.3  2         ithome  <all>
consul-client-1   10.168.1.189:8301  alive   client  1.8.3  2         ithome  <default>
consul-client-2   10.168.1.149:8301  alive   client  1.8.3  2         ithome  <default>

Service Definition

定義service時,可以使用hcl或是json的格式,這裡使用hcl來作範例。

service {
  name = "ithome-web"
  tags = ["web","http"]
  port = 80
  token = "1d177b09-4528-bdb0-e5b0-e61ab7aa140a"
}

name: 告訴Consul我的service名稱。
tags: 設定tag.
port: 我的service用的是甚麼port.我的範例Nginx使用80 port.
token: 由於我們啟用了acl,所以不管做甚麼都要有token做認證。

Service Register

因為在Consul client上,如果執行不帶token會報錯。

$ consul services register web-service.hcl
Error registering service "ithome-web": Unexpected response code: 403 (Permission denied)

所以必須加上一個有權限可以註冊服務的token.

$ consul services register -token 499defa4-edc9-3f80-d001-95e5df7e21a6 web-service.hcl
Registered service: ithome-web

註冊好後可以在Web UI上看到
https://ithelp.ithome.com.tw/upload/images/20200908/20129223io7y6K3sId.png

現在ithome-web service有兩個node,接下來測試透過Consul是否可以解析的出來後面這兩台。

dig @10.168.1.175 -p 8600 ithome-web.service.consul

透過dig並指定DNS為"10.168.1.175", port 8600 如之前說明的是Consul DNS port,可以透過參數修改,
ithome-web.service.consul為service註冊後的FQDN, domain .service.consul 也可以透過參數修改。

驗證的結果:
可以看到兩筆 A record 對應到兩台node的IP是正確的,在Consul上註冊服務後,確實可以幫我們發現服務。

$ dig @10.168.1.175 -p 8600 ithome-web.service.consul

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.amzn2.0.4 <<>> @10.168.1.175 -p 8600 ithome-web.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3674
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ithome-web.service.consul.     IN      A

;; ANSWER SECTION:
ithome-web.service.consul. 0    IN      A       10.168.1.149
ithome-web.service.consul. 0    IN      A       10.168.1.189

;; Query time: 0 msec
;; SERVER: 10.168.1.175#8600(10.168.1.175)
;; WHEN: Tue Sep 08 14:38:09 UTC 2020
;; MSG SIZE  rcvd: 86

上一篇
Day 7. Consul Key / Value
下一篇
Day 9. Consul Service Health Check
系列文
Hashicorp 0 到 0.00330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言