Nhiệm vụ bảo trì Apache Cassandra

Phần này mô tả các công việc bảo trì định kỳ cho Cassandra.

Bảo dưỡng chống entropy

Nút vòng Apache Cassandra yêu cầu bảo trì định kỳ để đảm bảo tính nhất quán trên tất cả các nút. Để thực hiện việc bảo trì này, hãy sử dụng lệnh sau:

apigee-service apigee-cassandra apigee_repair -pr

Apigee được đề xuất như sau khi chạy lệnh này:

  • Chạy trên mọi nút Cassandra (trên tất cả các khu vực hoặc trung tâm dữ liệu).
  • Chạy trên một nút mỗi lần để đảm bảo tính nhất quán giữa tất cả các nút trong vòng. Việc chạy các công việc sửa chữa trên nhiều nút cùng một lúc có thể ảnh hưởng đến tình trạng của Cassandra.

    Để kiểm tra xem một công việc sửa chữa trên một nút có đã hoàn tất thành công hay không, hãy tìm mục nhập có mã nhận dạng duy nhất (UUID) của phiên sửa chữa gần đây nhất và cụm từ "phiên đã hoàn tất thành công" trong tệp system.log của nút. Dưới đây là mục nhập nhật ký mẫu:

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • Chạy trong thời gian có khối lượng công việc tương đối thấp (công cụ gây ra một lượng tải đáng kể lên hệ thống).
  • Chạy ít nhất 7 ngày một lần để loại bỏ các vấn đề liên quan đến hoạt động "xoá bị quên" của Cassandra.
  • Chạy trên nhiều nút vào những ngày khác nhau hoặc lên lịch sao cho có vài giờ giữa các nút để chạy trên mỗi nút.
  • Sử dụng tuỳ chọn -pr (dải_ô phân vùng) để chỉ chỉ định dải ô phân vùng chính của nút.

Nếu bật phương thức xác thực JMX cho Cassandra, bạn phải thêm tên người dùng và mật khẩu khi gọi nodetool. Ví dụ:

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

Bạn cũng có thể chạy lệnh sau để kiểm tra các tuỳ chọn được hỗ trợ của apigee_repair:

apigee-service apigee-cassandra apigee_repair -h

Lưu ý: apigee_repair là một trình bao bọc xung quanh việc sửa chữa dùng công cụ nút của Cassandra, công cụ này thực hiện các bước kiểm tra bổ sung trước khi thực hiện việc sửa chữa Cassandra.

Để biết thêm thông tin, hãy xem các tài nguyên sau:

Bảo trì tệp nhật ký

Nhật ký Cassandra được lưu trữ trong thư mục /opt/apigee/var/log/cassandra trên mỗi nút. Theo mặc định, bạn có thể tạo tối đa 50 tệp nhật ký, mỗi tệp có kích thước tối đa 20 MB. Sau khi đạt đến giới hạn này, các nhật ký cũ hơn sẽ bị xoá khi các nhật ký mới được tạo.

Nếu nhận thấy các tệp nhật ký Cassandra đang chiếm quá nhiều dung lượng, bạn có thể sửa đổi dung lượng được phân bổ cho các tệp nhật ký bằng cách chỉnh sửa chế độ cài đặt log4j.

  1. Chỉnh sửa /opt/apigee/customer/application/cassandra.properties để thiết lập các thuộc tính sau. Nếu tệp đó không tồn tại, hãy tạo tệp:
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. Khởi động lại Cassandra bằng cách dùng lệnh sau:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Bảo trì dung lượng ổ đĩa

Bạn nên thường xuyên theo dõi mức sử dụng ổ đĩa Cassandra để đảm bảo ít nhất 50% dung lượng của mỗi ổ đĩa còn trống. Nếu mức sử dụng ổ đĩa tăng lên trên 50%, bạn nên tăng dung lượng ổ đĩa để giảm tỷ lệ phần trăm đang sử dụng.

Cassandra tự động thực hiện các thao tác sau để giảm mức sử dụng ổ đĩa của chính mình:

  • Xoá mã thông báo xác thực khi mã thông báo hết hạn. Tuy nhiên, có thể mất vài tuần để giải phóng dung lượng ổ đĩa mà mã thông báo đang sử dụng, tuỳ thuộc vào cấu hình của bạn. Nếu việc xoá tự động không đủ để duy trì đủ dung lượng ổ đĩa, hãy liên hệ với nhóm hỗ trợ để tìm hiểu về cách xoá mã thông báo theo cách thủ công nhằm khôi phục dung lượng.
  • Nén dữ liệu. Bạn nên thay đổi chiến lược nén trên không gian phím thành LeveledCompactionStrategy. Chiến lược này cung cấp chiến lược sử dụng ổ đĩa tốt hơn so với SizeTieredCompactionStrategy mặc định. Xem phần Chiến lược nén theo cấp độ.

Lưu ý: Khi Cassandra thực hiện việc nén dữ liệu, có thể sẽ mất một lượng đáng kể chu kỳ và bộ nhớ CPU. Tuy nhiên, việc sử dụng tài nguyên sẽ trở về mức bình thường sau khi quá trình nén hoàn tất. Bạn có thể chạy lệnh 'Nodetool compactionstats' trên mỗi nút để kiểm tra xem tính năng nén có đang chạy hay không. Kết quả của compactionstats sẽ cho bạn biết liệu có các thuật toán nén đang chờ thực thi hay không và thời gian hoàn thành dự kiến.