Tác động của lỗi Cơ sở hạ tầng đối với phân đoạn trong Dịch vụ tìm kiếm mở của Amazon

Tác động của lỗi Cơ sở hạ tầng đối với phân đoạn trong Dịch vụ tìm kiếm mở của Amazon

Nút nguồn: 1783553

Dịch vụ Tìm kiếm Mở của Amazon là một dịch vụ được quản lý giúp dễ dàng bảo mật, triển khai và vận hành OpenSearch cũng như các cụm Elaticsearch kế thừa trên quy mô lớn trong Đám mây AWS. Amazon OpenSearch Service cung cấp tất cả các tài nguyên cho cụm của bạn, khởi chạy nó và tự động phát hiện cũng như thay thế các nút bị lỗi, giúp giảm chi phí hoạt động của cơ sở hạ tầng tự quản lý. Dịch vụ này giúp bạn dễ dàng thực hiện phân tích nhật ký tương tác, giám sát ứng dụng theo thời gian thực, tìm kiếm trang web và hơn thế nữa bằng cách cung cấp các phiên bản OpenSearch mới nhất, hỗ trợ 19 phiên bản Elaticsearch (phiên bản 1.5 đến 7.10) và khả năng trực quan hóa được cung cấp bởi OpenSearch Dashboards và Kibana (phiên bản 1.5 đến 7.10).

Trong bản phát hành phần mềm dịch vụ mới nhất, chúng tôi đã cập nhật logic phân bổ phân đoạn thành nhận biết tải để khi các phân đoạn được phân phối lại trong trường hợp có bất kỳ nút nào bị lỗi, dịch vụ sẽ không cho phép các nút còn sống bị quá tải bởi các phân đoạn được lưu trữ trước đó trên nút bị lỗi. Điều này đặc biệt quan trọng đối với các miền Multi-AZ để cung cấp hiệu suất cụm nhất quán và có thể dự đoán được.

Nếu bạn muốn biết thêm thông tin cơ bản về logic phân bổ phân đoạn nói chung, vui lòng xem Làm sáng tỏ phân bổ phân đoạn Elaticsearch.

Các thách thức

Miền Amazon OpenSearch Service được cho là “cân bằng” khi số lượng nút được phân bổ đồng đều trên các Vùng sẵn sàng được định cấu hình và tổng số phân đoạn được phân bổ đồng đều trên tất cả các nút khả dụng mà không tập trung phân đoạn của bất kỳ chỉ mục nào vào bất kỳ chỉ mục nào. nút. Ngoài ra, OpenSearch có một thuộc tính gọi là “Nhận thức vùng”, khi được bật, đảm bảo rằng phân đoạn chính và bản sao tương ứng của nó được phân bổ trong các Vùng sẵn sàng khác nhau. Nếu bạn có nhiều bản sao dữ liệu, thì việc có nhiều Vùng sẵn sàng sẽ cung cấp khả năng sẵn sàng và khả năng chịu lỗi tốt hơn. Trong trường hợp, miền được thu nhỏ hoặc thu nhỏ trong hoặc trong khi (các) nút bị lỗi, OpenSearch sẽ tự động phân phối lại các phân đoạn giữa các nút có sẵn trong khi tuân thủ các quy tắc phân bổ dựa trên nhận thức về vùng.

Mặc dù quy trình cân bằng phân đoạn đảm bảo rằng các phân đoạn được phân bổ đồng đều trên các Vùng sẵn sàng, nhưng trong một số trường hợp, nếu xảy ra lỗi không mong muốn trong một vùng duy nhất, các phân đoạn sẽ được phân bổ lại cho các nút còn tồn tại. Điều này có thể dẫn đến việc các nút còn sống sót bị quá tải, ảnh hưởng đến sự ổn định của cụm.

Chẳng hạn, nếu một nút trong cụm ba nút bị hỏng, OpenSearch sẽ phân phối lại các phân đoạn chưa được chỉ định, như thể hiện trong sơ đồ sau. Ở đây “P” đại diện cho một bản sao phân đoạn chính, trong khi “R” đại diện cho một bản sao phân đoạn bản sao.

Hành vi này của miền có thể được giải thích thành hai phần – trong quá trình lỗi và trong quá trình khôi phục.

Trong thời gian thất bại

Một miền được triển khai trên nhiều Vùng sẵn sàng có thể gặp phải nhiều loại lỗi trong vòng đời của nó.

Hoàn thành khu vực thất bại

