floodlight官方文檔(十三):controller module詳解----High Availability Support

Description

當控制器的多個實例運行時,此模塊提供高可用性支持。它用於發佈和訂閱來自多個控制器的更新,並使用ISyncService來存儲數據。它通過讓所有控制器訪問控制器中所有其他模塊以有效方式發佈的更新來同步控制器之間的狀態。此外,它還運行一個領導人選舉過程,以使模塊能夠在運行多個控制器的分佈式系統中執行基於角色的編程,並能夠相互通信。該模塊的主要目的是爲能夠構建容錯系統奠定基礎,該容錯系統能夠檢索失敗的控制器的狀態並將其重新實例化到該狀態。

Services Provided

IHAControllerService

IHAWorkerService

Service Dependencies依賴的服務

IFloodlightService

ILinkDiscoveryService

IFloodlightProviderService

ISyncService

ITopologyService

Java File

該模塊在net.floodlightcontroller.hasupport中實現。

How it works

  • HAcontroller:這是iFloodLight模塊,它調用AsyncElection和ControllerLogic線程,這些線程用於獲取網絡範圍的領導者。
  • AsyncElection:包含一個在所有活動控制器中選擇領導者的領導者選擇協議。它使用NetworkNode與其他控制器通信。
  • ControllerLogic:用於跟蹤從異步選舉中獲得的領導者,並在沒有領導者的情況下啓動領導者選舉過程。此外,它還執行一些基於角色的功能,當前從其他模塊發佈和訂閱其他控制器的更新。
  • NetworkNode:一個連接管理器,用於處理套接字對象,以維護所有控制器之間的通信。有一個故障檢測器來確定當前處於活動狀態的控制器。
  • HAserver:響應由NetworkNode發送的消息的服務器,由AsyncElection使用。
  • HAWorker:haWorker類有一個publishHook和subscribeHook,允許其他控制器訪問此控制器的更新。更新被組裝到一個JSON中,這個類爲過濾器隊列提供源。這個機制由HAcontroller管理。
  • FilterQueue:一個LinkedBlockingQueue,它確保在發佈更新流時不會將重複的更新推送到同步數據庫中。此類爲同步適配器提供源。
  • SyncAdapter:來自其他模塊的更新包含本質上是關係的數據,因此我們在將更新推送到同步數據庫之前執行JSON關係映射。此類包含從同步數據庫推送和拉取更新的方法。

Limitations

  • 非多數情況:如果51%的已配置控制器無法連接,則默認情況下,控制器1設置爲前導,但其他節點不跟隨控制器1。這只是默認行爲,以便控制器能夠在不需要領導人的情況下工作。
  • 需要添加設備管理器工作程序。
  • 可擴展性:有限。這個模塊應該被擴展,這樣我們就可以通過層次或者其他方式進行擴展。

Configuration

A video explaining how to use this module:

https://www.youtube.com/watch?v=J1AELkF5Yu8
在這裏插入圖片描述

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