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

Edge cho đám mây riêng tư phiên bản 4.19.01

Các quần thể ZooKeeper được thiết kế để duy trì 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. Khả năng phục hồi này có thể được sử dụng hiệu quả để bảo trì các nút ZooKeeper mà không có thời gian ngừng hoạt động của 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 khác nhau của Edge và thông báo cho các thành phần khác nhau về các thay đổi cấu hình. Tất cả cấu trúc liên kết Edge được hỗ trợ cho một hệ thống phát hành chính thức đều sử dụng ít nhất 3 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. 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 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ần cài đặt Trung tâm dữ liệu, đây chính là các nút do ZK_HOSTS chỉ định. 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 được chỉ định là nút voter. Điều đó có nghĩa là tất cả các nút đều tham gia chọn leader của ZooKeeper. Bạn có thể thêm đối tượng sửa đổi :observer với ZK_HOSTS để biểu thị rằng nút này là một nút quan sát chứ không phải là một nút bỏ phiếu. Nút đối tượng tiếp nhận dữ liệu không tham gia bầu cử người lãnh đạo.

Bạn thường chỉ định đối tượng 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 duy nhất có số lượng lớn nút ZooKeeper. Ví dụ: trong một lượt cài đặt Edge gồm 12 máy chủ lưu trữ với 2 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"

Đố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 cung cấp thêm thông tin chi tiết về nút dẫn đầu, nút cử tri và nút quan sát, đồng thời mô tả những điểm cần cân nhắc khi thêm nút cử tri và nút quan sát.

Giới thiệu về nhà lãnh đạo, người theo dõi, cử tri 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à đầu mối. Tất cả các nút ZooKeeper khác được chỉ định là người theo dõi. Mặc dù việc đọc có thể xảy 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 nút dẫn đầu. Ví dụ: Thêm một Trình xử lý tin nhắn mới vào Edge. Thông tin đó được ghi cho trưởng nhóm ZooKeeper. Sau đó, tất cả người 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 cử tri hoặc làm trình quan sát. Sau đó, người lãnh đạo sẽ được tất cả các nút cử tri ZooKeeper bầu ra. Một yêu cầu để bầu cử người lãnh đạo là phải có sẵn quorum gồm các nút bỏ phiếu ZooKeeper đang hoạt động. Một nhóm đại diện có nghĩa là hơn một nửa trong số tất cả các nút ZooKeeper dành cho cử tri (trên tất cả các Trung tâm dữ liệu) đều đang hoạt động.

Nếu không có đủ số người tham gia bầu cử, thì không thể bầu người lãnh đạo nào. 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 tới 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 đủ số người tham gia được khôi phục.

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

  • Bạn đã cài đặt 3 nút ZooKeeper
  • Tất cả các nút ZooKeeper là cử tri
  • Nhóm cử tri là hai nút cử tri đang hoạt động
  • Nếu chỉ có một nút bỏ phiếu thì tập hợp ZooKeeper sẽ không thể hoạt động

Trong một bản cài đặt có 2 Trung tâm dữ liệu:

  • Bạn đã cài đặt 3 nút ZooKeeper trên mỗi Trung tâm dữ liệu, cho tổng cộng sáu nút
  • Trung tâm dữ liệu 1 có 3 nút bỏ phiếu
  • Trung tâm dữ liệu 2 có 2 nút cử tri và 1 nút quan sát
  • Nhóm cử tri được dựa trên 5 cử tri trên cả hai Trung tâm dữ liệu và do đó sẽ là 3 nút cử tri đang hoạt động
  • Nếu chỉ có hai hoặc ít nút cử tri thì nhóm ZooKeeper sẽ không thể hoạt động

Những điểm cần lưu ý khi thêm nút làm người bỏ phiếu hoặc người quan sát

Có thể bạn sẽ phải thêm các nút ZooKeeper bổ sung vào hệ thống trong quá trình cài đặt Edge. Tài liệu về Thêm nút ZooKeeper mô tả cách thêm các nút ZooKeeper bổ sung vào Edge. Khi thêm nút ZooKeeper, bạn phải xem xét loại nút cần thêm: cử tri hoặc người quan sát.

