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

Các nhóm ZooKeeper được thiết kế để duy trì hoạt động mà không bị mất dữ liệu, mặc dù có thể mất một hoặc nhiều nút ZooKeeper. Bạn có thể sử dụng hiệu quả khả năng phục hồi này để 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 các thành phần Edge khác nhau, đồ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ác cấu trúc liên kết Edge được hỗ trợ cho hệ thống sản xuất đều sử dụng ít nhất 3 nút ZooKeeper.

Sử dụng các thuộc tính ZK_HOSTS và ZK_CLIENT_HOSTS trong tệp cấu hình Edge để chỉ định các nút ZooKeeper. Ví dụ:

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

Trong trường hợp:

  • 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ả các Trung tâm dữ liệu.

  • ZK_CLIENT_HOSTS chỉ định địa chỉ IP của các nút ZooKeeper chỉ được sử dụng bởi Trung tâm dữ liệu này. 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 quá trình cài đặt mộ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à các nút voter. Điều đó có nghĩa là tất cả các nút đều tham gia vào việc bầu chọn trưởng nhóm ZooKeeper. Bạn có thể thêm công cụ sửa đổi :observer vào ZK_HOSTS để cho biết rằng nút đó là nút observer chứ không phải nút voter. Nút observer không tham gia vào việc bầu chọn trưởng nhóm.

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

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 2:

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

Các phần sau đây chứa thông tin chi tiết hơn về các nút trưởng nhóm, voter và observer, đồng thời mô tả những điều cần cân nhắc khi thêm các nút voter và observer.

Giới thiệu về trưởng nhóm, người theo dõi, voter và observer

Trong quá trình cài đặt ZooKeeper nhiều nút, một trong các nút được chỉ định là trưởng nhóm. Tất cả các nút ZooKeeper khác đều được chỉ định là người theo dõi. Mặc dù có thể đọc 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 trưởng nhóm. Ví dụ: một Bộ xử lý thông báo mới được thêm vào Edge. Thông tin đó được ghi vào trưởng nhóm ZooKeeper. Sau đó, tất cả người theo dõi đều sao chép dữ liệu.

Vào thời điểm cài đặt Edge, bạn chỉ định từng nút ZooKeeper là voter hoặc observer. Sau đó, trưởng nhóm được bầu chọn bởi tất cả các nút ZooKeeper voter. Một yêu cầu duy nhất để bầu chọn a trưởng nhóm là phải có số lượng tối thiểu các nút ZooKeeper voter đang hoạt động. Số lượng tối thiểu có nghĩa là hơn một nửa số nút ZooKeeper voter trên tất cả các Trung tâm dữ liệu đang hoạt động.

Nếu không có số lượng tối thiểu các nút voter, thì không thể bầu chọn trưởng nhóm. Trong trường hợp này, ZooKeeper không thể xử lý các 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 hoặc đăng nhập vào Giao diện người dùng Edge mới cho đến khi số lượng tối thiểu được khôi phục.

Ví dụ: trong quá trình cài đặt một Trung tâm dữ liệu:

  • Bạn đã cài đặt 3 nút ZooKeeper
  • Tất cả các nút ZooKeeper đều là voter
  • Số lượng tối thiểu là 2 nút voter đang hoạt động
  • Nếu chỉ có một nút voter, thì nhóm ZooKeeper không thể hoạt động

Trong quá trình cài đặt với 2 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 voter
  • Trung tâm dữ liệu 2 có 2 nút voter và 1 nút observer
  • Số lượng tối thiểu dựa trên 5 voter trên cả 2 Trung tâm dữ liệu, do đó là 3 nút voter đang hoạt động
  • Nếu chỉ có 2 nút voter trở xuống, thì nhóm ZooKeeper không thể hoạt động hoạt động

Những điều cần cân nhắc khi thêm các nút làm voter hoặc observer

Các yêu cầu của 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 các nút ZooKeeper mô tả cách thêm các nút ZooKeeper khác 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: voter hoặc observer.

Bạn cần đảm bảo có đủ các nút voter để nếu một hoặc nhiều nút voter ngừng hoạt động, thì nhóm ZooKeeper vẫn có thể hoạt động, tức là vẫn có số lượng tối thiểu các nút voter. Bằng cách thêm các nút voter, bạn sẽ tăng kích thước của số lượng tối thiểu, do đó, bạn có thể chịu được nhiều nút voter ngừng hoạt động hơn.

Tuy nhiên, việc thêm các nút voter 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ố lượng tối thiểu phải đồng ý về trưởng nhóm. Thời gian để xác định trưởng nhóm dựa trên số lượng nút voter, số lượng này sẽ tăng khi bạn thêm nhiều nút voter hơn. Do đó, bạn không nên đặt tất cả các nút là voter.

