Wednesday, July 3, 2024

Ceph Manager trong hệ thống lưu trữ phân tán Ceph

-

Tổng quan.

Ceph Manager (MGR) là một thành phần quan trọng trong hệ thống Ceph, mang lại các tính năng quản lý, giám sát và giao diện người dùng cho việc quản lý cluster Ceph.

Dưới đây là một tổng quan về Ceph Manager:

  • Chức Năng Chính:
    • Quản Lý Cluster: Ceph Manager cung cấp các dịch vụ quản lý cao cấp, giúp quản trị viên quản lý và theo dõi cluster Ceph một cách hiệu quả.
    • Thông Tin Hiệu Suất: MGR thu thập và cung cấp thông tin về hiệu suất của cluster, OSDs, và các thành phần khác, giúp người quản trị đánh giá tình trạng và hiệu suất của hệ thống.
  • RESTful API và Giao Diện Người Dùng:
    • RESTful API: MGR cung cấp một giao diện lập trình ứng dụng (API) RESTful, cho phép tích hợp và tương tác với các ứng dụng và công cụ quản lý bên ngoài.
    • Dashboard: Ceph Manager cung cấp Dashboard, một giao diện người dùng web giúp quản trị viên theo dõi và quản lý cluster một cách trực quan.
  • Module và Plugin:
    • Module: Ceph Manager hỗ trợ việc mở rộng chức năng thông qua các module. Có thể cài đặt các module tùy chỉnh để mở rộng khả năng quản lý và giám sát của MGR.
    • Plugin: Có thể tích hợp các plugin vào Dashboard để cung cấp các tính năng mở rộng và tương tác với các hệ thống khác.
  • Quản Lý Tự Động:
    • Quản Lý Tự Động: MGR hỗ trợ quản lý tự động, giúp cluster Ceph tự động thích ứng và thực hiện các hành động quản lý dựa trên trạng thái và yêu cầu của hệ thống.
  • Thông Báo và Cảnh Báo:
    • Cảnh Báo: MGR cung cấp cảnh báo về các vấn đề có thể xảy ra trong cluster, giúp người quản trị nhanh chóng phát hiện và xử lý sự cố.
  • Tính Năng Đa Cluster:
    • Hỗ Trợ Nhiều Cluster: Ceph Manager có thể hỗ trợ nhiều cluster Ceph, cho phép quản trị viên quản lý và giám sát nhiều môi trường lưu trữ từ một điểm trung tâm.

Nếu bạn tạm dừng hoặc ngừng dịch vụ Ceph Manager trong một cluster Ceph, dữ liệu trong cluster không sẽ không bị hỏng. Ceph Manager chủ yếu đóng vai trò trong việc cung cấp các tính năng quản lý, giám sát và giao diện người dùng, và không trực tiếp tham gia vào việc lưu trữ dữ liệu.

Tuy nhiên, việc tạm dừng dịch vụ Ceph Manager có thể ảnh hưởng đến khả năng quản lý và giám sát của hệ thống. Dưới đây là một số điều bạn có thể gặp phải khi tạm dừng dịch vụ Ceph Manager:

  • Mất Quản Lý Tự Động: Ceph Manager đóng vai trò trong việc quản lý tự động của cluster. Khi tạm dừng, khả năng tự động thích ứng của cluster có thể bị giảm.
  • Mất Giao Diện Người Dùng: Nếu bạn sử dụng Dashboard hoặc các giao diện người dùng khác do Ceph Manager cung cấp, bạn sẽ không thể truy cập và sử dụng chúng khi dịch vụ Manager đang tạm dừng.
  • Cảnh Báo và Theo Dõi: Các cảnh báo và thông tin theo dõi mà Ceph Manager cung cấp sẽ không còn khả dụng trong thời gian dịch vụ Manager bị tạm dừng.

Lưu ý rằng tùy thuộc vào cấu hình và yêu cầu cụ thể của cluster, việc tạm dừng dịch vụ Ceph Manager có thể được thực hiện mà không gây ra vấn đề đáng kể trong việc lưu trữ dữ liệu. Tuy nhiên, trước khi thực hiện bất kỳ thay đổi nào, luôn nên thực hiện kiểm thử và đánh giá tác động có thể có lên hệ thống của bạn.

Cấu hình thủ công Ceph Manager.

