日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Consul入门

發布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

為什么要用consul,這里就不詳細介紹了,本文重點是Consul的搭建和使用過程。

Consul搭建

參考文獻:http://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/

  • 下載consul和consul UI

  •   官方地址:https://www.consul.io/,就一個consul執行文件

      2. ?在consul執行文件的目錄下打開命令

      3. ?創建server方式

      consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=你的ip -dc=dc1

      

      相關配置信息說明

        a. ?–server指定創建服務端

        b. –boostrap-expect 關于服務leader投票等相關的level設定

        c.?–data-dir相關信息的文件路徑,不指定的話,就在consul目錄下生成

        d.?–node節點名稱

        e.?–bind綁定的你服務器的IP

        f.?–dc數據中心名稱

        更多的配置信息說明,請參考官方內容,地址:https://www.consul.io/docs/agent/options.html

      4. ?創建client方式

      如上,只是刪掉了-server

      consul agent? -data-dir /tmp/consul -node=n3 -bind=你的ip? -dc=dc1

      5. ?以配置文件形式創建

      命令后面加 -config-file=./conf

      consul agent? -data-dir /tmp/consul -node=n3 -bind=你的ip? -dc=dc1 -config-file=./conf

      ./conf目錄下包含json格式的配置信息,將配置的設置都存放在該文件下,可以注冊服務和healthCheck等等


    { ?"log_level": "TRACE", ?"encrypt": "7TnJPB4lKtjEcCWWjN6jSA==", ?"service": { ? ?"name": "web3", ? ?"tags": ["master"], ? ?"address": "127.0.0.1", ? ?"port": 58807, ? ?"checks": [{ ? ? ? ?"http": "http://127.0.0.1:60143/healthcheck", ? ? ? ?"interval": "10s"}]} }

      6. ?搭建服務集群(服務器之間關聯)

      Consul join 其中一個服務器的ip,如: consul join 10.5.133.144

      7. ?配置web ui的方式

      Web ui是consul提供的可視化的服務web界面,可以對key/value和服務、節點進行操作

        a.?將下載好的web ui文件內容(包含一個html和一個static文件件)拷貝到consul所在目錄下dist(自己創建)文件夾下

      

        ps. 在原來創建server或者client的時候,需要設置-ui-dir ./dist

        如:?consul agent? -data-dir /tmp/consul -node=n3 -bind=你的ip? -dc=dc1 -config-file=./conf?-ui-dir ./dist

        b.?打開127.0.0.1:8500?就可以打開界面了。

      8. ?常見的consul 命令

      Consul members 查看服務集群的所有服務器

      Consul info 查看當前服務器的狀況

      Consul leave 退出當前服務集群

    服務注冊

  • 通過Consul的服務注冊HTTP API,由服務自身在啟動后調用API注冊自己(可以自定義服務客戶端,調用api進行操作)

  • 通過在配置文件中定義服務的方式進行注冊


  • { ?"service": { ? ?"name": "web3", ? ?"tags": ["master"], ? ?"address": "127.0.0.1", ? ?"port": 10000, ? ?"checks": [{ ? ? ? ?"http": "http://localhost:10000/health", ? ? ? ?"interval": "10s"}]} }

      以上注冊了一個服務名稱為web3地址127.0.0.1端口10000,同時還注冊了一個healthcheck。

    服務發現

  • 通過HTTP API查看存在哪些服務(自定義服務發現客戶端)

  • 通過consul agent內置的DNS服務(如果是windows系統可以下載dig工具,發現dns服務,ps. Windows系統不建議作為server)

  •   可以根據服務check的實時狀態動態調整available服務節點列表

      dig @127.0.0.1 -p 8600 web3.service.consul SRV

    服務發現HTTP API

    http://www.codeweblog.com/%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E7%B3%BB%E7%BB%9Fconsul-http-api/??

    api 提供增刪改查nodes、services、checks、configuration。

    以下consul 的http api,距離,查看所有服務,打開地址如下:127.0.0.1:8500/v1/agent/services,就可以查看所有服務的信息

    如上圖,找到了一個名為"web3"的服務。

  • api包含以下幾部分內容

  •   kv - Key/Value存儲

      agent - Agent控制

      catalog - 管理nodes和services

      health - 管理健康監測

      session - Session操作

      acl - ACL創建和管理

      event - 用戶Events

      status - Consul系統狀態

      2. agent的api

      和本地agent交互,用于服務注冊和檢查注冊

    /v1/agent/checks : 返回本地agent注冊的所有檢查(包括配置文件和HTTP接口) /v1/agent/services : 返回本地agent注冊的所有 服務 /v1/agent/members : 返回agent在集群的gossip pool中看到的成員 /v1/agent/self : 返回本地agent的配置和成員信息 /v1/agent/join/<address> : 觸發本地agent加入node /v1/agent/force-leave/<node>>: 強制刪除node /v1/agent/check/register : 在本地agent增加一個檢查項,使用PUT方法傳輸一個json格式的數據 /v1/agent/check/deregister/<checkID> : 注銷一個本地agent的檢查項 /v1/agent/check/pass/<checkID> : 設置一個本地檢查項的狀態為passing /v1/agent/check/warn/<checkID> : 設置一個本地檢查項的狀態為warning /v1/agent/check/fail/<checkID> : 設置一個本地檢查項的狀態為critical /v1/agent/service/register : 在本地agent增加一個新的服務項,使用PUT方法傳輸一個json格式的數據 /v1/agent/service/deregister/<serviceID> : 注銷一個本地agent的服務項

      3.?catalog 的api

      注冊、注銷nodes、services、checks

    /v1/catalog/register : Registers a new node, service, or check /v1/catalog/deregister : Deregisters a node, service, or check /v1/catalog/datacenters : Lists known datacenters /v1/catalog/nodes : Lists nodes in a given DC /v1/catalog/services : Lists services in a given DC /v1/catalog/service/<service> : Lists the nodes in a given service /v1/catalog/node/<node> : Lists the services provided by a node

      4.?health

      查詢相關的健康信息

    /v1/health/node/<node>: 返回node所定義的檢查,可用參數?dc= /v1/health/checks/<service>: 返回和服務相關聯的檢查,可用參數?dc= /v1/health/service/<service>: 返回給定datacenter中給定node中service /v1/health/state/<state>: 返回給定datacenter中指定狀態的服務,state可以是"any", "unknown", "passing", "warning", or "critical",可用參數?dc=
  • session

  • 增刪改查session信息

    /v1/session/create: Creates a new session /v1/session/destroy/<session>: Destroys a given session /v1/session/info/<session>: Queries a given session /v1/session/node/<node>: Lists sessions belonging to a node /v1/session/list: Lists all the active sessions

      5.?acl

      增刪改查acl信息

    /v1/acl/create: Creates a new token with policy /v1/acl/update: Update the policy of a token /v1/acl/destroy/<id>: Destroys a given token /v1/acl/info/<id>: Queries the policy of a given token /v1/acl/clone/<id>: Creates a new token by cloning an existing token /v1/acl/list: Lists all the active tokens

      6.?event

      觸發event和查詢已有event

    /v1/event/fire/<name>: 觸發一個新的event,用戶event需要name和其他可選的參數,使用PUT方法 /v1/event/list: 返回agent知道的events

      7.?status

      consul 集群的信息

    /v1/status/leader : 返回當前集群的Raft leader /v1/status/peers : 返回當前集群中同事

    服務發現客戶端

    從nuget上下載consul包,里面包含consul的所有操作。

    源碼地址:https://github.com/PlayFab/consuldotnet/。

    舉例通過key獲取value

    1. 在UI添加一個key/value的內容(也可以在程序中添加)

    2. 獲取value代碼如下

    static void Main(string[] args){Console.WriteLine(HelloConsul().GetAwaiter().GetResult());Console.ReadLine();} ? ? ? ?public static async Task<string> HelloConsul(){ ? ? ? ? ? ?using (var client = new ConsulClient()){ ? ? ? ? ? ? ? ?var getPair = await client.KV.Get("hello1"); ? ? ? ? ? ? ? ?return Encoding.UTF8.GetString(getPair.Response.Value, 0,getPair.Response.Value.Length);} ? }


    3. 結果如下:

    更多服務發現客戶端的內容,后續補上。

    相關文章

    • 使用C# 和Consul進行分布式系統協調


    原文地址:http://www.cnblogs.com/ruanyifeng/p/5550102.html


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的Consul入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。