Longhorn – Giải Pháp Lưu Trữ Phân Tán Tối Ưu Cho Kubernetes

KiloKilo
12 min read

Trong thế giới công nghệ hiện đại, việc quản lý dữ liệu trên các cụm Kubernetes (K8s) là một thách thức không hề nhỏ. Việc phải đảm bảo rằng dữ liệu được lưu trữ một cách nhất quán, an toàn, có khả năng mở rộng và có thể khôi phục nhanh chóng trong trường hợp sự cố là những yêu cầu vô cùng quan trọng. Longhorn, một dự án mã nguồn mở được phát triển bởi Rancher Labs, đã trở thành một trong những giải pháp lưu trữ phân tán nổi bật, giúp người dùng Kubernetes dễ dàng quản lý và bảo vệ dữ liệu của họ.

1. Giới thiệu về Longhorn

Longhorn là một hệ thống lưu trữ khối (block storage) phân tán được thiết kế dành riêng cho Kubernetes. Nó cho phép bạn tạo, quản lý và backup các volume một cách dễ dàng, với tính năng replication (sao chép), snapshotbackup dữ liệu trực tiếp lên các dịch vụ đám mây như AWS S3 hoặc Google Cloud Storage. Longhorn hỗ trợ việc lưu trữ với độ tin cậy cao và khả năng mở rộng, tất cả đều được tích hợp và quản lý trực tiếp trong cụm Kubernetes của bạn.

2. Tính Năng Nổi Bật Của Longhorn

a. Khả Năng Replication Tự Động

Longhorn tự động sao chép dữ liệu trên nhiều node khác nhau trong cụm Kubernetes, đảm bảo dữ liệu của bạn luôn an toàn ngay cả khi một hoặc nhiều node bị lỗi. Bạn có thể tùy chỉnh số lượng bản sao (replica) cho từng volume tùy vào nhu cầu bảo vệ dữ liệu của mình. Trong trường hợp một node hoặc một replica gặp sự cố, Longhorn sẽ tự động tạo bản sao mới trên các node còn lại mà không làm gián đoạn dịch vụ.

b. Snapshot và Backup Dễ Dàng

Longhorn hỗ trợ tính năng snapshot giúp bạn tạo ra các bản sao tạm thời của volume tại bất kỳ thời điểm nào. Điều này rất hữu ích khi bạn muốn bảo vệ dữ liệu trước khi thực hiện các thay đổi lớn trong hệ thống. Ngoài ra, Longhorn còn hỗ trợ backup lên các dịch vụ đám mây như AWS S3 hoặc Google Cloud Storage, giúp bạn dễ dàng lưu trữ các bản backup và khôi phục dữ liệu khi cần.

c. Hỗ Trợ ReadWriteMany (RWX)

Một trong những tính năng quan trọng của Longhorn là hỗ trợ chế độ ReadWriteMany (RWX), cho phép nhiều pod có thể truy cập và ghi đồng thời vào cùng một volume. Điều này rất hữu ích cho các ứng dụng yêu cầu nhiều node có thể đồng thời truy cập vào dữ liệu chia sẻ.

d. Giao Diện Quản Lý Trực Quan

Longhorn cung cấp một giao diện người dùng (UI) trực quan và dễ sử dụng, cho phép bạn quản lý và giám sát tất cả các volume, snapshot, backup, và tình trạng của các node trực tiếp từ trình duyệt. Điều này giúp việc quản lý trở nên dễ dàng và nhanh chóng, đặc biệt khi bạn phải giám sát nhiều cụm Kubernetes cùng lúc.

e. Khả Năng Mở Rộng

Longhorn được thiết kế để có thể mở rộng dễ dàng theo sự phát triển của cụm Kubernetes. Bạn có thể thêm hoặc gỡ bỏ các node lưu trữ mà không cần tạm dừng hoạt động của hệ thống. Điều này giúp việc mở rộng hoặc bảo trì cụm trở nên linh hoạt mà không gây gián đoạn.

3. Cách Longhorn Hoạt Động