Dưới đây là hướng dẫn cài đặt thủ công một đối tượng Ceph Manager (ceph-mgr):

  • Tạo Khóa Xác Thực:
    • Sử dụng lệnh ceph auth get-or-create để tạo một khóa xác thực cho đối tượng Ceph Manager của bạn.
    • Sử dụng lệnh ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *', với $name là tên bạn muốn đặt cho mgr của bạn.
    • Lệnh này tạo ra một khóa xác thực có quyền cho việc giám sát (mon), các hoạt động OSD (osd), và máy chủ metadata (mds).
  • Lưu khóa:
    • Lưu khóa được tạo ra dưới dạng một file có tên là keyring trong đường dẫn của mgr.
    • Đường dẫn cho một cluster có tên là “ceph” và mgr có tên là “foo” sẽ là /var/lib/ceph/mgr/ceph-foo/keyring.
  • Khởi chạy ceph-mgr:
    • Khởi chạy đối tượng ceph-mgr bằng cách sử dụng lệnh ceph-mgr -i $name, với $name là tên bạn gán cho mgr của bạn.
  • Kiểm tra trạng thái mgr:
    • Kiểm tra xem mgr đã khởi chạy bằng cách xem kết quả của ceph status.
    • Tìm dòng chỉ định trạng thái mgr, có dạng mgr active: $name.

Thông thường, các bước này thường được thực hiện bằng cách sử dụng công cụ tự động như ceph-ansible, nhưng cài đặt thủ công mang lại sự kiểm soát hơn đối với quá trình này.

Xác thực người dùng.

Khả năng CephX là một phần của hệ thống xác thực Ceph, chịu trách nhiệm cho việc kiểm soát quyền truy cập và bảo mật trong hệ thống. Trong trường hợp này, khi bạn triển khai đối tượng quản lý mới, nó đòi hỏi các khả năng CephX mới để thực hiện các chức năng liên quan đến việc quản lý.

Nếu bạn đã nâng cấp từ một phiên bản cũ của Ceph hoặc sử dụng các công cụ cài đặt mặc định, hệ thống quản lý của bạn sẽ tự động được cấp quyền cho các khả năng mới này.

Tuy nhiên, nếu bạn sử dụng các công cụ từ nguồn khác và gặp lỗi EACCES (quyền truy cập bị từ chối) khi gọi một số lệnh Ceph, điều đó có thể xuất phát từ việc người quản trị không có đủ quyền. Để khắc phục, bạn cần thêm quyền “mgr allow *” vào CephX của người quản trị thông qua quy trình sửa đổi khả năng người dùng. Điều này sẽ cung cấp quyền cho đối tượng quản lý để thực hiện các chức năng cần thiết.

Để thêm quyền “mgr allow *” vào CephX của người quản trị, bạn có thể thực hiện theo các bước sau:

Mở tệp cấu hình CephX, thường là ceph.conf.

Tìm đoạn cấu hình liên quan đến quyền của người quản trị, có thể có dạng như sau:

[client.admin]
key = <admin_key>
auid = <admin_auid>
caps mds = allow *
caps mon = allow *
caps osd = allow *

Thêm quyền”mgr allow *” vào danh sách các quyền của người quản trị. Đảm bảo bạn giữ nguyên các quyền khác nếu cần thiết:

[client.admin]
key = <admin_key>
auid = <admin_auid>
caps mds = allow *
caps mon = allow *
caps osd = allow *
caps mgr = allow *

Lưu và đóng file cấu hình.

Sau đó, bạn có thể cần tái khởi động các dịch vụ Ceph để áp dụng các thay đổi.

Lưu ý rằng quy trình cụ thể có thể thay đổi tùy thuộc vào phiên bản cụ thể của Ceph và cách triển khai của bạn. Đảm bảo đọc tài liệu hướng dẫn hoặc tài liệu tham khảo chính thức của Ceph để có thông tin chi tiết và chính xác nhất.

