BeetleX服務網關之服務發現與泛域名路由

在新版本的服務網關中提供了服務發現和泛域名路由解決功能,服務發現可以在無須配置的情況下實現服務自動註冊到網關中解脫對服務配置的繁瑣工作;而泛域名路由則可以針對不同的域名制定不同的負載規則。

使用consul服務發現插件

網關需要維護相關負載的服務器,手動添加相對來說是一件比較麻煩的工作;爲了解決這一問題組件擴展了一個基於consul服務發現插件,通過配置這個插件和啓用後網關會自動從consul服務中獲取服務並添加到網關對應的路由負載規則中。

引用插件

Bumblebee中使用服務發現需要引用兩個插件,分別是BeetleX.Bumblebee.ConfigurationBeetleX.Bumblebee.BeetleX.Bumblebee.Consul。加載啓動後就可以通過管理工具進行插件配置.

            g = new Gateway();
            g.HttpOptions(
                o =>
                {
                    o.Port = 80;
                    o.LogToConsole = true;
                    o.LogLevel = BeetleX.EventArgs.LogType.Error;
                });
            g.Open();
            g.LoadPlugin(
                typeof(Bumblebee.Configuration.Management).Assembly,
                typeof(Bumblebee.Consul.ConsulPlugin).Assembly
               );

如果不想自己編寫代碼可以下載編譯的運行包 https://github.com/IKende/Bumblebee/blob/master/bin/ 下載1.1.9或更高版本;運行後 訪問 http://host/__system/bumblebee/

插件管理

運行程序後進行配置管理工具的插件管理頁面,可以看到Consul插件,組件默認是關閉需要進行一些配置。

插件配置

{
    "ConsulAddress": "http://192.168.2.19:8500",
    "Services": [
        "bumblebee_services"
    ],
    "Token": null,
    "DataCenter": "dc1"
}
  • ConsulAddress 對應Consul的服務地址
  • Services 檢索相應名稱的服務列表一個或多個
  • Token 訪問Consul相應的Token信息
  • DataCenter 檢索相應的數據中心名稱

配置完成後只需要啓用插件即可

註冊要求

Dictionary<string, string> meta = new Dictionary<string, string>();
meta.Add("path", "^/home.*");
client.Agent.ServiceDeregister("api_test1").Wait();
client.Agent.ServiceDeregister("api_test2").Wait();
client.Agent.ServiceRegister(new AgentServiceRegistration
{
    Tags = new string[] { "Bumblebee" },
    Address = "192.168.2.18",
    Port = 8080,
    Name = "bumblebee_services",
    Meta = meta,
    ID = "api_test1"
}).Wait();

以上是一個簡單的註冊代碼,如果想服務需要註冊到相應路由規則下的負載需要指定path,在不指寫的情況bumblebee獲取後會註冊到默認路由規則上。

狀態跟蹤和故障

bumblebee內部有一套服務監控和故障處理機制無須依據consul相關狀態註冊信息;bumblebee會根據自身的檢測機制對應用進行一個負載遷移和恢復處理。

泛域名路由

泛域名解釋在web服務代理中比較常用的功能,主要由代理服務器根據不同請求的域名來做不需同服務的轉發。Bumblebee同樣也支持泛域名路由解釋,就是針對不同請求的域名來制定不同的轉發規則。Bumblebee對泛域名的轉發配置非常簡單只需要加載BeetleX.Bumblebee.Configuration新版本插件在路由管理配置即可(由於組件支持標準的http1.1協議,Bumblebee不僅可以做webapi網關,還能做網站代理)。

運行部署

Bumblebee配置路由解釋,只需要加載BeetleX.Bumblebee.Configuration插件啓動後在Routes中配置即可.

        g = new Gateway();
        g.HttpOptions(
            o =>
            {
                o.Port = 80;
                o.LogToConsole = true;
                o.LogLevel = BeetleX.EventArgs.LogType.Error;
            });
        g.Open();
        g.LoadPlugin(
            typeof(Bumblebee.Configuration.Management).Assembly
           );

如果不想自己編寫代碼可以下載編譯的運行包 https://github.com/IKende/Bumblebee/blob/master/bin/ 下載1.2或更高版本;運行後 訪問 http://host/__system/bumblebee/

配置

Routes添加路由規則,如果轉發規則需要對域名進行一個匹配那規則是域名|路徑

beetlexjs.ikende.com|.*

以上規則是配置經過beetlexjs.ikende.com域訪問的所有請求都到這個規則裏。 

 以上官網的路由配置規則 beetlexjs.ikende.com|.*路由到http://localhost:8081/,而其它則路由http://localhost:8080/。由於服務打開了處理服務地址輸出所以訪問這兩個域的頭信息可以看到:

  • ikende.com

  • beetlexjs.ikende.com

 

更多資料可查看組件開源網站 https://github.com/IKende/Bumblebee/wiki

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章