Một cụm có thể mất một Vùng sẵn sàng duy nhất vì nhiều lý do và tất cả các nút trong vùng đó. Hôm nay, dịch vụ cố gắng đặt các nút bị mất trong Vùng sẵn sàng hoạt động tốt còn lại. Dịch vụ cũng cố gắng tạo lại các phân đoạn bị mất trong các nút còn lại trong khi vẫn tuân theo các quy tắc phân bổ. Điều này có thể dẫn đến một số hậu quả ngoài ý muốn.

  • Khi các phân đoạn của vùng bị ảnh hưởng đang được phân bổ lại cho các vùng khỏe mạnh, chúng sẽ kích hoạt quá trình khôi phục phân đoạn có thể làm tăng độ trễ vì nó tiêu tốn thêm chu kỳ CPU và băng thông mạng.
  • Đối với thiết lập n-AZ, n-bản sao, (n>1), n-1 Vùng sẵn sàng còn tồn tại được phân bổ bằng bản sao phân đoạn thứ n, điều này có thể không mong muốn vì nó có thể gây ra sự sai lệch trong phân phối phân đoạn, điều này cũng có thể dẫn đến lưu lượng không cân bằng giữa các nút. Các nút này có thể bị quá tải, dẫn đến các lỗi khác.

Thất bại một phần khu vực

Trong trường hợp xảy ra lỗi một phần vùng hoặc khi miền chỉ mất một số nút trong Vùng sẵn sàng, Amazon OpenSearch Service sẽ cố gắng thay thế các nút bị lỗi nhanh nhất có thể. Tuy nhiên, trong trường hợp mất quá nhiều thời gian để thay thế các nút, OpenSearch sẽ cố gắng phân bổ các phân đoạn chưa được chỉ định của vùng đó vào các nút còn tồn tại trong Vùng sẵn sàng. Nếu dịch vụ không thể thay thế các nút trong Vùng sẵn sàng bị ảnh hưởng, dịch vụ có thể phân bổ chúng trong Vùng sẵn sàng được định cấu hình khác, điều này có thể làm sai lệch hơn nữa việc phân phối các phân đoạn cả trên và trong vùng. Điều này một lần nữa có những hậu quả không lường trước được.

  • Nếu các nút trên miền không có đủ dung lượng lưu trữ để chứa các phân đoạn bổ sung, thì miền có thể bị chặn ghi, ảnh hưởng đến hoạt động lập chỉ mục.
  • Do sự phân bổ sai lệch của các phân đoạn, miền cũng có thể gặp phải tình trạng lưu lượng truy cập sai lệch trên các nút, điều này có thể làm tăng thêm độ trễ hoặc thời gian chờ cho các thao tác đọc và ghi.

Phục hồi

Hôm nay, để duy trì số lượng nút mong muốn của miền, Amazon OpenSearch Service khởi chạy các nút dữ liệu trong các Vùng sẵn sàng hoạt động bình thường còn lại, tương tự như các tình huống được mô tả trong phần lỗi ở trên. Để đảm bảo phân phối nút phù hợp trên tất cả các Vùng sẵn sàng sau sự cố như vậy, AWS cần có sự can thiệp thủ công.

Có gì thay đổi

Để cải thiện khả năng xử lý lỗi tổng thể và giảm thiểu tác động của lỗi đối với tình trạng và hiệu suất của miền, Amazon OpenSearch Service đang thực hiện các thay đổi sau:

  • Nhận thức vùng cưỡng bức: OpenSearch có cấu hình cân bằng phân đoạn có sẵn được gọi là nhận thức bắt buộc được sử dụng để đặt Vùng sẵn sàng mà phân đoạn cần được phân bổ. Ví dụ: nếu bạn có một thuộc tính nhận thức được gọi là vùng và định cấu hình các nút trong zone1zone2, bạn có thể sử dụng nhận thức bắt buộc để ngăn OpenSearch phân bổ bản sao nếu chỉ có sẵn một vùng:
cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

Với cấu hình ví dụ này, nếu bạn bắt đầu hai nút với node.attr.zone đặt thành zone1 và tạo chỉ mục có năm phân đoạn và một bản sao, OpenSearch tạo chỉ mục và phân bổ năm phân đoạn chính nhưng không có bản sao. Bản sao chỉ được phân bổ một lần các nút có node.attr.zone đặt thành zone2 có sẵn.

Amazon OpenSearch Service sẽ sử dụng cấu hình nhận biết bắt buộc trên các miền Multi-AZ để đảm bảo rằng các phân đoạn chỉ được phân bổ theo quy tắc nhận biết vùng. Điều này sẽ ngăn chặn sự gia tăng tải đột ngột trên các nút của Vùng sẵn sàng lành mạnh.

  • Phân bổ phân đoạn nhận biết tải: Amazon OpenSearch Service sẽ xem xét các yếu tố như dung lượng được cung cấp, dung lượng thực tế và tổng số bản sao phân đoạn để tính xem có nút nào bị quá tải với nhiều phân đoạn hơn hay không dựa trên số phân đoạn trung bình dự kiến ​​trên mỗi nút. Nó sẽ ngăn việc gán phân đoạn khi bất kỳ nút nào đã phân bổ số lượng phân đoạn vượt quá giới hạn này.

