摘要:近日,版本發布了,它可支持任何集群的持久化存儲實現如今,基于云和容器的部署規模日益擴大,分布式塊存儲系統也正變得越來越復雜,單個存儲控制器上的數量在不斷增加。
Longhorn項目是Rancher Labs推出的開源的基于云和容器部署的分布式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構建為分布式塊存儲,并使用容器編排來協調這些組件,形成彈性分布式系統。
自2017年4月Longhorn項目發布以來,人們對在Kubernetes集群上運行Longhorn存儲就產生了極大的興趣。近日,Longhorn v0.2版本發布了,它可支持任何Kubernetes集群的持久化存儲實現!
如今,基于云和容器的部署規模日益擴大,分布式塊存儲系統也正變得越來越復雜,單個存儲控制器上的volume數量在不斷增加。2000年代初,存儲控制器上的volume數量只有幾十個,但現代云環境卻需要數萬到數百萬的分布式塊存儲卷。存儲控制器變成了高度復雜的分布式系統。
分布式塊存儲本身比其他形式的分布式存儲(如文件系統)更簡單。無論系統中有多少volume,每個volume只能由單個主機進行裝載。正因如此,我們設想,是否可以將大型塊存儲控制器分割成多個較小的存儲控制器?若想要如此分割,我們需要保證這些volume仍然是從公共磁盤池構建的,并且我們需要有辦法來編排這些存儲控制器,讓它們可以協同工作。
為了將這一想法發揮到極限,我們創建了Longhorn項目。這是一個我們認為值得探索的方向,每個控制器上只有一個volume,這將大大簡化存儲控制器的設計。因為控制器軟件的故障域僅限于單個volume,所以控制器若崩潰,也只會影響一個volume。
Longhorn充分利用了近年來關于如何編排大量的容器和虛擬機的核心技術。例如,Longhorn并沒有構建一個可以擴展到100,000個volume的高度復雜的控制器,而是出于讓存儲控制器簡單輕便的考慮,創建了100,000個多帶帶的控制器。然后,我們可以利用像Swarm、Mesos和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),以及保留多少個循環快照和備份集。
支持任何Kubernetes集群的持久性存儲Longhorn v0.2 支持任何Kubernetes集群的持久性存儲。一旦被部署到Kubernetes集群上,Longhorn會自動地將Kubernetes集群中所有節點上全部可用的本地存儲聚為集群,產生復制的以及分布式的塊存儲。你可以在Longhorn volume上執行快照和備份操作,并將它們同步復制到多個節點上。
我們已經移植了Longhorn Manager作為Kubernetes Controller。所有Longhorn狀態都存儲為Custom Resource Definitions(自定義資源定義,CRD)。Longhorn也不需要多帶帶的etcd服務器。另外,Longhorn Manager公開了執行Longhorn volume操作和快照 / 備份操作的API,這些API將在Longhorn UI和Kubernetes Flexvolume驅動程序執行操作的過程中使用。
運行下面的這條指令,就可以在你的Kubernetes集群上部署整個Longhorn存儲系統:
kubectl create -f https://raw.githubusercontent.com/rancher/longhorn/v0.2/deploy/longhorn.yaml
如果你使用的是GKE,請參考這里:https://github.com/rancher/lo...
部署之后,你可以在UI界面通過查看Kubernetes服務找到適合的IP:kubectl -n longhorn-system get svc
現在你可以使用 100.200.200.123 或通過
Longhorn提供了Kubernetes的完全集成。
你可以像下面這樣通過Longhorn用卷備份創建一個pod:
apiVersion: v1 kind: Pod metadata: name: volume-test namespace: default spec: containers: - name: volume-test image: nginx:stable-alpine imagePullPolicy: IfNotPresent volumeMounts: - name: voll mountPath: /data ports: - containerPort: 80 volumes: - name: voll flexVolume: driver: "rancher.io/longhorn" fsType: "ext4" options: size: "2Gi" numberOfReplicas: "3" staleReplicaTimeout: "20" fromBackup: ""
Longhorn還支持動態的provisioner。比如,你可以在Kubernetes像這樣定義一個StorageClass:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: longhorn provisioner: rancher.io/longhorn parameters: numberOfReplicas: "3" staleReplicaTimeout: "30" fromBackup: ""
接著創建一個PVC(PersistentVolumeClaim)并在Pod中使用它:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: longhorn-volv-pvc spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 2Gi --- apiVersion: v1 kind: Pod metadata: name: volume-test namespace: default spec: containers: - name: volume-test image: nginx:stable-alpine imagePullPolicy: IfNotPresent volumeMounts: - name: volv mountPath: /data ports: - containerPort: 80 volumes: - name: volv persistentVolumeClaim: claimName: longhorn-volv-pvc一切開源
始終秉承開源理念的Rancher Labs,推出的Longhorn依然是100%的開源軟件。您可以在GitHub上下載Longhorn:
https://github.com/rancher/lo...
直到今日,Longhorn依然在持續不斷的優化更新之中。歡迎在GitHub上或Rancher微信群中為Rancher團隊提供寶貴的意見與反饋??
微信號:RancherLabs
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32639.html
摘要:項目現已正式發布這是一個基于云和容器部署的分布式塊存儲新方式。這可能是與大多數現有的分布式存儲系統相比,最具特色的功能。快速入門指南易于安裝和使用。使用或術語,管理器容器是一項全球性服務。目前,我們不保留額外的元數據來指示使用哪些。 Longhorn項目現已正式發布!這是一個基于云和容器部署的分布式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構建為分布式塊存儲...
摘要:年月日,由以下簡稱主辦的第三屆企業容器創新大會以下簡稱在北京喜來登大酒店盛大舉行。在未來,希望能為中國用戶帶來更多更實用的容器技術,推動中國企業容器化的持續創新。 2019年6月20日,由Rancher Labs(以下簡稱Rancher)主辦的第三屆企業容器創新大會(Enterprise Container Innovation Conference, 以下簡稱ECIC)在北京喜來登大...
摘要:組件會給每個分配一個,則替代了的來實現服務發現,在的容器內部依然可以訪問服務來獲取元數據信息。的需要在中實現一個,目前只有,而則維護了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產生了疑惑,諸如Cattle引擎和這幾個之間到底什么關系?每種引擎是如何支持的?自家的業務環境...
摘要:組件會給每個分配一個,則替代了的來實現服務發現,在的容器內部依然可以訪問服務來獲取元數據信息。的需要在中實現一個,目前只有,而則維護了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產生了疑惑,諸如Cattle引擎和這幾個之間到底什么關系?每種引擎是如何支持的?自家的業務環境...
摘要:組件會給每個分配一個,則替代了的來實現服務發現,在的容器內部依然可以訪問服務來獲取元數據信息。的需要在中實現一個,目前只有,而則維護了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產生了疑惑,諸如Cattle引擎和這幾個之間到底什么關系?每種引擎是如何支持的?自家的業務環境...
閱讀 1830·2021-11-11 16:54
閱讀 2056·2019-08-30 15:56
閱讀 2365·2019-08-30 15:44
閱讀 1282·2019-08-30 15:43
閱讀 1856·2019-08-30 11:07
閱讀 812·2019-08-29 17:11
閱讀 1464·2019-08-29 15:23
閱讀 3007·2019-08-29 13:01