Đạt hiệu suất cao trong Amazon OpenSearch Multi-AZ với các tên miền có tính năng Standby: Một sự đào sâu vào quá trình xử lý sự cố

Dịch vụ Amazon OpenSearch vừa giới thiệu gần đây tính năng Multi-AZ with Standby, một tùy chọn triển khai được thiết kế để cung cấp cho doanh nghiệp khả năng sẵn sàng và hiệu suất đồng nhất cho các công việc quan trọng. Với tính năng này, các cụm quản lý có thể đạt được khả năng sẵn có 99,99% trong khi vẫn đảm bảo tính chống chịu với sự cố về cơ sở hạ tầng theo khu vực.

Trong bài viết này, chúng tôi sẽ khám phá cách hoạt động của tìm kiếm và chỉ mục với Multi-AZ with Standby và đào sâu vào các cơ chế cơ bản đóng góp vào tính đáng tin cậy, tính đơn giản và tính chịu lỗi của nó.

Tiền đề

Multi-AZ with Standby triển khai các trường hợp của tên miền dịch vụ OpenSearch trên ba Khu vực Khả dụng, với hai khu vực được chỉ định là hoạt động và một khu vực là dự phòng. Cấu hình này đảm bảo hiệu suất đồng nhất, ngay cả trong trường hợp xảy ra sự cố ở các khu vực, bằng cách duy trì khả năng tương tự ở tất cả các khu vực. Quan trọng hơn, khu vực dự phòng này tuân thủ một thiết kế tĩnh ổn định, loại bỏ việc cung cấp khả năng hoặc di chuyển dữ liệu trong trường hợp sự cố.

Trong quá trình hoạt động thông thường, khu vực hoạt động xử lý lưu lượng của bộ điều phối cho cả các yêu cầu đọc và ghi, cũng như lưu lượng truy vấn shard. Khu vực dự phòng, ngược lại, chỉ nhận lưu lượng sao chép. Dịch vụ OpenSearch sử dụng một giao thức sao chép đồng bộ cho các yêu cầu ghi. Điều này cho phép dịch vụ thăng cấp một khu vực dự phòng thành trạng thái hoạt động ngay lập tức khi xảy ra sự cố (thời gian trung bình để thực hiện việc chuyển đổi <= 1 phút), được gọi là sự cố khu vực. Khu vực trước đây hoạt động sau đó sẽ bị hạ cấp thành chế độ dự phòng, và các hoạt động khôi phục sẽ được thực hiện để khôi phục trạng thái lành mạnh của nó.

Định tuyến lưu lượng tìm kiếm và sự cố đảm bảo sẵn sàng cao sử dụng dịch vụ OpenSearch của AWS:

Trong một miền dịch vụ OpenSearch, một thiết bị phối hợp là bất kỳ nút nào xử lý các yêu cầu HTTP(S), đặc biệt là yêu cầu chỉ mục hóa và tìm kiếm. Trong miền Multi-AZ với Standby, các nút dữ liệu trong khu vực hoạt động hoạt động như các thiết bị phối hợp cho các yêu cầu tìm kiếm.

Trong quá trình truy vấn của một yêu cầu tìm kiếm, thiết bị phối hợp xác định các shard cần được truy vấn và gửi yêu cầu đến nút dữ liệu chứa bản sao shard. Truy vấn được thực hiện cục bộ trên mỗi shard và tài liệu phù hợp được trả về nút phối hợp. Nút phối hợp, có trách nhiệm gửi yêu cầu đến các nút chứa bản sao shard, thực hiện quá trình trong hai bước. Trước hết, nó tạo một bộ lặp định nghĩa thứ tự mà các nút cần phải được truy vấn để có được một bản sao shard để phân phối đều lưu lượng trên các bản sao shard. Sau đó, yêu cầu được gửi đến các nút thích hợp.

Để tạo danh sách các nút cần được truy vấn cho một bản sao shard theo thứ tự, nút phối hợp sử dụng các thuật toán khác nhau. Các thuật toán này bao gồm lựa chọn round-robin, lựa chọn bản sao điều chỉnh, định tuyến shard dựa trên ưu tiên và round-robin có trọng số.

