Longhorn v0.3.0正式發佈!

Longhorn項目是Rancher Labs推出的開源的基於雲和容器部署的分佈式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構建爲分佈式塊存儲,並使用容器編排來協調這些組件,形成彈性分佈式系統。

 

2017年4月Longhorn初發布。2018年3月Longhorn v0.2發佈,支持任何Kubernetes集羣的持久化存儲實現。過去一個多季度以來,Longhorn研發團隊基於用戶的反饋與建議,進一步打磨Longhorn,並於今天正式發佈Longhorn v0.3,在新版本中帶來了新UI、CSI支持、S3備份目標、在多磁盤上提供基於容量的調度、基礎鏡像功能、iSCSI前端支持、零停機升級等酷炫功能。


Why Longhorn


如今,基於雲和容器的部署規模日益擴大,分佈式塊存儲系統也正變得越來越複雜,單個存儲控制器上的volume數量在不斷增加。2000年代初,存儲控制器上的volume數量只有幾十個,但現代雲環境卻需要數萬到數百萬的分佈式塊存儲卷。存儲控制器變成了高度複雜的分佈式系統。

 

分佈式塊存儲本身比其他形式的分佈式存儲(如文件系統)更簡單。無論系統中有多少volume,每個volume只能由單個主機進行裝載。正因如此,我們設想,是否可以將大型塊存儲控制器分割成多個較小的存儲控制器?若想要如此分割,我們需要保證這些volume仍然是從公共磁盤池構建的,並且我們需要有辦法來編排這些存儲控制器,讓它們可以協同工作。

 

爲了將這一想法發揮到極限,我們創建了Longhorn項目。這是一個我們認爲值得探索的方向,每個控制器上只有一個volume,這將大大簡化存儲控制器的設計。因爲控制器軟件的故障域僅限於單個volume,所以控制器若崩潰,也只會影響一個volume。

 

Longhorn充分利用了近年來關於如何編排大量的容器和虛擬機的核心技術。例如,Longhorn並沒有構建一個可以擴展到100,000個volume的高度複雜的控制器,而是出於讓存儲控制器簡單輕便的考慮,創建了100,000個單獨的控制器。然後,我們可以利用像Kubernetes這樣的最先進的編排系統來調度這些獨立的控制器,共享一組磁盤中的資源,協同工作,形成一個彈性的分佈式塊存儲系統。

 

Longhorn基於微服務的設計還有很多其他優勢。因爲每個volume都有自己的控制器,在升級每個volume的控制器和replica容器時,是不會導致IO操作明顯的中斷的。Longhorn可以創建一個長期運行的工作來編排所有live volume的升級,同時確保不會中斷系統正在進行的操作。爲確保升級不會導致意外的問題,Longhorn可以選擇升級一小部分volume,並在升級過程中出現問題時回滾到舊版本。這些做法在現代微服務應用中已得到廣泛應用,但在存儲系統中並不常見。我們希望Longhorn可以助力於微服務在存儲領域的更多應用


Longhorn功能概述


  • 共享資源池:將本地磁盤或安裝在計算或專用存儲主機中的網絡存儲形成共享資源池。


  • 爲容器和虛擬機創建塊存儲卷:你可以指定volume的大小,IOPS的需求,以及你想要的跨主機的同步replica的數量(這裏的主機是指那些爲volume提供存儲資源的主機)。replica是在底層磁盤或網絡存儲上精簡配置的。


  • 爲每個volume創建一個專用的存儲控制器:這可能是與大多數現有的分佈式存儲系統相比,Longhorn最具特色的功能。大多數現有的分佈式存儲系統通常採用複雜的控制器軟件來服務於從數百到數百萬不等的volume。但Longhorn不同,每個控制器上只有一個volume,Longhorn將每個volume都轉變成了微服務。


  • 跨計算或存儲主機調度多個replica:Longhorn會監測每一個replica的健康狀況,對問題進行維修,並在必要時重新生成replica。


  • 以Docker容器的形式操作存儲控制器和replica:例如,一個volume有三個replica,就意味着有四個容器。


  • 爲每個volume分配多個存儲“前端”:常見的前端包括Linux內核設備(映射到/ dev / longhorn)和iSCSI目標。 Linux內核設備適用於支持Docker volume,而iSCSI目標更適合支持QEMU / KVM和VMware volume。


  • 創建volume快照和AWS EBS風格的備份:您可以爲每個volume創建多達254個快照,這些快照可以逐個備份到NFS或S3兼容的輔助存儲中。只有更改的字節會在備份操作期間被複制和存儲。


  • 指定定期快照和備份操作的計劃:您可以指定這些操作的頻率(每小時,每天,每週,每月和每年)、執行這些操作的確切時間(例如,每個星期日凌晨3:00),以及保留多少個循環快照和備份集。


Longhorn v0.3新功能


