Chào các bác, lại là tôi @daikk115 đây! Tôi muốn viết part 2 ngay sau hôm viết part 1 nhưng lại bận nên delay mấy hôm giờ mới xong :D


Tóm tắt


Trong phần 1, tôi đã nói về nguyên nhân gây lỗi xung quanh chỗ lock của Ceph image và việc xóa bỏ lock để giải quyết tạm thời vấn đề. Lock của Ceph image này là tính năng support bởi exclusive lock feature của Ceph image (ae có thể google thêm để hiểu về lịch sử ra đời cũng như chức năng/cách dùng của nó). Về cơ bản, exclusive lock đảm bảo cho việc chỉ có duy nhất một client được phép ghi vào Ceph image tại một thời điểm trong khi có thể có nhiều client khác cũng đang trỏ tới image đó.

Mọi người có thể test bằng cách dùng lệnh rbd map để map cùng 1 image lên 2 client, xong rồi format và mount đồng thời từ cả 2 client sẽ thấy chức năng này hoạt động như thế nào

Liên quan tới vấn đề compute node reboot, về phần Ceph, khi compute bị reboot hay hypervisor bị lỗi hay bất kỳ nguyên nhân gì khiến cho kết nối giữa máy ảo tới Ceph bị gián đoạn hay gói tin không toàn vẹn, client/IP của compute node sẽ bị xem xét cho vào blacklist để đảm bảo an toàn cho dữ liệu. Tại sao?

Việc một client ở trạng thái nằm trong blacklist hay không sẽ tương ứng với việc được cấp phát hoặc renew lock khi không có client khác đang chiếm lock

Vậy nếu như mình biết chắc chắn client đã hoạt động trở lại bình thường sau khi kết nối tới Ceph bị gián đoạn, (giống như cách mà compute node bị reboot, máy ảo chuyển về trạng thái shutdown) chúng ta cần làm gì? Chúng ta sẽ cần thực hiện thủ công hành động gỡ bỏ client đó khỏi blacklist!

Về phía OpenStack compute node, nó đã được phát triển để thông qua Ceph client sẽ gỡ bỏ chính nó ra khỏi blacklist sau khi compute node bị reboot (Vì OpenStack biết một máy ảo đang ở node compute nào, nó hiểu rằng nên cho phép node compute có IP bao nhiêu truy cập ổ đĩa ảo/Ceph image tương ứng với máy ảo). Tuy nhiên, vấn đề chính là tôi đã cấp thiếu quyền cho Ceph user, vì vậy khi OpenStack compute node bị reboot đột ngột, client/IP node compute này đã bị cho vào blacklist và máy ảo đang sử dụng ổ đĩa ảo trên Ceph sẽ không được cấp lock mới khi khởi động –> Không boot lên được.

Để khi reboot compute node không bị lỗi như tôi đã chia sẻ ở Part 1, cần thêm allow command 'osd blacklist' vào cho mon caps.

Ngoài ra, theo như trang chủ của Ceph từ bản Mimic, chúng ra được khuyến nghị cấu hình theo cap profiles để đơn giản hơn cho việc cấp phát quyền truy cập.

Note: Tại liệu trên trang chủ Ceph bản Jewel ( https://docs.ceph.com/docs/jewel/rbd/rbd-openstack/) đang cấu hình theo các cũ và thiếu đi phần allow command 'osd blacklist'. Chính chúng tôi cũng đã cài đặt theo hướng dẫn này trước khi nâng cấp lên bản Mimic và tiếp tục bị lỗi như trên.

Cảm ơn các bác đã đọc tới đây :D Nếu các bác bất kỳ trao đổi gì thêm, xin gửi mail về địa chỉ: [email protected]. À, nếu có bác nào cũng dính lỗi như tôi và muốn cập nhật lại quyền cho các user, các câu lệnh sau có thể sẽ hữu ích:

Peace,

Daikk115