Đối với Multi-AZ với Standby, thuật toán round-robin có trọng số được sử dụng cho việc lựa chọn bản sao shard. Trong phương pháp này, các khu vực hoạt động được gán một trọng số là 1, và khu vực standby được gán một trọng số là 0. Điều này đảm bảo rằng không có lưu lượng đọc nào được gửi đến các nút dữ liệu trong Khu vực Khả dụng standby.

Các trọng số được lưu trữ trong siêu dữ liệu trạng thái cụm dưới dạng một đối tượng JSON:

"weighted_shard_routing": {

    "awareness": {

        "zone": {

            "us-east-1b": 0,

            "us-east-1d": 1,

            "us-east-1c": 1

         }

     },

     "_version": 3

}

Như hình ảnh minh họa dưới đây, Khu vực us-east-1b hiện có tình trạng Zone là StandBy, cho thấy rằng các nút dữ liệu trong Khu vực Khả dụng này đang ở trạng thái chờ đợi và không nhận các yêu cầu tìm kiếm hoặc lập chỉ mục từ máy cân bằng tải.

Để duy trì hoạt động ổn định, Khu vực Khả dụng dự phòng được thay đổi mỗi 30 phút, đảm bảo tất cả các Bộ phận mạng được bao phủ trên các Khu vực Khả dụng. Tiếp cận tích cực này xác minh tính khả dụng của các đường dẫn đọc, từ đó nâng cao khả năng chịu đựng của hệ thống trong trường hợp có sự cố tiềm năng. Biểu đồ sau minh họa kiến trúc này.

Trong sơ đồ trước, Zone-C có một tập trọng số weighted round-robin được thiết lập là không. Điều này đảm bảo rằng các nút dữ liệu trong khu vực dự phòng không nhận bất kỳ lưu lượng indexing hoặc search nào. Khi điều phối truy vấn các nút dữ liệu để truy vấn bản sao của shard, nó sử dụng trọng số weighted round-robin để quyết định thứ tự các nút sẽ được truy vấn. Vì trọng số là không đối với Khu vực Khả dụng dự phòng, các yêu cầu từ điều phối không được gửi đi.

Trong một cụm Dịch vụ OpenSearch, các khu vực hoạt động và dự phòng có thể được kiểm tra bất kỳ lúc nào bằng cách sử dụng các chỉ số xoay Khu vực Khả dụng Availability Zone rotation, như được thể hiện trong ảnh chụp màn hình sau đây.

Trong trường hợp sự cố xảy ra ở khu vực (zonal outages), Availability Zone dự phòng sẽ tự động chuyển sang chế độ fail-open cho các yêu cầu tìm kiếm (search requests). Điều này có nghĩa rằng lưu lượng truy vấn shard sẽ được định tuyến đến tất cả các Availability Zone, kể cả những khu vực đang ở chế độ chờ đợi (standby), khi bản sao shard khỏe mạnh không có sẵn trong Availability Zone hoạt động. Phương pháp fail-open này bảo vệ các yêu cầu tìm kiếm khỏi sự gián đoạn trong trường hợp sự cố, đảm bảo dịch vụ liên tục. Sơ đồ dưới đây minh họa kiến trúc này.

Trong sơ đồ trước, trong trạng thái ổn định, lưu lượng truy vấn shard được gửi đến nút dữ liệu trong các Khu vực Khả dụng hoạt động (Khu vực A và Khu vực B). Do sự cố nút ở Khu vực A, Khu vực Khả dụng dự phòng (Khu vực C) sẽ hoạt động mở để nhận lưu lượng truy vấn shard để không gây ảnh hưởng đến các yêu cầu tìm kiếm. Cuối cùng, Khu vực A được phát hiện là không ổn định và quá trình chuyển đổi đọc sẽ chuyển chế độ dự phòng sang Khu vực A.

Làm thế nào chuyển đổi đảm bảo tính sẵn sàng cao trong trường hợp xảy ra sự cố khi ghi

