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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

微服务之:从零搭建ocelot网关和consul集群

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务之:从零搭建ocelot网关和consul集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

?

微服務中有關鍵的幾項技術,其中網關和服務服務發現,服務注冊相輔相成。

首先解釋幾個本次教程中需要的術語

網關?Gateway(API GW / API 網關),顧名思義,是企業 IT 在系統邊界上提供給外部訪問內部接口服務的統一入口,簡化了外部由于多服務協同完成任務時的繁瑣配置。網關組件有Kong,ocelot,

服務發現:通過網關訪問內部各個微服務,網關要找到所需服務的過程稱為服務發現

服務注冊:既然有服務發現,前提是要把所需服務提前“錄入”,這個錄入的過程稱為服務注冊。服務注冊可配置文件(人肉方式不推薦),也可用服務注冊組件如Consul或者Eureka等等(推薦)

搭建Consul集群(Windows)

官網下載Consul程序,https://www.consul.io/downloads.html

下載下來就是一個可執行文件Consul.exe

Consul有兩種代理模式,一種server,一種client,官方建議Server端達到3臺以上才可高可用,但不要太多,太多會給集群間數據同步造成壓力,client數量不限。

多個server端之間會選擇出一個leader,當一個server的leader宕機則會從其他server端”投票“選擇新的leader

實踐

這里server我們用2臺實驗

192.168.74.55

192.168.74.54

1臺Client

192.168.74.161

consul啟動有兩種方式一種是命令行,一種是配置文件的方式。

命令行方式啟動一個consul的server端

consul agent -server -ui -bootstrap-expect 2 -data-dir opt/consul/data -node ServerMaster -bind 192.168.74.55 -client 192.168.74.55

關鍵參數說明

-server:server模式啟動

-ui :開啟ui界面(consul.exe內部帶了GUI圖形界面操作)

?-bootstrap-expect 2:server端到2個時集群生效

-data-dir:consul產生的文件路徑(consul自己會產生一下數據存儲的位置)

-node:此節點名稱

-bind:集群內部通信地址,默認0.0.0.0

-client:此節點綁定的通訊地址

以上只是關鍵參數,以下是完整參數說明:??

?

但是命令啟動很繁瑣,所以推薦下面的配置文件的方式啟動

在consul同文件夾下建立一個server.json的配置文件

?

為了快速啟動,再建立一個bat批處理文件runconsul.bat

consul agent -config-dir server.jsonpause

雙擊runconsul.bat啟動consul

在192.168.74.54服務器開啟一個server端繼續以上操作。

命令方式啟動

consul agent -server -ui -data-dir opt/consul/data -node Server01 -bind 192.168.74.54 -client 192.168.74.54 -join=192.168.74.55

-join將192.168.74.54加入到192.168.74.55服務器

配置文件方式:

?

在192.168.74.161服務器開啟一個consul的client端

命令方式:

consul agent -ui -data-dir?opt/consul/data -node ServerSlave? -bind 192.168.74.161 -client 192.168.74.161 -join 192.168.74.55

配置文件方式:

效果?

簡單Consul集群到這里就搭建成功,只要訪問三臺服務器任意一個都可數據同步,演示:

?

?netcore集成Consul服務注冊

服務注冊關鍵代碼

首先新建一個ConsulClient的類庫

?

ConsulRegister.csproj所需組件如下:

再新建一個.netcore的webapi項目WebA,并且引用ConsulRegister項目

在WebA項目中的Startup.cs文件中加入Consul服務

在WebA項目的appsettings.json配置文件中加入以下Consul服務端配置

這里服務注冊就算完成

Ocelot網關搭建

接下來繼續Ocelot借助于Consul實現服務發現

新建項目Ocelot.Gateway

將以下依賴加入Ocelot.Gateway.csproj中:

新建ocelot.json文件

修改Startup.cs文件如下:

發布WebA后復制兩份分別啟動

dotnet WebA.dll --urls="http://0.0.0.0:2001"

dotnet WebA.dll --urls="http://0.0.0.0:2002"

到這里相當于2001和2002程序簡單集群了一下

可以發現日志中有?http://192.168.74.161:2002/HealthCheck調用信息:

這其實是consul進行健康檢查進行的調用。

啟動多個程序后,打開瀏覽器打開Consuld界面會發現注冊了兩個服務

?

?

這里ocelot網關和consul的服務注冊和發現就算初步集成。

如果生成環境是windows的情況,將consul做成windwos服務即可

sc create "ConsulServer" binPath="F:\XXX\consul.exe agent -config-dir XXX.json"

生產環境是linux則借助systemd做成守護進程即可?

目前集群搭建成功,但是連接的話如果指定某個端點的ip進行連接,端點宕機,就會導致網關一樣無法連接consul進行服務發現。所以還需進行配置暴露一個端點讓客戶端連接,配置詳情:https://www.consul.io/docs/connect/configuration.html

不過也可以做成虛擬ip進行多臺consul的負載。客戶端連接虛擬ip即可

項目地址:

https://github.com/liuyl1992/Ocelot.GatewayToConsul

原文地址:https://www.cnblogs.com/xiaoliangge/p/10221950.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


總結

以上是生活随笔為你收集整理的微服务之:从零搭建ocelot网关和consul集群的全部內容,希望文章能夠幫你解決所遇到的問題。

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