Giới thiệu về việc bảo trì ZooKeeper

Edge for Private Cloud v4.18.01

Các nhóm ZooKeeper được thiết kế để vẫn hoạt động mà không bị mất dữ liệu, mặc dù bị mất một hoặc nhiều nút ZooKeeper. Bạn có thể sử dụng tính năng phục hồi này một cách hiệu quả để bảo trì các nút ZooKeeper mà không làm gián đoạn hệ thống.

Giới thiệu về ZooKeeper và Edge

Trong Edge, các nút ZooKeeper chứa dữ liệu cấu hình về vị trí và cấu hình của nhiều thành phần Edge, đồng thời thông báo cho các thành phần khác nhau về các thay đổi về cấu hình. Tất cả cấu trúc Edge được hỗ trợ cho một hệ thống phát hành công khai đều chỉ định sử dụng ít nhất ba nút ZooKeeper.

Sử dụng các thuộc tính ZK_HOSTSZK_CLIENT_HOSTS trong tệp cấu hình Edge để chỉ định các nút ZooKeeper. Để kiểm tra

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

trong đó:

  • ZK_HOSTS – Chỉ định địa chỉ IP của các nút ZooKeeper. Các địa chỉ IP phải được liệt kê theo cùng một thứ tự trên tất cả các nút ZooKeeper.

    Trong môi trường nhiều Trung tâm dữ liệu, hãy liệt kê tất cả các nút ZooKeeper từ tất cả Trung tâm dữ liệu.
  • ZK_CLIENT_HOSTS – Chỉ định địa chỉ IP của các nút ZooKeeper mà Trung tâm dữ liệu này sử dụng. Các địa chỉ IP phải được liệt kê theo cùng một thứ tự trên tất cả các nút ZooKeeper trong Trung tâm dữ liệu.

    Trong một lượt cài đặt Trung tâm dữ liệu, đây là các nút giống như được chỉ định bởi ZK_HOSTS. Trong môi trường nhiều Trung tâm dữ liệu, tệp cấu hình Edge cho mỗi Trung tâm dữ liệu chỉ nên liệt kê các nút ZooKeeper cho Trung tâm dữ liệu đó

Theo mặc định, tất cả các nút ZooKeeper đều được chỉ định là nút voter (bỏ phiếu). Điều đó có nghĩa là tất cả các nút đều tham gia vào việc bầu leader (trình điều phối) ZooKeeper. Bạn có thể đưa đối tượng sửa đổi ":observer" vào ZK_HOSTS để cho biết rằng ghi chú là nút người quan sát chứ không phải trình bỏ phiếu. Nút quan sát không tham gia vào quá trình bầu chọn máy chủ điều phối.

Bạn thường chỉ định đối tượng sửa đổi ":observer" khi tạo nhiều Trung tâm dữ liệu cạnh hoặc khi một Trung tâm dữ liệu có một số lượng lớn nút ZooKeeper. Ví dụ: trong một bản cài đặt Edge có 12 máy chủ lưu trữ với hai Trung tâm dữ liệu, ZooKeeper trên nút 9 trong Trung tâm dữ liệu 2 là trình quan sát:

Sau đó, bạn sử dụng các chế độ cài đặt sau trong tệp cấu hình cho Trung tâm dữ liệu 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Và đối với Trung tâm dữ liệu

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

Giới thiệu về người lãnh đạo, người theo dõi, người bỏ phiếu và người quan sát

Trong quá trình cài đặt ZooKeeper nhiều nút, một trong các nút được chỉ định là nút chính. Tất cả các nút ZooKeeper khác được chỉ định là follower (thực thể theo dõi). Mặc dù các hoạt động đọc có thể diễn ra từ bất kỳ nút ZooKeeper nào, nhưng tất cả các yêu cầu ghi đều được chuyển tiếp đến máy chủ chính. Ví dụ: một Trình xử lý thông báo mới được thêm vào Edge. Thông tin đó được ghi vào máy chủ điều phối ZooKeeper. Sau đó, tất cả các trình theo dõi sẽ sao chép dữ liệu.

Tại thời điểm cài đặt Edge, bạn chỉ định mỗi nút ZooKeeper làm trình bầu chọn hoặc trình quan sát. Sau đó, tất cả các nút ZooKeeper bầu sẽ bầu ra máy chủ điều phối. Một yêu cầu để bầu ra một leader là phải có đủ số nút bỏ phiếu ZooKeeper đang hoạt động. Số người đủ điều kiện tham gia có nghĩa là hơn một nửa số nút ZooKeeper của người bỏ phiếu trên tất cả các Trung tâm dữ liệu đều hoạt động.

