Nautilus新特性: Orchestrator

原文鏈接:https://ceph.io/community/new-in-nautilus-orchestrator/

 

Orchestrator可以翻譯爲協調器或編排器,但在本文中爲更準確地表達依舊採用Orchestrator。

 

1. Orchestrator是什麼?

Ceph的Nautilus版本引入了一個新的Orchestrator接口,它提供控制外部部署工具(如ceph-ansible、DeepSea或Rook)的能力。希望在管理員、Ceph和外部部署系統之間提供一個橋樑。爲了實現這一點,Orchestrator接口允許Ceph儀表板或CEPH命令行工具訪問不同部署工具提供的數據,從而在Ceph Dashboard中啓用基礎設施管理功能。作爲副作用,它將爲不同的部署工具帶來統一的安裝體驗。

 

展示Rook Orchestrator部署ceph服務,請觀看如下示例:

https://asciinema.org/a/240964/embed?

啓用後,Dashboard會使用Orchestrator接口管理iSCSI目標和NFS共享。

 

從體系結構的角度來看,Orchestrator接口是控制面板、命令行接口和Rook管理器模塊之間的三者中的核心組件。例如,如果用戶調用命令行接口向集羣添加新的OSD,那麼Orchestrator模塊將指示外部Orchestrator在指定主機上調用ceph-volume。

以下是Orchestrator的體系結構視圖,顯示了不同組件之間如何交互:

https://i2.wp.com/ceph.com/wp-content/uploads/2019/04/orchestrator.png?resize=619%2C251

2. 如何使用Orchestrator?

爲了使用Orchestrator接口,CEPH集羣需要與受支持的Orchestrator一起部署。要開始使用Orchestrator,只需要一個mon和一個mgr。

第二步是激活後端Orchestrator模塊:

ceph mgr module enable <module>

ceph orchestrator set backend <module>

其中module是ansible、deepsea、rook或ssh.

 

之後,需要正確配置Orchestrator模塊本身。有關每個模塊的詳細信息,請參見下文。另外,請注意,Orchestrator模塊可能只實現下面列出的命令的一個子集,這些命令的實現依賴於Orchestrator模塊,並且在實現之間會有所不同。

最後,您可以檢查是否使用status命令正確配置了後端,該命令顯示當前的Orchestrator模式和高級狀態。

ceph orchestrator status

 

另一個有趣的命令是device ls,可以查看已發現設備的列表,按節點分組並選擇性地篩選到特定節點:

ceph orchestrator device ls

有關Orchestrator命令行界面的更多示例,請參閱官方文檔。

https://docs.ceph.com/docs/nautilus/mgr/orchestrator_cli/

 

3. Rook Orchestrator模塊

Rook是雲原生計算基金會(CNCF)的孵化級項目,Rook是Kubernetes的開源雲本地存儲協調器,爲各種存儲解決方案提供平臺,框架和支持,以便與雲原生環境本地集成。

Rook通過一個操作器(operator)完成後續操作,只需要定義需要的狀態就可以了。Rook通過操作器監控狀態需求變化,並將配置文件分配到集羣上生效。操作器關注包括各種集羣運行和啓停所需的狀態信息。

描述ceph所需狀態的主要對象是CephCluster CRD,它(除其他外)包括OSD應使用哪些設備、應運行多少MON以及應使用哪個版本Ceph的信息。Rook定義了其他幾個CRD來描述RBD池、CEHFS文件系統等。

 

Rook Orchestrator模塊是運行在ceph mgr守護進程中的粘合器,通過更改kubernetes中描述所需集羣狀態的CephCluster(和相關)對象來實現ceph Orchestration API。因爲rook集羣的ceph-mgr守護進程作爲kubernetes pod運行,所以rook模塊可以連接到kubernetes API,而無需任何顯式配置。

例如,如果用戶請求通過cli提供新的OSD,那麼Orchestrator模塊將通過調整rook針對該集羣的CephCluster crd對象來響應,以指定給定設備包含OSD,rook將通過對ceph-volume和sta進行適當的調用來響應。爲ceph-osd守護進程發送一個kubernetes pod。

ceph orchestrator osd create ....

 

4.SSH Orchestrator模塊

SSH Orchestrator 是一個編排器模塊,不依賴於單獨的編排/部署系統(如Rook或Ansible),而是通過建立SSH連接並使用顯式管理命令來管理集羣中的節點。

SSH Orchestrator模塊在語意上等同於以前的Ceph部署工具(實際上是使用相同的remoto庫通過SSH連接在遠程機器上執行代碼),但重點是,SSH Orchestrator是按照安裝Ceph集羣標準方法來設計的,而不需要使用任何部署框架(如Ansible)。

其思想是爲管理守護進程提供對SSH配置和密鑰的訪問,這些配置和密鑰能夠連接到集羣中的所有節點以執行任何管理操作,例如創建存儲設備清單、部署和替換OSD,或啓動和停止Ceph守護進程。

此外,SSH Orchestrator將部署由systemd管理的容器映像,以允許獨立升級服務。

SSH Orchestrator還可能突出顯示一個工具,它封裝了所有必要的操作,以便在當前主機上管理基於容器映像的服務的部署,包括一個引導運行mon和mgr的最小集羣的命令。

 

6. Ansible Orchestrator模塊

Ansible Orchestrator模塊使用Ansible Runner服務來執行Ansible Playbook,以滿足支持的不同操作。當調用編排API時,Ansible模塊將在Ansible Runner服務上對任務進行排隊,然後執行Ansible Playbook以執行該工作。

 

7. Deepea Orchestrator模塊

Deepea是用於部署和管理CEPH的Salt狀態文件、運行程序和模塊的集合。

此模塊連接到Salt rest API,以便與Salt master通信。然後它可以查詢集羣的狀態或發出命令。

 

8. 現有集成

Dashboard和Rook集成已經完成,具體請參考Jeff Layton以前關於用Rook配置NFS的博客文章。

https://ceph.com/community/deploying-a-cephnfs-server-cluster-with-rook/

 

9. 未來

現在,Orchestrator將重點放在初始安裝之後的day-2集羣操作上。在未來的版本中,正在計劃添加對day-1安裝和設置操作的支持。

其次,libstoragemgmt插件支持啓用標記指定磁盤和故障指示燈。在Orchestrator接口中,正在進行支持這些功能的工作。

最後,加強Dashboard功能,包括集成硬件的編目控制和部署服務等功能。

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