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

Các trang phục trong ZooKeeper được thiết kế để duy trì chức năng mà không mất dữ liệu, mặc dù mất đi một hoặc nhiều nút ZooKeeper. Khả năng phục hồi này có thể được dùng một cách hiệu quả để thực hiện bảo trì Các nút ZooKeeper mà hệ thống không ngừng hoạt độ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 và thông báo cho các thành phần khác nhau về thay đổi cấu hình. Tất cả xin lỗi Edge được hỗ trợ đối với hệ thống sản xuất phải sử dụng ít nhất 3 ZooKeeper nút.

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. Địa chỉ IP phải được liệt kê theo cùng 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à hàm này sử dụng Chỉ dành cho Trung tâm dữ liệu. Địa chỉ IP phải được liệt kê theo cùng 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ột 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. Tức là các nút tất cả đều tham gia bầu chọn lãnh đạo của ZooKeeper. Bạn có thể đưa vào Đối tượng sửa đổi :observer bằng ZK_HOSTS để biểu thị rằng nút này là nút đối tượng tiếp nhận dữ liệu chứ không phải là cử tri. Một nút quan sát không tham gia vào cuộc bầu cử của người lãnh đạo.

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

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 cung cấp thêm thông tin chi tiết về người lãnh đạo, cử tri và nút quan sát và mô tả các đ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ề người lãnh đạo, người theo dõi, cử tri và quan sát viên

Trong quá trình cài đặt ZooKeeper nhiều nút, một trong các nút được chỉ định làm trưởng nhóm. Tất cả các nút ZooKeeper khác đều được chỉ định làm người theo dõi. Mặc dù lượt đọc có thể xảy ra từ bất kỳ Nút ZooKeeper, tất cả yêu cầu ghi đều được chuyển tiếp đến trưởng nhóm. Ví dụ: một Tin nhắn mới Bộ xử lý đã được thêm vào Edge. Thông tin đó được ghi cho người lãnh đạo ZooKeeper. Tất cả người theo dõi 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 người quan sát. Chiến lược phát hành đĩa đơn người lãnh đạo sau đó được tất cả các nút của cử tri ZooKeeper bầu chọn. Một yêu cầu đối với việc bầu cử người lãnh đạo là phải có nhóm đại biểu gồm các nút cử tri trong ZooKeeper đang hoạt động. Đáp đại biểu có nghĩa là hơn một nửa trong số tất cả các nút ZooKeeper bỏ phiếu, trên tất cả các Trung tâm dữ liệu, đang hoạt động tốt.

Nếu không có đủ nhóm cử tri, thì không thể bầu người lãnh đạo. Trong trường hợp này, Người quản lý không thể gửi yêu cầu. Điều đó có nghĩa là bạn không thể gửi yêu cầu đến Edge Management Máy chủ, 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 đại biểu đượ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 đều là cử tri
  • Đại số là 2 nút cử tri đang hoạt động
  • Nếu chỉ có một nút cử tri, thì tập hợp ZooKeeper không thể hoạt động

Trong một 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 6 nút
  • Trung tâm dữ liệu 1 có 3 nút cử tri
  • Trung tâm dữ liệu 2 có 2 nút cử tri và 1 nút quan sát
  • Đại biểu dựa trên 5 cử tri ở cả hai Trung tâm dữ liệu, do đó 3 nút cử tri đang hoạt động
  • Nếu chỉ có hai nút cử tri trở xuống thì nhóm ZooKeeper không thể hàm

Cân nhắc việc thêm các nút làm cử tri hoặc đối tượng tiếp nhận dữ liệu

Theo các yêu cầu về hệ thống, bạn có thể phải thêm các nút ZooKeeper bổ sung vào Edge cài đặt. Tài liệu về Cách thêm các 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 xem xét loại nút sẽ thêm: cử tri hoặc trình quan sát.

Bạn cần đảm bảo có đủ nút cử tri để nếu một hoặc nhiều nút cử tri bị hỏng nhóm ZooKeeper vẫn có thể hoạt động, tức là vẫn còn một số nút cử tri sẵn có. Bằng cách thêm các nút cử tri, bạn tăng quy mô của đại biểu và do đó bạn có thể chấp nhận việc có nhiều nút cử tri ngừng hoạt động.