全新設計的UI


Longhorn v0.3的UI得到了極大的優化,爲用戶提供了更爲優異的操作體驗:


  • 用戶可以在儀表板中查看系統的狀態

  • 爲volume添加了多選和組操作

  • 支持websocket支持,用戶不再需要刷新頁面來更新UI。當後端狀態發生變化時,UI會自動更新


1.jpg

Dashboard


2.jpg

Node界面


3.jpg

Volume界面


容器存儲接口(CSI)


在Longhorn v0.2中,有不少用戶反饋Flexvolume driver目錄位置的配置錯誤問題,這可能導致Kubernetes無法連接到Longhorn Driver。Kubernetes不提供有關Flexvolume driver位置的信息,用戶需要手動操作識別。在v0.3中,我們添加了對最新Container Storage Interface的支持,該接口無需事先進行配置即可安裝。關於如何使用CSI驅動程序安裝Longhorn的詳細信息,可參見此鏈接:

https://github.com/rancher/longhorn/tree/v0.3-rc#kubernetes-driver-requirements


若您計劃繼續使用Flexvolume並且必須弄清楚volume插件的位置,我們爲您準備的這個腳本可以提供一些幫助:

https://github.com/rancher/longhorn/tree/v0.3-rc#kubernetes-driver-requirements


以S3作爲備份目標


Longhorn的一個很關鍵的功能就是volume備份,它可以備份本地快照並將其傳輸到輔助存儲,如NFS。v0.2發佈之後,用戶呼聲最高的、希望能在下一版本中實現的功能之一,就是支持使用S3作爲備份目標。v0.3中,這一功能已實現!請參閱此處瞭解如何使用S3作爲Longhorn的備份目標:

https://github.com/rancher/longhorn/blob/v0.3-rc/README.md#backup


在多磁盤上提供基於容量的調度


在Longhorn v0.2中,無論可用的磁盤空間如何,Longhorn v0.2都會在磁盤上隨機放置volume。而v0.3支持每個節點多個磁盤,並且我們重寫了調度程序,現提供基於容量的調度。用戶現在可以啓用/禁用任何節點或磁盤的調度,並知曉有多少磁盤正在使用。我們還爲用戶提供了各種選項,以自定義Longhorn如何在可用磁盤空間之上調度卷。請參閱此處瞭解詳情:

https://github.com/rancher/longhorn/blob/v0.3-rc/docs/multidisk.md


基礎鏡像功能


v0.3支持基礎鏡像功能。Longhorn中的基礎鏡像是一個打包的Docker鏡像,遵循RancherVM(https://github.com/rancher/vm)鏡像規範。因此,如果用戶有一些只讀鏡像,希望其在多個卷之間共享,則可以使用基礎鏡像功能來完成。請參閱此處瞭解如何創建和使用基礎鏡像功能:

https://github.com/rancher/longhorn/blob/v0.3-rc/docs/base-image.md


iSCSI前端


Longhorn v0.3支持iSCSI前端。以前我們只支持使用塊設備作爲前端來訪問volume內容。我們相信添加對iSCSI前端的支持,將有利於將iSCSI作爲塊設備接口的傳統虛擬機管理程序。有關iSCSI前端支持的詳細信息,請參見此處:

https://github.com/rancher/longhorn/blob/v0.3-rc/docs/iscsi.md


零停機的引擎升級


在v0.3中,我們設置了一個框架,在升級Longhorn引擎時可以不影響volume。Longhorn引擎包括一個控制器和多個副本。現在,當volume運行時,我們可以換掉舊版本的控制器和副本,並在運行中添加新版本。如此一來,您可以實現在volume零停機的情況下部署新版本的Longhorn存儲軟件。


但需要注意的是,零停機升級適用於從v0.3升級至未來的所以新版本,但不適用於從v0.2升級到v0.3。


如何升級Longhorn


利用Kubernetes的特性,Longhorn v0.3的所有軟件組件都可以升級。請在此處查看升級說明:https://github.com/rancher/longhorn/blob/v0.3-rc/docs/upgrade.md


使用Rancher Catalog安裝了Longhorn v0.1的用戶請務必注意,請勿在UI中使用upgrade按鈕。目前暫無法通過Rancher Catalog爲早期版本的Longhorn進行一鍵自動升級,請按照上面的說明來手動升級舊的Longhorn系統。


一切開源,歡迎體驗


始終秉承開源理念的Rancher Labs,推出的Longhorn依然是100%的開源軟件。您可以在GitHub上下載Longhorn:https://github.com/rancher/longhorn,也可以通過Rancher Catalog部署它。

 

直到今日,Longhorn依然在持續不斷的優化更新之中,我們暫不倡議您將其用於生產環境。歡迎在GitHub上或Rancher微信羣中爲Rancher團隊提供寶貴的意見與反饋❤️


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