Thay vì thêm các nút voter, bạn có thể thêm các nút observer. Việc thêm các nút observer 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 chi phí bầu chọn trưởng nhóm vì các nút observer không bỏ phiếu và không ảnh hưởng đến kích thước số lượng tối thiểu. Do đó, nếu một nút observer ngừng hoạt động, thì điều này không ảnh hưởng đến khả năng bầu chọn trưởng nhóm của nhóm. Tuy nhiên, việc mất các nút observer có thể làm giảm hiệu suất đọc của nhóm ZooKeeper vì có ít nút hơn để xử lý các yêu cầu dữ liệu.

Trong một Trung tâm dữ liệu, Apigee khuyên bạn không nên có quá 5 voter bất kể số lượng nút observer. Trong 2 Trung tâm dữ liệu, Apigee khuyên bạn không nên có quá 9 voter (5 ở một Trung tâm dữ liệu và 4 ở Trung tâm dữ liệu còn lại). Sau đó, bạn có thể thêm số lượng nút observer cần thiết cho các yêu cầu về hệ thống.

Xoá nút Zookeeper

Có nhiều lý do khiến bạn muốn xoá nút Zookeeper; ví dụ: nút bị hỏng hoặc được thêm vào môi trường không chính xác.

Phần này mô tả cách xoá nút Zookeeper khi nút ngừng hoạt động và không thể truy cập.

Cách xoá nút Zookeeper:

  1. Chỉnh sửa tệp cấu hình im lặng và xoá địa chỉ IP của nút Zookeeper mà bạn muốn xoá.
  2. Chạy lại lệnh setup cho Zookeeper để định cấu hình lại các nút ZooKeeper còn lại:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Khởi động lại tất cả các nút Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Định cấu hình lại nút Máy chủ quản lý:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Định cấu hình lại tất cả các Bộ định tuyến:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Định cấu hình lại tất cả các Bộ xử lý thông báo:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Định cấu hình lại tất cả các nút Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Định cấu hình lại tất cả các nút Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

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 nhóm hoạt động đầy đủ mà không bị gián đoạn nếu bạn 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 chỉ có một nút ZooKeeper ngừng hoạt động tại một thời điểm, bạn có thể đảm bảo rằng luôn có số lượng tối thiểu các nút voter để bầu chọn trưởng nhóm.

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 nhóm ZooKeeper xem tất cả các nút ZooKeeper trên tất cả các Trung tâm dữ liệu là một nhóm.

Vị trí của các nút voter 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ố lượng tối thiểu. Các nút riêng lẻ có thể ngừng hoạt động trên các Trung tâm dữ liệu, nhưng miễn là số lượng tối thiểu được duy trì trên toàn bộ nhóm, thì ZooKeeper vẫn hoạt động.

Hàm ý của việc bảo trì

Vào nhiều thời điểm, bạn sẽ phải ngừng hoạt động một nút ZooKeeper để bảo trì, có thể là nút voter hoặc nút observer. 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ể gặp lỗi 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 ngừng hoạt động là nút observer, 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 voter, thì điều này có thể ảnh hưởng đến khả năng hoạt động của nhóm ZooKeeper do mất một nút tham gia vào quá trình bầu chọn trưởng nhóm. Bất kể lý do khiến nút voter ngừng hoạt động là gì, bạn cần duy trì số lượng tối thiểu các nút voter đang hoạt động.

Quy trình bảo trì

Chỉ thực hiện quy trình bảo trì sau khi đảm bảo rằng nhóm ZooKeeper đang hoạt động. Điều này giả định rằng các nút observer đang hoạt động và có đủ các nút voter trong quá trình bảo trì để duy trì số lượng tối thiểu.

Khi các điều kiện này được đáp ứng, một nhóm ZooKeeper có kích thước tuỳ ý có thể chịu được việc mất một nút tại bất kỳ thời điểm nào mà không bị 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 nhóm miễn là bạn thực hiện trên một nút tại một thời điểm.

Trong quá trình bảo trì, hãy sử dụng quy trình sau để xác định loại nút ZooKeeper (trưởng nhóm, 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, trong đó 2181 là cổng ZooKeeper:
    echo stat | nc localhost 2181

    Bạn sẽ thấy kết quả ở dạng:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    Trong dòng Mode của kết quả cho các nút, bạn sẽ thấy observer, leader, hoặc follower (có nghĩa là voter không phải là trưởng nhóm) tuỳ thuộc vào cấu hình nút.

  3. Lặp lại các bước 1 và 2 trên từng nút ZooKeeper.

Tóm tắt

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

  • Bạn phải duy trì số lượng tối thiểu các nút voter trong quá trình bảo trì để đảm bảo nhóm ZooKeeper vẫn hoạt động.
  • Việc ngừng hoạt động một nút observer không ảnh hưởng đến số lượng tối thiểu hoặc khả năng bầu chọn trưởng nhóm.
  • Số lượng 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ến hành 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.