Nếu không có đủ số lượng nút bỏ phiếu, thì không thể bầu ra máy chủ điều phối. Trong trường hợp này, Zookeeper không thể phân phát yêu cầu. Điều đó có nghĩa là bạn không thể gửi yêu cầu đến Máy chủ quản lý Edge, xử lý các yêu cầu API quản lý hoặc đăng nhập vào giao diện người dùng Edge cho đến khi khôi phục đủ số người tham gia.

Ví dụ: trong một lượt cài đặt Trung tâm dữ liệu:

  • Bạn đã cài đặt 3 nút ZooKeeper
  • Tất cả nút ZooKeeper đều là trình bỏ phiếu
  • Số người tham gia tối thiểu là hai nút cử tri đang hoạt động
  • Nếu chỉ có một nút bầu thì nhóm ZooKeeper không thể hoạt động

Trong một lượt cài đặt có hai Trung tâm dữ liệu:

  • Bạn đã cài đặt 3 nút ZooKeeper cho mỗi Trung tâm dữ liệu, tổng cộng là 6 nút
  • Trung tâm dữ liệu 1 có 3 nút bầu
  • Trung tâm dữ liệu 2 có hai nút bầu và một nút quan sát
  • Số người tham gia cần thiết dựa trên 5 trình bầu chọn trên cả hai Trung tâm dữ liệu, do đó là 3 nút trình bầu chọn đang hoạt động
  • Nếu chỉ có hai nút bầu cử trở xuống thì nhóm ZooKeeper không thể hoạt động

Thêm nút làm trình bầu hoặc trình quan sát

Yêu cầu hệ thống có thể yêu cầu bạn thêm các nút ZooKeeper khác vào quá trình cài đặt Edge. Tài liệu Thêm nút ZooKeeper mô tả cách thêm các nút ZooKeeper bổ sung vào Edge. Khi thêm các nút ZooKeeper, bạn phải cân nhắc loại nút cần thêm: trình bầu cử hoặc trình quan sát.

Bạn cần đảm bảo có đủ nút bầu cử để nếu một hoặc nhiều nút bầu cử bị lỗi thì nhóm ZooKeeper vẫn có thể hoạt động, tức là vẫn có đủ số nút bầu cử. Bằng cách thêm các nút bầu, bạn sẽ tăng số lượng người tham gia biểu quyết, do đó, bạn có thể chấp nhận nhiều nút bầu bị lỗi hơn.

Tuy nhiên, việc thêm các nút bỏ phiếu khác có thể ảnh hưởng tiêu cực đến hiệu suất ghi vì các thao tác ghi yêu cầu số người đồng ý đủ để chọn máy chủ chính. Thời gian xác định máy chủ chính dựa trên số lượng nút bỏ phiếu. Số lượng này sẽ tăng lên khi bạn thêm nhiều nút bỏ phiếu hơn. Do đó, bạn không nên đặt tất cả các nút làm trình bỏ phiếu.

Thay vì thêm nút bầu, bạn có thể thêm nút quan sát. Việc thêm các nút quan sát sẽ làm tăng hiệu suất đọc tổng thể của hệ thống mà không làm tăng mức hao tổn khi bầu ra một máy chủ chính vì các nút quan sát không bỏ phiếu và không ảnh hưởng đến số lượng thành viên cần có để họp hành. Do đó, nếu một nút quan sát ngừng hoạt động, điều này sẽ không ảnh hưởng đến khả năng của tập hợp để bầu ra một máy chủ điều phối. Tuy nhiên, việc mất các nút trình quan sát có thể làm giảm hiệu suất đọc của nhóm ZooKeeper vì có ít nút hơn để phục vụ các yêu cầu dữ liệu.

Trong một Trung tâm dữ liệu, Apigee đề xuất bạn không nên có nhiều hơn 5 trình bầu cử bất kể số lượng nút quan sát. Trong hai Trung tâm dữ liệu, Apigee đề xuất bạn không nên có nhiều hơn 9 trình bình chọn (5 trong một Trung tâm dữ liệu và 4 trong Trung tâm dữ liệu còn lại). Sau đó, bạn có thể thêm nhiều nút trình quan sát theo yêu cầu của hệ thống.

Những điều cần cân nhắc khi bảo trì

Bạn có thể bảo trì ZooKeeper trên một tập hợp hoạt động đầy đủ mà không bị gián đoạn nếu thực hiện trên một nút tại một thời điểm. Bằng cách đảm bảo rằng tại một thời điểm bất kỳ, chỉ có một nút ZooKeeper bị lỗi, bạn có thể đảm bảo rằng luôn có đủ số nút bỏ phiếu để bầu ra một nút trưởng.

Bảo trì trên nhiều trung tâm dữ liệu