Tính Sẵn Cao.

  • Số lượng Ceph Manager Daemon (ceph-mgr): Đề xuất cài đặt một đối tượng ceph-mgr trên mỗi máy chủ chạy ceph-mon daemon để đảm bảo sẵn sàng cao. Điều này giúp tăng khả năng chịu lỗi và đồng thời sử dụng tối đa nguồn tài nguyên có sẵn trên từng máy chủ.
  • Hoạt Động và Dự Phòng: Mặc định, đối tượng ceph-mgr đầu tiên xuất hiện sẽ trở thành đối tượng hoạt động được sử dụng. Các đối tượng còn lại sẽ là bản sao dự phòng. Không yêu cầu quorum (tính đồng thuận) giữa các đối tượng ceph-mgr, điều này có nghĩa là tất cả chúng có thể hoạt động độc lập.
  • Quá Trình Failover: Nếu đối tượng ceph-mgr hoạt động không gửi tín hiệu “beacon” (báo hiệu) đến giám sát trong khoảng thời gian được đặt trong tham số mon_mgr_beacon_grace, nó sẽ bị thay thế bởi một đối tượng ceph-mgr dự phòng. Điều này giúp đảm bảo rằng luôn có ít nhất một đối tượng ceph-mgr hoạt động để duy trì tính sẵn sàng của hệ thống.
  • Ngăn Chặn Failover: Nếu bạn muốn ngăn chặn quá trình thay thế tự động (failover), bạn có thể sử dụng lệnh ceph mgr fail <tên mgr> để đánh dấu rằng một đối tượng ceph-mgr cụ thể đã gặp sự cố và không nên được chọn làm đối tượng hoạt động. Điều này có thể hữu ích trong một số trường hợp khi bạn muốn kiểm soát quá trình thay thế thủ công hơn.

Mục đích chung là đảm bảo tính sẵn sàng và ổn định của hệ thống Ceph bằng cách quản lý và giám sát các đối tượng ceph-mgr.

Hiệu suất và khả năng mở rộng.

  • Kích hoạt cache và TTL (Thời gian sống): Đối tượng quản lý có một cache chung được chia sẻ giữa tất cả các mô-đun của nó. Bạn có thể kích hoạt cache này và đặt TTL cho các đối tượng Python được lưu trữ trong cache bằng lệnh ceph config set mgr mgr_ttl_cache_expire_seconds <giây>. Việc này giúp kiểm soát thời gian tồn tại của dữ liệu trong cache.
  • Kích hoạt cache theo đối tượng: Đề xuất kích hoạt cache với TTL là 10 giây khi có một lượng lớn OSDs (500+) hoặc PGs (10k+). Điều này giúp giảm vấn đề về trễ khi yêu cầu cấu trúc lớn, đặc biệt là khi hệ thống có nhiều OSDs hoặc PGs.
  • Chạy Lệnh Perf Dump: Để đánh giá hiệu suất của các mô-đun quản lý, bạn có thể chạy lệnh ceph daemon mgr.${MGRNAME} perf dump. Trong đầu ra, bạn sẽ thấy các chỉ số hiệu suất như mgr.cache_hitmgr.cache_miss là tỷ lệ hit/miss của cache. Điều này giúp bạn đánh giá hiệu suất của cache và xác định liệu có cần điều chỉnh thời gian sống của cache hay không.

Sử dụng các mô-đun.

  • Sử dụng lệnh ceph mgr module ls để xem các mô-đun nào có sẵn và đang được kích hoạt. Sử dụng ceph mgr module ls --format=json-pretty để xem thông tin chi tiết về siêu dữ liệu của các mô-đun bị tắt.
  • Bật hoặc tắt các mô-đun bằng các lệnh ceph mgr module enable <mô-đun>ceph mgr module disable <mô-đun> tương ứng.
  • Nếu một mô-đun được bật, thì đối tượng ceph-mgr đang hoạt động sẽ tải và thực thi nó. Trong trường hợp các mô-đun cung cấp dịch vụ, như một máy chủ HTTP, mô-đun có thể công bố địa chỉ của nó khi được tải. Để xem các địa chỉ của các mô-đun như vậy, sử dụng lệnh ceph mgr services.
  • Một số mô-đun cũng có thể thực hiện một chế độ chờ đặc biệt chạy trên các đối tượng ceph-mgr chờ đợi cũng như đối tượng hoạt động. Điều này cho phép các mô-đun cung cấp dịch vụ chuyển hướng các khách hàng của mình đến đối tượng ceph-mgr đang hoạt động, nếu khách hàng cố gắng kết nối đến một đối tượng chờ đợi.
  • Tham khảo trang tài liệu cho từng mô-đun quản lý cụ thể để biết thêm thông tin về chức năng mỗi mô-đun cung cấp.