Bạn muốn đảm bảo có đủ nút cử tri để nếu một hoặc nhiều nút cử tri không hoạt động thì nhóm ZooKeeper vẫn có thể hoạt động, nghĩa là vẫn còn một số lượng đáng kể các nút cử tri. Bằng cách thêm nút cử tri, bạn có thể tăng quy mô của nhóm cử tri và do đó, bạn có thể chấp nhận việc có nhiều nút cử tri không hoạt động.

Tuy nhiên, việc thêm nút cử tri bổ sung 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 nhóm tham gia phải thống nhất về người dẫn đầu. Thời gian cần để xác định người dẫn đầu dựa trên số lượng nút cử tri. Số nút này sẽ tăng lên khi bạn thêm nhiều nút cử tri. Do đó, bạn không muốn làm cho tất cả các nút bỏ phiếu.

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

Trong một Trung tâm dữ liệu, Apigee khuyên bạn không nên có quá 5 cử tri, bất kể số lượng nút quan sát. Trong 2 Trung tâm dữ liệu, Apigee khuyên bạn không nên có quá 9 cử tri (5 người trong một Trung tâm dữ liệu và 4 người còn lại). Sau đó, bạn có thể thêm số lượng nút quan sát (nếu cần) theo 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ụ: một nút bị hỏng hoặc nút được thêm vào sai môi trường.

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

Cách xoá nút Zookeeper:

  1. Chỉnh sửa tệp cấu hình im lặng của bạn và xóa địa chỉ IP của nút Zookeeper mà bạn muốn xóa.
  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ả 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ả 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ả 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ả 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ả 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 về việc bảo trì

Bạn có thể thực hiện bảo trì ZooKeeper trên một quần thể hoạt động đầy đủ mà không có thời gian ngừng hoạt động nếu thực hiện việc bảo trì trên một nút tại một thời điểm. Bằng cách đảm bảo mỗi lần chỉ có một nút ZooKeeper ngừng hoạt động, bạn có thể đảm bảo rằng luôn có đủ số lượng nút cử tri để bầu ra người lãnh đạo.

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 tập hợp 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 như 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à một yếu tố khi ZooKeeper thực hiện các phép tính đại diện. 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à nhóm đại diện được lưu giữ trên toàn bộ nhóm, thì ZooKeeper vẫn hoạt động.

Ảnh hưởng đối với việc bảo trì

Tại nhiều thời điểm, bạn sẽ phải gỡ bỏ nút ZooKeeper để bảo trì, có thể là nút cử tri hoặc nút quan sát. Ví dụ: có thể bạn 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 thành công hoặc nút này có thể ngừ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ị giảm là nút quan sát, thì hiệu suất của tập hợp ZooKeeper có thể giảm nhẹ cho đến khi nút này được khôi phục. Nếu nút đó là nút bỏ phiếu, thì nút này có thể ảnh hưởng đến khả năng tồn tại của tập hợp ZooKeeper do việc mất nút tham gia quá trình bầu cử người lãnh đạo. Bất kể lý do nút bỏ phiếu bị giảm là gì, điều quan trọng là bạn phải duy trì số lượng phiếu bầu hiện có.

Quy trình bảo trì

Chỉ thực hiện các quy trình bảo trì sau khi đảm bảo rằng quần thể 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 biểu quyết trong quá trình bảo trì để giữ lại số đại diện.

Khi các điều kiện này được đáp ứng, một tập hợp ZooKeeper có kích thước tuỳ ý có thể chấp nhận việc bị mất một nút duy nhất tại bất kỳ thời điểm nào mà không bị mất dữ liệu hoặc tác động có ý nghĩa đến hiệu suất. Điều này có nghĩa là bạn có thể bảo trì bất kỳ nút nào trong tập hợp, miễn là nút đó nằm 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 (người dẫn đầu, người bỏ phiếu hoặc người quan sát):

  1. Nếu nó chưa được 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ả trên biểu mẫu:

    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à người bỏ phiếu không phải là người dẫn đầu) 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 mỗi nút ZooKeeper.

Tóm tắt

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

  • Bạn phải duy trì số lượng nút cử tri trong thời gian bảo trì để đảm bảo nhóm ZooKeeper vẫn hoạt động.
  • Việc gỡ bỏ nút quan sát không ảnh hưởng đến số lượng đại diện hoặc khả năng bầu ra người lãnh đạo.
  • Nhóm đại diện đượ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.
  • Dùng lệnh nc để kiểm tra nút ZooKeeper.