Longhorn hoạt động bằng cách tạo ra một hệ thống lưu trữ phân tán cho phép các volume có thể được phân phối và quản lý trên nhiều node. Mỗi volume trong Longhorn sẽ có nhiều bản sao (replica) được phân tán trên các node khác nhau, giúp tăng cường tính sẵn sàng và độ tin cậy. Các volume này được gắn trực tiếp vào các pod trong Kubernetes thông qua Persistent Volume Claims (PVC)Persistent Volumes (PV).

Khi một pod yêu cầu dung lượng lưu trữ, Longhorn sẽ tự động tạo ra các replica của volume và phân phối chúng trên các node khác nhau trong cụm. Dữ liệu được replicate liên tục để đảm bảo rằng nếu một replica hoặc node gặp sự cố, các replica khác sẽ tiếp tục hoạt động, đảm bảo tính liên tục của dịch vụ.

4. Backup và Khôi Phục Dữ Liệu Trên Longhorn

Longhorn hỗ trợ backup dữ liệu lên các dịch vụ đám mây như AWS S3Google Cloud Storage. Dưới đây là các bước để cấu hình backup lên S3:

  • Tạo một bucket trên AWS S3 hoặc Google Cloud Storage để lưu trữ bản backup.

  • Cấu hình Longhorn để sử dụng bucket đó bằng cách vào Settings > Backup Target trong giao diện quản lý Longhorn.

  • Đặt Backup Target như sau: s3://[bucket-name]/[path].

  • Tạo các bản backup thủ công hoặc cấu hình Longhorn tự động backup theo lịch trình.

  • Khi cần khôi phục dữ liệu, chỉ cần chọn volume cần khôi phục từ bản backup và Longhorn sẽ tự động tải lại dữ liệu từ cloud.

5. Lợi Ích Của Longhorn So Với Các Giải Pháp Khác

a. Dễ Dàng Triển Khai và Quản Lý

Longhorn có thể dễ dàng cài đặt và tích hợp với Kubernetes chỉ với một Helm chart. Với giao diện trực quan và khả năng quản lý tập trung, bạn không cần phải lo lắng về việc thiết lập các dịch vụ lưu trữ phức tạp.

b. Chi Phí Thấp

Longhorn là một dự án mã nguồn mở và không yêu cầu các giải pháp lưu trữ phức tạp hay đắt đỏ. Bạn có thể tận dụng dung lượng lưu trữ sẵn có trên các node của cụm Kubernetes mà không cần phải mua thêm phần cứng chuyên dụng.

c. Khả Năng Bảo Vệ Dữ Liệu Cao

Với tính năng replication và backup, Longhorn đảm bảo rằng dữ liệu của bạn luôn an toàn và có thể khôi phục nhanh chóng khi có sự cố xảy ra. Tính năng snapshot giúp bạn dễ dàng quản lý các thay đổi mà không lo mất dữ liệu.

Dưới đây là bảng so sánh ba hệ thống lưu trữ phổ biến trên Kubernetes: Longhorn, Rook, và KubeFS. Các tiêu chí chính gồm tính năng, hiệu suất, khả năng mở rộng, và dễ dàng triển khai.

