1. 程式人生 > 實用技巧 >Consul 快速入門 - Kong最佳實踐

Consul 快速入門 - Kong最佳實踐

Consul是什麼

Consul是一個服務網格(微服務間的 TCP/IP,負責服務之間的網路呼叫、限流、熔斷和監控)解決方案,它是一個一個分散式的,高度可用的系統,而且開發使用都很簡便。它提供了一個功能齊全的控制平面,主要特點是:服務發現、健康檢查、鍵值儲存、安全服務通訊、多資料中心。

安裝Consul

這裡提供兩臺Centos:local12,local13
安裝方式:

[root@local13 ~]# wget https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip
[root@local13 ~]# unzip consul_1.2.2_linux_amd64.zip 
[root@local13 ~]# ./consul 
Usage: consul [--version] [--help] <command> [<args>]
# local12同上

執行Agent

安裝Consul後必須執行Agent,可以選擇伺服器或客戶端模式。每個資料中心至少有一個伺服器(推薦3~5個伺服器叢集)。

簡單起見,先啟動一個Agent的開發模式:

# Agent的開發模式
[root@local13 ~]# ./consul agent -dev
==> Starting Consul agent...
==> Consul agent running!

# 檢視叢集成員
[root@local13 ~]# ./consul members
Node     Address         Status  Type    Build  Protocol  DC   Segment
local13  127.0.0.1:8301  alive   server  1.2.2  2         dc1  <all>

# 使用 HTTP API 檢視
[root@local13 ~]# curl localhost:8500/v1/catalog/nodes
[
    {
        "ID": "796b14fe-1332-4aa0-d96f-8f287a4ccc7e",
        "Node": "local13",
        "Address": "127.0.0.1",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "127.0.0.1",
            "wan": "127.0.0.1"
        },
        "Meta": {
            "consul-network-segment": ""
        },
        "CreateIndex": 9,
        "ModifyIndex": 10
    }
]
# 還可以使用 DNS 介面來查詢節點(預設埠:8600)
[root@local13 ~]# yum install bind-utils
[root@local13 ~]# dig @127.0.0.1 -p 8600 local13.node.consul
...
;; QUESTION SECTION:
;local13.node.consul.       IN  A
;; ANSWER SECTION:
local13.node.consul.    0   IN  A   127.0.0.1
...

註冊服務

1、定義一個服務

[root@local13 ~]# mkdir /etc/consul.d
[root@local13 ~]# echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}'  | sudo tee /etc/consul.d/web.json
[root@local13 ~]# ./consul agent -dev -config-dir=/etc/consul.d

2、查詢一個服務

# 使用 DNS API
[root@local13 ~]# dig @127.0.0.1 -p 8600 web.service.consul
...
;; QUESTION SECTION:
;web.service.consul.        IN  A
;; ANSWER SECTION:
web.service.consul. 0   IN  A   127.0.0.1

# 使用 DNS API 查詢 SRV 記錄
[root@local13 ~]# dig @127.0.0.1 -p 8600 web.service.consul SRV
...
;; QUESTION SECTION:
;web.service.consul.        IN  SRV
;; ANSWER SECTION:
web.service.consul. 0   IN  SRV 1 1 80 local13.node.dc1.consul.
;; ADDITIONAL SECTION:
local13.node.dc1.consul. 0  IN  A   127.0.0.1
...

# 使用 HTTP API 查詢
[root@local13 ~]# curl http://localhost:8500/v1/catalog/service/web
# 健康檢查
[root@local13 ~]# curl 'http://localhost:8500/v1/health/service/web?passing'

Consul叢集

1、建立node1,consul server

[root@local12 ~]# ./consul agent -server -bootstrap-expect=1  \
-data-dir=/tmp/consul \
-node=agent-one -bind=192.168.56.112 \
-enable-script-checks=true -config-dir=/etc/consul.d \
-client 0.0.0.0 -ui
# -node:節點的名稱 
# -bind:繫結的一個地址,用於節點之間通訊的地址,可以是內外網,必須是可以訪問到的地址 
# -server:這個就是表示這個節點是個SERVER 
# -bootstrap-expect:這個就是表示期望提供的SERVER節點數目,數目一達到,它就會被啟用,然後就是LEADER了
# -dc:指明資料中心的名字
# -client 0.0.0.0 -ui:啟動UI(為了方便後續的UI訪問)

2、建立node2,consul client

[root@local13 ~]# ./consul agent -data-dir=/tmp/consul \
-node=agent-two   \
-bind=192.168.56.113 -enable-script-checks=true \
-config-dir=/etc/consul.d \
-ui

3、加入叢集

[root@local13 ~]# ./consul join 192.168.56.112
Successfully joined cluster by contacting 1 nodes.
[root@local13 ~]# ./consul members
Node       Address            Status  Type    Build  Protocol  DC   Segment
agent-one  192.168.1.13:8301  alive   server  1.2.2  2         dc1  <all>
agent-two  192.168.1.12:8301  alive   client  1.2.2  2         dc1  <default>

4、查詢節點

[root@local13 ~]# dig @127.0.0.1 -p 8600 agent-two.node.consul
...
;; QUESTION SECTION:
;agent-two.node.consul.     IN  A
;; ANSWER SECTION:
agent-two.node.consul.  0   IN  A   192.168.1.12

KV資料

類似Redis,一般也就用來做服務配置。
簡單瞭解下命令就好:

consul kv put redis/config/minconns 1
consul kv put redis/config/minconns 2 # 更新
consul kv get redis/config/minconns
consul kv delete redis/config/minconns
consul kv delete -recurse redis # 批量刪除

WEB UI

訪問下:http://192.168.56.112:8500/ui

WEB UI

欄目解析:就是上面操作生成的一些東西

1、services:放置服務
2、nodes:放置consul節點
3、key/value:放置一些配置資訊
4、dc1:配置資料中心



作者:DreamsonMa
連結:https://www.jianshu.com/p/7d20dc58c9fc
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。