Mô hình sao chép dịch vụ OpenSearch tuân thủ mô hình sao chép chính phụ, được đặc trưng bởi tính đồng bộ, nơi cần có sự xác nhận từ tất cả bản sao shard trước khi yêu cầu ghi có thể được xác nhận cho người dùng. Một điểm yếu đáng chú ý của mô hình sao chép này là khả năng bị giảm tốc trong trường hợp có sự cố nào đó trong đường ghi. Những hệ thống này phụ thuộc vào một nút trưởng đang hoạt động để xác định sự cố hoặc trễ và sau đó phát sóng thông tin này đến tất cả các nút. Thời gian cần để phát hiện các vấn đề này (thời gian trung bình để phát hiện) và sau đó giải quyết chúng (thời gian trung bình để sửa chữa) chủ yếu xác định thời gian hệ thống sẽ hoạt động trong tình trạng bị giảm tốc. Ngoài ra, bất kỳ sự kiện mạng nào ảnh hưởng đến giao tiếp giữa các Khu vực có thể gây trở ngại đáng kể cho các yêu cầu ghi do tính đồng bộ của sao chép.

Dịch vụ OpenSearch sử dụng giao thức giao tiếp nút-nút nội bộ để sao chép lưu lượng ghi và đồng bộ hóa cập nhật siêu dữ liệu thông qua một nút trưởng được bầu cử. Do đó, việc đưa Khu vực đang gặp áp lực vào chế độ chờ không hiệu quả trong việc giải quyết vấn đề về khả năng ghi.

Chuyển đổi ghi giữa các Khu vực: Ngắt lưu lượng sao chép giữa các Khu vực

Đối với Multi-AZ với Chế độ dự phòng, để giảm thiểu các vấn đề về hiệu suất có thể xảy ra trong các sự kiện không mong muốn như sự cố trong các Khu vực và sự kiện mạng, chuyển đổi ghi giữa các Khu vực là một phương pháp hiệu quả. Phương pháp này bao gồm việc loại bỏ lịch sự của các nút trong Khu vực bị ảnh hưởng ra khỏi cụm, hiệu quả ngắt kết nối và lưu lượng ra vào giữa các Khu vực. Bằng cách cắt đứt lưu lượng sao chép giữa các Khu vực, tác động của các sự cố trong các Khu vực có thể được kiểm soát trong Khu vực bị ảnh hưởng. Điều này mang lại trải nghiệm dự đoán hơn cho khách hàng và đảm bảo rằng hệ thống tiếp tục hoạt động một cách đáng tin cậy.

Chuyển đổi ghi lịch sự

Quá trình chuyển đổi ghi trong Dịch vụ OpenSearch được thực hiện bởi nút trưởng được bầu cử thông qua một cơ chế đã được định nghĩa rõ ràng. Cơ chế này bao gồm một giao thức thống nhất để công bố trạng thái cụm, đảm bảo sự đồng thuận hoàn toàn giữa tất cả các nút để chỉ định một Khu vực duy nhất (luôn luôn) cho việc giải thể. Quan trọng hơn, các siêu dữ liệu liên quan đến Khu vực bị ảnh hưởng được sao chép trên tất cả các nút để đảm bảo tính bền vững của nó, ngay cả trong trường hợp khởi đầu lại hoàn toàn trong trường hợp có sự cố.

Hơn nữa, nút trưởng đảm bảo quá trình chuyển đổi được thực hiện một cách trơn tru và lịch sự bằng cách đặt các nút trong các Khu vực bị ảnh hưởng vào chế độ chờ trong khoảng thời gian 5 phút trước khi khởi đầu I/O fencing. Cách tiếp cận cẩn thận này ngăn chặn bất kỳ lưu lượng truy vấn từ các nguồn hoạt động mới hoặc lưu lượng truy vấn shard nào được định hướng đến các nút trong Khu vực bị ảnh hưởng. Điều này, từ đó, cho phép các nút này hoàn thành nhiệm vụ đang diễn ra một cách lịch sự và từ từ xử lý bất kỳ yêu cầu đang trong quá trình thực hiện trước khi được đưa ra khỏi dịch vụ. Sơ đồ dưới đây minh họa kiến ​​trúc này.