Tiêu chíLonghornRookKubeFS
Loại lưu trữBlock storageCeph (Block, File, Object)Distributed file system (FS-based)
Phân phối dữ liệuPhân tán và nhân bản (replication) trên các nodePhân tán dữ liệu theo từng loại Ceph (RADOS)Phân tán tệp giữa các node
Hỗ trợ snapshot/backupHỗ trợ snapshot và backup tự độngHỗ trợ snapshot, backup cho Ceph RBDHỗ trợ snapshot, tập trung vào file system
Loại workload chínhStateful applications (Database, etc.)Stateful applications, big data, machine learningStateful applications, big data
Replication (nhân bản)Tùy chọn số lượng bản sao, mặc định là 3Ceph tự động nhân bản theo pool replicationKhông yêu cầu replication ở mức file
Tính khả dụng (HA)Cao, tự động tái tạo bản sao khi node lỗiRất cao, Ceph tự quản lý replication và failoverKhả dụng cao, tập trung vào failover
Khả năng mở rộngMở rộng dễ dàng với việc thêm nodeCao, Ceph cho phép mở rộng từ hàng trăm đến hàng nghìn nodeHỗ trợ mở rộng tốt nhưng giới hạn bởi filesystem
Khả năng phục hồi (Fault Tolerance)Tự động phục hồi từ các bản sao khácCeph có cơ chế tự động phục hồi tốtDựa trên cơ chế filesystem phân tán
Yêu cầu tài nguyênTài nguyên nhẹ, dễ cài đặtYêu cầu tài nguyên cao cho Ceph (RAM, CPU)Tài nguyên trung bình, tùy thuộc vào số lượng tệp
Dễ triển khaiDễ triển khai qua Helm hoặc RancherTriển khai phức tạp hơn (đặc biệt là Ceph)Triển khai tương đối dễ dàng
Giao diện quản lýGiao diện đồ họa qua Rancher UI hoặc CLISử dụng các công cụ Ceph và Rook CLIGiao diện quản lý đơn giản qua CLI
Tích hợp với KubernetesTích hợp sâu, hỗ trợ Kubernetes CSITích hợp tốt với Kubernetes qua Rook operatorTích hợp với Kubernetes CSI
Backup ra ngoài hệ thốngBackup ra S3 hoặc các dịch vụ đám mây khácCeph hỗ trợ backup qua RADOS GatewayHỗ trợ backup qua các dịch vụ đám mây
Cộng đồng hỗ trợRancher Labs phát triển và cộng đồng hỗ trợCộng đồng lớn với Ceph và RookNhỏ hơn so với Longhorn và Rook
Trường hợp sử dụng phổ biếnLưu trữ cho các ứng dụng stateful, databasesỨng dụng lớn cần tính năng block, file, objectLưu trữ tệp tin phân tán cho big data
Hiệu suất (performance)Hiệu suất ổn định, phù hợp với workload vừa và nhỏHiệu suất rất cao cho các hệ thống lớn, big dataTập trung vào hiệu suất cao cho các tệp tin
Chi phí quản lýThấp, dễ sử dụng, bảo trìCao hơn do Ceph phức tạpTrung bình, tùy thuộc vào cấu trúc hệ thống

Tóm tắt:

  • Longhorn: Lưu trữ block storage, dễ triển khai, thích hợp cho ứng dụng stateful vừa và nhỏ với yêu cầu cao về tính sẵn sàng.

  • Rook: Dựa trên Ceph, hỗ trợ đa dạng loại lưu trữ (block, file, object), thích hợp cho hệ thống lớn và phức tạp, nhưng yêu cầu tài nguyên và triển khai cao hơn.

  • KubeFS: Lưu trữ file system phân tán, phù hợp với các ứng dụng big data và xử lý tệp tin phân tán, dễ triển khai nhưng hạn chế về khả năng mở rộng so với Rook.

Ví dụ sử dụng Longhorn cho multiple write (RWX)

Nếu bạn sử dụng Longhorn làm giải pháp lưu trữ, bạn có thể tạo RWX volumes bằng cách sử dụng Longhorn's shared volume (Longhorn hỗ trợ NFS để chia sẻ volume RWX):

Persistent Volume (PV)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: longhorn-pv-rwx
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany  # Hỗ trợ RWX cho multiple writes
  persistentVolumeReclaimPolicy: Retain
  storageClassName: longhorn  # Sử dụng Longhorn StorageClass
  csi:
    driver: driver.longhorn.io
    fsType: ext4
    volumeHandle: longhorn-volume-rwx

Persistent Volume Claim (PVC)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-pvc-rwx
spec:
  accessModes:
    - ReadWriteMany  # RWX để cho phép nhiều pod ghi đồng thời
  resources:
    requests:
      storage: 10Gi
  storageClassName: longhorn  # Khớp với StorageClass của Longhorn

Pod sử dụng Longhorn PVC

apiVersion: v1
kind: Pod
metadata:
  name: longhorn-pod-1
spec:
  containers:
    - name: app
      image: nginx
      volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: longhorn-volume
  volumes:
    - name: longhorn-volume
      persistentVolumeClaim:
        claimName: longhorn-pvc-rwx
---
apiVersion: v1
kind: Pod
metadata:
  name: longhorn-pod-2
spec:
  containers:
    - name: app
      image: nginx
      volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: longhorn-volume
  volumes:
    - name: longhorn-volume
      persistentVolumeClaim:
        claimName: longhorn-pvc-rwx