Khi làm việc với nhiều Trung tâm dữ liệu, hãy nhớ rằng nhóm ZooKeeper không phân biệt giữa các Trung tâm dữ liệu. Các tập hợp ZooKeeper xem tất cả các nút ZooKeeper trên tất cả các Trung tâm dữ liệu dưới dạng một tập hợp.

Vị trí của các nút bỏ phiếu trong một Trung tâm dữ liệu nhất định không phải là yếu tố khi ZooKeeper thực hiện tính toán số người tham gia tối thiểu. Các nút riêng lẻ có thể ngừng hoạt động trên Trung tâm dữ liệu, nhưng miễn là số người đủ điều kiện được duy trì trên toàn bộ nhóm, thì ZooKeeper vẫn hoạt động.

Hệ quả của việc bảo trì

Đôi khi, bạn sẽ phải tắt một nút ZooKeeper để bảo trì, đó có thể là nút bỏ phiếu hoặc nút quan sát. Ví dụ: bạn có thể phải nâng cấp phiên bản Edge trên nút, máy lưu trữ ZooKeeper có thể không hoạt động hoặc nút có thể không hoạt động vì một số lý do khác, chẳng hạn như lỗi mạng.

Nếu nút bị lỗi là nút quan sát, thì bạn có thể thấy hiệu suất của nhóm ZooKeeper giảm nhẹ cho đến khi nút được khôi phục. Nếu nút là nút bỏ phiếu, thì nút đó có thể ảnh hưởng đến khả năng tồn tại của nhóm ZooKeeper do mất một nút tham gia vào quá trình bầu cử máy chủ chính. Bất kể lý do khiến nút bầu cử ngừng hoạt động, điều quan trọng là bạn phải duy trì số lượng nút bầu cử có sẵn.

Quy trình bảo trì

Bạn chỉ nên cân nhắc thực hiện bất kỳ quy trình bảo trì nào sau khi đảm bảo rằng một nhóm ZooKeeper đang hoạt động. Điều này giả định rằng các nút quan sát đang hoạt động và có đủ nút bỏ phiếu trong quá trình bảo trì để giữ lại số người đủ điều kiện.

Khi đáp ứng các điều kiện này, một nhóm ZooKeeper có kích thước tuỳ ý có thể chịu đựng việc mất một nút tại bất kỳ thời điểm nào mà không làm mất dữ liệu hoặc ảnh hưởng đáng kể đến hiệu suất. Điều này có nghĩa là bạn có thể tự do bảo trì bất kỳ nút nào trong tập hợp, miễn là mỗi lần chỉ bảo trì một nút.

Trong quá trình bảo trì, hãy sử dụng quy trình sau để xác định loại nút ZooKeeper (leader, voter hoặc observer):

  1. Nếu chưa cài đặt trên nút ZooKeeper, hãy cài đặt nc:
    > sudo yum install nc
  2. Chạy lệnh nc sau trên nút:
    > echo stat | nc localhost 2181

    Trong đó 2181 là cổng ZooKeeper. Bạn sẽ thấy kết quả trên biểu mẫu:
    Zookeeper phiên bản: 3.4.5-1392090, được tạo vào ngày 30/9/2012 17:52 GMT
    Khách hàng: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Độ trễ tối thiểu/trung bình/tối đa: 0/0/0
    Nhận được: 1
    Đã gửi: 0
    Kết nối: 1
    Chưa xử lý: 0
    Zxid: 0xc00000044
    Chế độ: follower
    Số lượng nút: 653


    Trong dòng Mode (Chế độ) của kết quả đầu ra cho các nút, bạn sẽ thấy observer (người quan sát), leader (người lãnh đạo) hoặc follower (người theo dõi) (nghĩa là người bỏ phiếu không phải là người lãnh đạo) tuỳ thuộc vào cấu hình nút.

    Lưu ý: Trong quá trình cài đặt Edge độc lập với một nút ZooKeeper, Mode (Chế độ) được đặt thành standalone (độc lập).
  3. Lặp lại các bước 1 và 2 trên mỗi nút ZooKeeper.

Tóm tắt

Cách tốt nhất để bảo trì một nhóm ZooKeeper là thực hiện từng nút một. Lưu ý:

  • Bạn phải duy trì số lượng đủ các nút bỏ phiếu trong quá trình bảo trì để đảm bảo nhóm ZooKeeper vẫn hoạt động
  • Việc gỡ bỏ một nút quan sát không ảnh hưởng đến số người tham gia tối thiểu hoặc khả năng bầu ra một nút điều phối
  • Số người tham gia tối thiểu được tính trên tất cả các nút ZooKeeper trong tất cả các Trung tâm dữ liệu
  • Tiếp tục bảo trì máy chủ tiếp theo sau khi máy chủ trước đó hoạt động
  • Sử dụng lệnh nc để kiểm tra nút ZooKeeper