Tuy nhiên, việc thêm các nút cử tri khác có thể ảnh hưởng tiêu cực đến hiệu suất ghi do hoạt động ghi các hoạt động đòi hỏi đại biểu phải thống nhất về người lãnh đạo. Thời gian cần thiết để xác định người dẫn đầu dựa trên số lượng nút cử tri. Số lượng nút này sẽ tăng khi bạn thêm nhiều nút cử tri. Do đó, bạn không muốn thực hiện tất cả các nút cử tri.

Thay vì thêm nút cử tri, bạn có thể thêm nút quan sát. Việc thêm các nút quan sát sẽ tăng hiệu suất tổng thể của hệ thống mà không làm tăng chi phí bầu chọn người lãnh đạo vì nút quan sát không bỏ phiếu và không ảnh hưởng đến kích thước đại biểu. Do đó, nếu một nút quan sát chuyển sang thì điều đó không ảnh hưởng đến khả năng bầu ra người lãnh đạo của tập thể. Tuy nhiên, việc mất trình quan sát các nút có thể làm giảm hiệu suất đọc của tập hợp ZooKeeper vì có có ít 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 nghị bạn không nên có quá 5 cử tri, bất kể về số lượng nút quan sát. Trong hai trung tâm dữ liệu, Apigee khuyên bạn không cần hơn 9 cử tri (5 cử tri ở một Trung tâm dữ liệu và 4 cử tri ở khu vực còn lại). Sau đó, bạn có thể thêm bao nhiêu nút quan sát nếu cần cho yêu cầu về hệ thống của bạn.

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 nhận được bị hỏng hoặc đượ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 bị hoạt động và có 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 xoá.
  2. Chạy lại lệnh setup cho Zookeeper để định cấu hình lại ZooKeeper còn lại nút:
    /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ả 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ả Trình xử lý thư:
    /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

Lưu ý khi bảo trì

Bạn có thể thực hiện việc bảo trì ZooKeeper trên một tổ hợp hoạt động hoàn chỉnh mà không phải ngừng hoạt động nếu bạn thực hiện thao tác đó trên một nút tại một thời điểm. Bằng cách đảm bảo chỉ một nút ZooKeeper bị hỏng tại bất kỳ lúc nào, bạn cũng có thể đảm bảo rằng luôn có sẵn số nút cử tri để bầu đầu tiên.

Bảo trì trong 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 trong ZooKeeper xem tất cả các nút ZooKeeper trên tất cả Trung tâm dữ liệu như một tập thể.

Vị trí của các nút cử tri 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 phép tính đại số. Các nút riêng lẻ có thể ngừng hoạt động trong các Trung tâm dữ liệu, nhưng miễn là có một đại số được bảo tồn trên toàn bộ quần thể, nhưng ZooKeeper vẫn hoạt động.

Tác động của 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ì, đồng thời bạn cũng phải bỏ phiếu nút 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ể bị lỗi hoặc nút có thể không hoạt động đối với một số chẳng hạn như lỗi mạng.

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

Quy trình bảo trì

Chỉ thực hiện quy trình bảo trì sau khi đảm bảo rằng ZooKeeper quần áo vẫn hoạt động bình thường. Điều này giả định rằng các nút quan sát đang hoạt động và có đủ số lượng nút các nút cử tri có sẵn trong thời gian bảo trì để giữ lại đại biểu.

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

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

  1. Nếu bạn chưa cài đặt ứng dụng này trên nút ZooKeeper, hãy cài đặt nc:
    sudo yum install nc
  2. Chạy lệnh nc sau đây 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ả đầu ra 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 bước 1 và 2 trên mỗi nút ZooKeeper.

Tóm tắt

Cách tốt nhất để thực hiện bảo trì đối với quần thể ZooKeeper là thực hiện bảo trì một nút tại một nút bất cứ lúc nào. 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 ZooKeeper bộ quần áo vẫn hoạt động.
  • Việc gỡ bỏ một nút đối tượng tiếp nhận dữ liệu không ảnh hưởng đến đại biểu hoặc khả năng bầu người lãnh đạo.
  • Tổng số được tính trên tất cả các nút ZooKeeper trong tất cả Trung tâm dữ liệu.
  • Tiếp tục bảo trì cho 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.