Ví dụ về kích hoạt mô-đun Dashboard.

Sử dụng lệnh ceph mgr module ls để xem các mô-đun đã được kích hoạt và các mô-đun bị tắt:

{
    "enabled_modules": ["restful", "status"],
    "disabled_modules": ["dashboard"]
}

Kích hoạt mô-đun Dashboard bằng lệnh ceph mgr module enable dashboard:

{
    "enabled_modules": ["restful", "status", "dashboard"],
    "disabled_modules": []
}

Sử dụng lệnh ceph mgr services để xem địa chỉ các dịch vụ, trong trường hợp này, Dashboard:

{
    "dashboard": "http://myserver.com:7789/",
    "restful": "https://myserver.com:8789/"
}

Lưu ý, khi cụm được khởi động lần đầu, nó sử dụng cài đặt mgr_initial_modules để ghi đè lên các mô-đun nào được kích hoạt. Tuy nhiên, cài đặt này sẽ bị bỏ qua trong suốt thời gian tồn tại của cụm: chỉ sử dụng nó để khởi động.

Ví dụ, trước khi khởi động các daemon giám sát lần đầu, bạn có thể thêm một phần như sau vào ceph.conf:

[mon]
    mgr_initial_modules = dashboard balancer

Module Pool.

Manager tạo ra một pool để sử dụng bởi các mô-đun của nó để lưu trữ trạng thái. Tên của pool này là .mgr (với dấu . ở đầu chỉ định một tên pool đã được dành).

Chú ý, trước phiên bản Quincy, mô-đun devicehealth tạo ra một pool device_health_metrics để lưu trữ thống kê thông số SMART của thiết bị. Từ Quincy, pool này tự động đổi tên để trở thành pool chung của mô-đun quản lý.

Gọi lệnh của Mô-đun.

Khi một mô-đun triển khai các lệnh dòng lệnh, các lệnh sẽ có thể truy cập như các lệnh Ceph thông thường. Ceph sẽ tự động tích hợp các lệnh của mô-đun vào giao diện CLI tiêu chuẩn và định tuyến chúng một cách thích hợp đến mô-đun.

Ví dụ:

ceph <lệnh | help>

Cấu Hình.

  • mgr_module_path:
    • Đường dẫn để tải các mô-đun.
  • mgr_initial_modules:
    • Danh sách tên mô-đun đọc bởi giám sát khi cụm khởi động lần đầu sau cài đặt, để điền vào danh sách các mô-đun quản lý được bật. Cập nhật sau đó sẽ sử dụng các lệnh ‘mgr module [enable|disable]’. Danh sách có thể được phân tách bằng dấu phẩy hoặc khoảng trắng.
  • mgr_disabled_modules:
    • Một danh sách tên mô-đun, được phân tách bằng dấu phẩy, không sẽ được tải khi quản lý khởi động. Theo mặc định, quản lý tải tất cả các mô-đun được tìm thấy trong ‘mgr_module_path’ được chỉ định và nó khởi động những mô-đun được bật như đã hướng dẫn.
  • mgr_standby_modules:
    • Mặc định, các mô-đun chờ đợi sẽ trả lời các yêu cầu đến với một HTTP redirect đến quản lý đang hoạt động, cho phép người dùng chỉ đến bất kỳ nút mgr nào và tìm đến mgr đang hoạt động. Tuy nhiên, chế độ này gặp vấn đề khi sử dụng bộ cân bằng tải vì (1) các địa chỉ chuyển hướng thường là địa chỉ IP riêng và (2) bộ cân bằng tải không thể xác định xem mgr nào là đúng để gửi dữ liệu đến. Nếu sử dụng bộ cân bằng tải, đặt giá trị này thành false.
  • mgr_data:
    • Đường dẫn để tải dữ liệu của daemon (ví dụ: keyring).
  • mgr_tick_period:
    • Số giây giữa các beacon mgr tới các giám sát và kiểm tra định kỳ khác.
  • mon_mgr_beacon_grace:
    • Khoảng thời gian tính bằng giây từ beacon cuối cùng đến khi giám sát đánh dấu một daemon quản lý là đã thất bại.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories