BeetleX服務閘道器之服務發現與泛域名路由
在新版本的服務閘道器中提供了服務發現和泛域名路由解決功能,服務發現可以在無須配置的情況下實現服務自動註冊到閘道器中解脫對服務配置的繁瑣工作;而泛域名路由則可以針對不同的域名制定不同的負載規則。
使用consul服務發現外掛
閘道器需要維護相關負載的伺服器,手動新增相對來說是一件比較麻煩的工作;為了解決這一問題元件擴充套件了一個基於consul
服務發現外掛,通過配置這個外掛和啟用後閘道器會自動從consul
服務中獲取服務並新增到閘道器對應的路由負載規則中。
引用外掛
Bumblebee
中使用服務發現需要引用兩個外掛,分別是BeetleX.Bumblebee.Configuration
和BeetleX.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