Chú thích rằng bất kỳ chưa được chỉ định chính bản sao vẫn sẽ được cho phép trên nút bị quá tải để ngăn cụm khỏi bất kỳ mất dữ liệu nào sắp xảy ra.

Tương tự, để giải quyết vấn đề khôi phục thủ công (như được mô tả trong phần Khôi phục ở trên), Amazon OpenSearch Service cũng đang thực hiện các thay đổi đối với thành phần mở rộng nội bộ của mình. Với những thay đổi mới hơn, Amazon OpenSearch Service sẽ không khởi chạy các nút trong Vùng sẵn sàng còn lại ngay cả khi nó trải qua tình huống lỗi được mô tả trước đó.

Trực quan hóa hành vi hiện tại và hành vi mới

Ví dụ: miền Amazon OpenSearch Service được định cấu hình với 3-AZ, 6 nút dữ liệu, 12 phân đoạn chính và 24 phân đoạn sao chép. Miền được cung cấp trên AZ-1, AZ-2 và AZ-3, với hai nút trong mỗi vùng.

Phân bổ phân đoạn hiện tại:
Tổng số phân đoạn: 12 Chính + 24 Bản sao = 36 phân đoạn
Số vùng khả dụng: 3
Số lượng mảnh trên mỗi vùng (nhận thức vùng là đúng): 36/3 = 12
Số nút trên mỗi Vùng sẵn sàng: 2
Số lượng phân đoạn trên mỗi nút: 12/2 = 6

Sơ đồ sau đây cung cấp một biểu diễn trực quan về thiết lập miền. Các vòng tròn biểu thị số lượng phân đoạn được phân bổ cho nút. Amazon OpenSearch Service sẽ phân bổ sáu phân đoạn cho mỗi nút.

Trong trường hợp xảy ra lỗi một phần vùng, trong đó một nút trong AZ-3 bị lỗi, nút bị lỗi sẽ được gán cho vùng còn lại và các phân đoạn trong vùng được phân phối lại dựa trên các nút có sẵn. Sau những thay đổi được mô tả ở trên, cụm sẽ không tạo nút mới hoặc phân phối lại các phân đoạn sau khi nút bị lỗi.


Trong sơ đồ trên, với việc mất một nút trong AZ-3, Amazon OpenSearch Service sẽ cố gắng khởi chạy dung lượng thay thế trong cùng một vùng. Tuy nhiên, do một số sự cố ngừng hoạt động, khu vực này có thể bị suy yếu và sẽ không khởi động được thiết bị thay thế. Trong trường hợp như vậy, dịch vụ sẽ cố gắng khởi động công suất thiếu hụt ở một vùng lành mạnh khác, điều này có thể dẫn đến mất cân bằng vùng giữa các Vùng sẵn sàng. Các mảnh trên khu vực bị ảnh hưởng sẽ được nhồi vào nút còn sống sót trong cùng khu vực. Tuy nhiên, với hành vi mới, dịch vụ sẽ cố gắng tung ra công suất trong cùng một khu vực nhưng sẽ tránh tung ra công suất thiếu hụt ở các khu vực khác để tránh mất cân bằng. Bộ cấp phát phân đoạn cũng sẽ đảm bảo rằng các nút còn lại không bị quá tải.


Tương tự, trong trường hợp tất cả các nút trong AZ-3 bị mất hoặc AZ-3 bị suy yếu, Amazon OpenSearch Service sẽ hiển thị các nút bị mất trong Vùng sẵn sàng còn lại và cũng phân phối lại các phân đoạn trên các nút. Tuy nhiên, sau những thay đổi mới, Amazon OpenSearch Service sẽ không phân bổ các nút cho vùng còn lại hoặc sẽ cố gắng phân bổ lại các phân đoạn bị mất cho vùng còn lại. Amazon OpenSearch Service sẽ đợi Quá trình khôi phục diễn ra và để miền trở về cấu hình ban đầu sau khi khôi phục.

Nếu miền của bạn không được cung cấp đủ dung lượng để chịu được việc mất Vùng sẵn sàng, bạn có thể gặp phải tình trạng giảm thông lượng cho miền của mình. Do đó, bạn nên thực hiện theo các phương pháp hay nhất trong khi xác định kích thước miền của mình, điều đó có nghĩa là bạn phải cung cấp đủ tài nguyên để chống lại sự mất mát do một lỗi Vùng sẵn sàng duy nhất.