Longhorn sử dụng phương pháp replication (nhân bản dữ liệu) để đảm bảo tính sẵn sàng và bền vững của dữ liệu trên các node trong cụm Kubernetes. Dưới đây là cách Longhorn thực hiện việc này và các lời khuyên cho việc cấu hình replication:

1. Cách dữ liệu được replicate:

  • Chia nhỏ dữ liệu: Khi bạn tạo một volume trong Longhorn, dữ liệu trên volume đó sẽ được chia thành các bản sao (replicas).

  • Phân tán bản sao: Các bản sao này được lưu trữ trên các node khác nhau trong cụm Kubernetes. Longhorn sẽ đảm bảo các bản sao luôn đồng bộ với nhau.

  • Replica Manager: Mỗi node có một Replica Manager để quản lý và theo dõi sự đồng bộ giữa các bản sao. Khi có dữ liệu mới được ghi vào một bản sao, nó sẽ tự động được sao chép sang các bản sao khác để đảm bảo sự nhất quán.

2. Nên để bao nhiêu bản replicate?

Số lượng bản replicate phụ thuộc vào yêu cầu về tính sẵn sàng và tài nguyên của bạn:

  • Tối thiểu 2 bản replicate: Đây là mức cơ bản để đảm bảo dữ liệu được sao lưu và vẫn tồn tại nếu một node gặp sự cố.

  • 3 bản replicate: Đây là cấu hình phổ biến và khuyến nghị. Với 3 bản replicate, hệ thống vẫn có thể hoạt động bình thường ngay cả khi một node bị lỗi, và bạn vẫn có thêm một bản sao dữ liệu dự phòng. Khi một bản replicate bị mất, Longhorn sẽ tự động tạo lại bản sao từ các bản còn lại trên node khác.

    • Nếu bạn sử dụng 3 bản replicate, hệ thống vẫn có khả năng tự phục hồi ngay cả khi một bản sao bị mất hoặc không khả dụng.
  • Hơn 3 bản replicate: Nếu bạn có nhiều tài nguyên và yêu cầu tính khả dụng cao (đặc biệt cho các hệ thống quan trọng), bạn có thể tăng số lượng bản replicate lên nhiều hơn (ví dụ: 4 hoặc 5). Tuy nhiên, cần cân nhắc vì việc này sẽ tiêu tốn nhiều tài nguyên hơn.

3. Điều gì xảy ra nếu một node bị lỗi?

  • Tự động phục hồi: Khi một node bị lỗi, Longhorn sẽ tự động phát hiện và ngắt kết nối bản sao (replica) lưu trữ trên node bị lỗi.

  • Tạo bản sao mới: Longhorn sẽ tự động tạo lại một bản sao mới trên một node khác từ các bản sao còn lại. Quá trình này sẽ diễn ra trong nền và không ảnh hưởng đến dịch vụ của bạn.

    Ví dụ: Nếu bạn có 3 bản replicate và một node bị lỗi, Longhorn sẽ sử dụng 2 bản còn lại để tạo lại bản sao thứ 3 trên một node khác.

  • Tính khả dụng cao: Miễn là còn đủ số lượng bản replicate hoạt động (ví dụ: 2/3), dịch vụ của bạn vẫn tiếp tục hoạt động mà không bị gián đoạn.

Lời khuyên khi cấu hình số lượng bản replicate:

  • Nếu bạn có một hệ thống nhỏ và tài nguyên hạn chế: sử dụng 2 bản replicate để tiết kiệm tài nguyên.

  • Nếu bạn muốn cân bằng giữa tính sẵn sàng và tài nguyên: 3 bản replicate là lựa chọn lý tưởng.

  • Nếu yêu cầu về tính sẵn sàng rất cao và bạn có nhiều tài nguyên: có thể sử dụng 4 hoặc nhiều hơn bản replicate.

Như vậy, Longhorn giúp bảo vệ dữ liệu bằng cách tạo ra nhiều bản sao và tự động phục hồi khi có sự cố xảy ra.

0
Subscribe to my newsletter

Read articles from Kilo directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Kilo
Kilo