Trong quá trình triển khai tính năng chuyển đổi ghi dự phòng cho nút chủ, Dịch vụ OpenSearch thực hiện các bước quan trọng sau đây:

  • Từ bỏ vai trò chủ – Nếu nút chủ xảy ra trong một khu vực được lên lịch cho việc chuyển đổi ghi dự phòng, hệ thống đảm bảo rằng nút chủ sẽ tự nguyện từ bỏ vai trò lãnh đạo của nó. Việc từ bỏ này được thực hiện một cách kiểm soát, và toàn bộ quy trình được giao cho một nút khác đủ điều kiện, sau đó nút này sẽ đảm nhận các hoạt động cần thiết.
  • Ngăn việc tự bầu lại cho nút chủ sẽ bị chuyển đổi ghi dự phòng – Để ngăn việc tự bầu lại cho một nút chủ từ một khu vực được đánh dấu cho việc chuyển đổi ghi dự phòng, khi nút chủ đủ điều kiện khởi tạo hành động chuyển đổi ghi dự phòng, nó thực hiện các biện pháp để đảm bảo rằng bất kỳ nút chủ nào sẽ bị chuyển đổi dự phòng sẽ không tham gia vào bất kỳ cuộc bầu cử nào thêm. Điều này được thực hiện bằng cách loại trừ nút chủ sẽ bị chuyển đổi dự phòng khỏi cấu hình bầu cử, hiệu quả ngăn chặn nó không thể bỏ phiếu trong bất kỳ giai đoạn quan trọng nào của hoạt động của cụm.

Thông tin liên quan đến khu vực chuyển đổi ghi dự phòng được lưu trữ trong trạng thái cụm, và thông tin này được công bố đến tất cả các nút trong cụm Dịch vụ OpenSearch phân tán như sau:

"decommissionedAttribute": {

"awareness": {

"zone": "us-east-1c"

},

"status": "successful",

"requestID": "FLoyf5v9RVSsaAquRNKxIw"

}

Ảnh chụp màn hình dưới đây mô tả rằng trong quá trình có sự chậm trễ trong mạng ở một khu vực, chuyển đổi ghi dự phòng giúp khôi phục tính khả dụng.

Phục hồi theo vùng sau khi ghi chuyển vùng

Quá trình phục hồi theo vùng sau khi xảy ra sự cố ghi chuyển vùng đóng vai trò quan trọng trong giai đoạn phục hồi sau khi xảy ra sự cố ghi chuyển vùng. Sau khi vùng bị ảnh hưởng đã được khôi phục và được xem là ổn định, các nút trước đây đã bị loại bỏ sẽ tham gia lại cụm. Việc tái ký hiệu này thường diễn ra trong khoảng thời gian 2 phút sau khi vùng đã được khôi phục.

Điều này cho phép họ đồng bộ hóa với các nút đồng hệ và khởi đầu quá trình phục hồi cho các sao chép shard, từ đó khôi phục cụm về trạng thái mong muốn.

Kết luận

Sự giới thiệu của OpenSearch Service Multi-AZ with Standby cung cấp cho các doanh nghiệp một giải pháp mạnh mẽ để đạt được tính sẵn có cao và hiệu suất đồng đều cho các công việc quan trọng. Với tùy chọn triển khai này, các doanh nghiệp có thể tăng cường tính đàn hồi của hạ tầng của họ, đơn giản hóa cấu hình và quản lý cụm, và áp dụng các quy tắc tốt nhất. Với các tính năng như lựa chọn sao chép shard theo tròn trọng lượng, cơ chế chuyển giao tích cực tiến và các Khu vực Khả dụng dự phòng, OpenSearch Service Multi-AZ with Standby đảm bảo một trải nghiệm tìm kiếm đáng tin cậy và hiệu quả cho các môi trường doanh nghiệp đòi hỏi cao cấp.

Để biết thêm thông tin về Multi-AZ with Standby, vui lòng tham khảo Amazon OpenSearch Service Under the Hood: Multi-AZ with Standby.