Hiện tại, sau khi miền phục hồi, dịch vụ yêu cầu can thiệp thủ công để cân bằng dung lượng trên các Vùng sẵn sàng, điều này cũng liên quan đến việc di chuyển phân đoạn. Tuy nhiên, với hành vi mới, không cần can thiệp trong quá trình khôi phục vì dung lượng trở lại trong vùng bị ảnh hưởng và các phân đoạn cũng được tự động phân bổ cho các nút đã khôi phục. Điều này đảm bảo rằng không có ưu tiên cạnh tranh trên các tài nguyên còn lại.

Những gì bạn có thể mong đợi

Sau khi bạn cập nhật miền Dịch vụ Amazon OpenSearch của mình lên bản phát hành phần mềm dịch vụ mới nhất, các miền đã được được định cấu hình với các phương pháp hay nhất sẽ có hiệu suất dễ dự đoán hơn ngay cả sau khi mất một hoặc nhiều nút dữ liệu trong Vùng sẵn sàng. Sẽ giảm bớt các trường hợp phân bổ quá mức phân đoạn trong một nút. Đó là một thực hành tốt để cung cấp đủ năng lực để có thể chịu được sự cố một vùng

Đôi khi, bạn có thể thấy một miền chuyển sang màu vàng trong các lỗi không mong muốn như vậy vì chúng tôi sẽ không chỉ định các phân đoạn bản sao cho các nút bị quá tải. Tuy nhiên, điều này không có nghĩa là sẽ mất dữ liệu trong miền được cấu hình tốt. Chúng tôi vẫn sẽ đảm bảo rằng tất cả các bầu cử sơ bộ được chỉ định trong thời gian cúp điện. Có sẵn một quá trình khôi phục tự động, sẽ đảm nhiệm việc cân bằng các nút trong miền và đảm bảo rằng các bản sao được chỉ định sau khi khôi phục lỗi.

Cập nhật phần mềm dịch vụ của miền Dịch vụ Amazon OpenSearch của bạn để áp dụng những thay đổi mới này cho miền của bạn. Thông tin chi tiết về quy trình cập nhật phần mềm dịch vụ có trong Tài liệu về dịch vụ tìm kiếm mở của Amazon.

Kết luận

Trong bài đăng này, chúng ta đã thấy cách Amazon OpenSearch Service gần đây đã cải thiện logic để phân phối các nút và phân đoạn trên các Vùng sẵn sàng trong thời gian ngừng hoạt động theo khu vực.

Thay đổi này sẽ giúp dịch vụ đảm bảo hiệu suất nhất quán và có thể dự đoán được trong các lỗi nút hoặc vùng. Các miền sẽ không thấy bất kỳ độ trễ tăng lên hoặc khối ghi nào trong quá trình xử lý ghi và đọc, đôi khi thường xuất hiện sớm hơn do phân bổ quá mức các phân đoạn trên các nút.


Giới thiệu về tác giả

Bukhtawar Khan là Kỹ sư phần mềm cao cấp làm việc trên Dịch vụ tìm kiếm mở của Amazon. Anh ấy quan tâm đến các hệ thống phân tán và tự trị. Anh ấy là người đóng góp tích cực cho OpenSearch.

Anshu Agarwal là một Kỹ sư phần mềm cao cấp làm việc trên AWS OpenSearch tại Amazon Web Services. Cô đam mê giải quyết các vấn đề liên quan đến việc xây dựng các hệ thống có thể mở rộng và có độ tin cậy cao.

Shouya Dutta Biswas là một Kỹ sư phần mềm làm việc trên AWS OpenSearch tại Amazon Web Services. Anh ấy đam mê xây dựng các hệ thống phân tán có khả năng phục hồi cao.

Rishab Nahata là một Kỹ sư phần mềm làm việc trên OpenSearch tại Amazon Web Services. Anh ấy say mê giải quyết các vấn đề trong các hệ thống phân tán. Anh ấy là người đóng góp tích cực cho OpenSearch.

Ranjith Ramachandra là Giám đốc Kỹ thuật làm việc trên Dịch vụ Tìm kiếm Mở của Amazon tại Dịch vụ Web của Amazon.

Jon xử lý là Kiến trúc sư giải pháp chính cấp cao, chuyên về công nghệ tìm kiếm AWS – Amazon CloudSearch và Amazon OpenSearch Service. Có trụ sở tại Palo Alto, anh ấy giúp nhiều khách hàng triển khai khối lượng công việc phân tích nhật ký và tìm kiếm của họ đúng cách và hoạt động tốt.

Dấu thời gian:

Thêm từ Dữ liệu lớn AWS