Bảo trì vườn thú

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

Các nhóm ZooKeeper được thiết kế để duy trì hoạt động mà không bị mất dữ liệu, bất chấp việc 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ả để thực hiện việc bảo trì trên các nút ZooKeeper mà không cần 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 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ác cấu trúc liên kết 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_HOSTS và ZK_CLIENT_HOSTS trong tệp cấu hình Edge để chỉ định các nút ZooKeeper. Kỳ thi

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

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 có số lượng lớn nút ZooKeeper. Ví dụ: trong một Cài đặt Edge 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à người 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àm nút dẫn đầu. Tất cả các nút ZooKeeper khác được chỉ định là người theo dõi. Mặc dù thao tác đọc có thể diễn ra từ bất kỳ nút ZooKeeper nào, nhưng tất cả yêu cầu ghi đều được chuyển tiếp đến nút chính. 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 ZooKeeper leader. Tất cả người theo dõi sau đó 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ột cử tri hoặc một người quan sát. Sau đó, nút dẫn đầu sẽ được tất cả các nút ZooKeeper cử tri bầu chọn. Yêu cầu duy nhất để bầu chọn một thủ lĩnh là phải có một túc số nút cử tri ZooKeeper đang hoạt động. Túc số có nghĩa là hơn một nửa số nút ZooKeeper của cử tri, trên tất 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 nút lãnh đạ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 đế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 được số đại biểu.

Ví dụ: trong một bả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à nút bỏ phiếu
  • Số đại biểu là hai 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 hệ thống 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ỏ phiếu
  • Trung tâm dữ liệu 2 có hai nút cử tri và một nút quan sát viên
  • Túc số dựa trên 5 cử tri trên cả hai Trung tâm dữ liệu, do đó, có 3 nút cử tri đang hoạt động
  • Nếu chỉ có hai nút cử tri trở xuống, thì tập hợp ZooKeeper không thể hoạt động

Thêm nút làm người bỏ phiếu hoặc người quan sát

Yêu cầu về hệ thống có thể yêu cầu bạn thêm các nút ZooKeeper bổ sung vào bản 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: nút bỏ phiếu hoặc nút 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 ngừng hoạt động, thì nhóm ZooKeeper vẫn có thể hoạt động, tức là vẫn có đủ số nút cử tri. Bằng cách thêm nút cử tri, bạn sẽ tăng quy mô của túc số và do đó, bạn có thể chấp nhận nhiều nút cử tri bị hỏng hơn.

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

Thay vì thêm nút bỏ phiế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 chọn nút 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ô của số đại biểu. Do đó, nếu một nút quan sát ngừng hoạt động, thì điều này sẽ không ảnh hưởng đến khả năng bầu chọn nút dẫn đầu của nhóm. Tuy nhiên, việc mất các nút 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 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 hai Trung tâm dữ liệu, Apigee khuyên bạn không nên có nhiều hơn hơn chín cử tri (năm cử tri ở một Trung tâm dữ liệu và bốn cử tri ở Trung tâm dữ liệu còn lại). Sau đó, bạn có thể thêm số lượng nút quan sát cần thiết cho các yêu cầu về hệ thống của mình.

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

Bạn có thể thực hiện việc bảo trì ZooKeeper trên một tập hợp đang hoạt động đầy đủ mà không cần thời gian ngừng hoạt động 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 chỉ có một nút ZooKeeper ngừng hoạt động tại bất kỳ thời điểm nào, bạn có thể đảm bảo rằng luôn có đủ số nút cử tri để bầu ra một thủ lĩnh.

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ả 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à một yếu tố khi ZooKeeper thực hiện tính toán số đại biể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ố đại biểu được duy trì trên toàn bộ tập hợp thì ZooKeeper vẫn hoạt động.

Ảnh hưởng đến việc bảo trì

Trong nhiều trường hợp, bạn sẽ phải gỡ một nút ZooKeeper xuống để bảo trì, có thể là nút cử tri 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 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 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 này là nút bỏ phiếu, thì nút 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 quy trình bầu chọn nút dẫn đầu. Bất kể lý do khiến nút cử tri ngừng hoạt động là gì, bạn cần duy trì một số đại biểu gồm các nút cử tri 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 cử tri trong quá trình bảo trì để duy trì số đại biểu.

Khi đáp ứng các điều kiện này, thì một tập hợp 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 thực hiện việc bảo trì trên bất kỳ nút nào trong nhóm, miễn là bạn chỉ 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 làm theo quy trình sau để xác định loại nút ZooKeeper (nút dẫn đầu, nút bỏ phiếu hoặc nút quan sát):

  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ả ở 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 (tức là một cử tri 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, Chế độ được đặt thành độc lập.
  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ì trên một nhóm ZooKeeper là thực hiện từng nút một. Lưu ý:

  • Bạn phải duy trì một số lượng 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ố đại biểu hoặc khả năng bầu chọn người lãnh đạo
  • Túc 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ế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