Zephyrnet Logosu

Başlık Altında Amazon OpenSearch Hizmeti: Bekleme Özellikli Multi-AZ

Tarih:

Amazon Açık Arama Hizmeti geçenlerde açıkladı Beklemede Multi-AZ, iş açısından kritik iş yükleri için %99.99 kullanılabilirlik ve tutarlı performans sağlayan, yönetilen kümeler için yeni bir dağıtım seçeneği. Bekleme özellikli Multi-AZ ile kümeler, donanım veya ağ arızası gibi altyapı arızalarına karşı dirençlidir. Bu seçenek, gelişmiş güvenilirlik ve en iyi uygulamaları zorunlu kılarak ve karmaşıklığı azaltarak küme yapılandırmasını ve yönetimini basitleştirmenin ek faydasını sağlar.

Bu gönderide, dört 9'u karşılamak için yüksek esneklik ve tutarlı performans elde etmek için Beklemede olan Multi-AZ'nin arka planda nasıl çalıştığını paylaşıyoruz.

Olayın Arka Planı

Yüksek düzeyde kullanılabilir sistemleri tasarlamanın ilkelerinden biri, bozulmalar meydana gelmeden önce bu sistemlerin hazır olmaları gerektiğidir. OpenSearch, farklı rollere sahip bir örnekler kümesi üzerinde çalışan dağıtılmış bir sistemdir. OpenSearch Hizmetinde, verilerinizi depolamak ve indeksleme ve arama isteklerine yanıt vermek için veri düğümlerini dağıtabilirsiniz, ayrıca kümeyi yönetmek ve düzenlemek için özel küme yöneticisi düğümlerini dağıtabilirsiniz. Yüksek kullanılabilirlik sağlamak için buluta yönelik yaygın yaklaşımlardan biri, altyapıyı birden çok AWS Erişilebilirlik Alanına dağıtmaktır. Tam bir bölgenin kullanılamaz hale geldiği nadir durumlarda bile, mevcut bölgeler kopyalarla trafiğe hizmet vermeye devam eder.

OpenSearch Hizmetini kullandığınızda, verilerinizi tutmak için dizinler yaratır ve bu dizinler için bölümleme ve çoğaltmayı belirtirsiniz. Her dizin, bir dizi birincil parçadan ve bu parçaların sıfır ila birçok kopyasından oluşur. Ek olarak Multi-AZ özelliğini kullandığınızda OpenSearch Hizmeti, birincil parçaların ve çoğaltma parçalarının farklı Erişilebilirlik Alanlarında olacak şekilde dağıtılmasını sağlar.

Bir Erişilebilirlik Alanında bir bozulma olduğunda, hizmet diğer Erişilebilirlik Alanlarında ölçeklenir ve yükü eşit şekilde dağıtmak için parçaları yeniden dağıtır. Bu yaklaşım en iyi ihtimalle tepkiseldi. Ek olarak, hata olayları sırasında parçanın yeniden dağıtılması kaynak kullanımının artmasına neden olarak gecikmelerin artmasına ve düğümlerin aşırı yüklenmesine neden olarak kullanılabilirliği daha fazla etkiler ve hataya dayanıklı çoklu AZ kümelerinin amacını etkili bir şekilde geçersiz kılar. Daha etkili, statik olarak kararlı bir küme yapılandırması, altyapının, gerek kalmadan doğru şekilde çalışmaya devam edebileceği noktaya kadar sağlanmasını gerektirir. herhangi bir yeni kapasiteyi başlatın veya herhangi bir parçayı yeniden dağıtın Erişilebilirlik Alanı bozulsa bile.

Yüksek kullanılabilirlik için tasarlama

OpenSearch Service, on binlerce OpenSearch kümesini yönetir. Donanım (veri veya küme yöneticisi örnek türleri) veya depolama (EBS birim türleri), parça boyutları vb. gibi hangi küme yapılandırmalarının hatalara karşı daha dirençli olduğu ve ortak müşteri iş yüklerinin talepleri. Bu yapılandırmalardan bazıları, kümelerin yapılandırılmasını basitleştirmek için Multi-AZ with Standby'ye dahil edilmiştir. Ancak bu tek başına yeterli değildir. Yüksek kullanılabilirliğe ulaşmanın temel bileşenlerinden biri, veri yedekliliğini sürdürmektir.

Dizinleriniz için tek bir eşleme (iki kopya) yapılandırdığınızda, küme bir parçanın (birincil veya eşleme) kaybını tolere edebilir ve kalan parçayı kopyalayarak yine de kurtarabilir. İki kopya (üç kopya) yapılandırması, iki kopyanın başarısız olmasına izin verebilir. İki kopyalı tek bir eşleme durumunda, yine de veri kaybı yaşayabilirsiniz. Örneğin, bir Erişilebilirlik Alanında uzun süre yıkıcı bir arıza olursa ve aynı zamanda ikinci bir bölgedeki bir düğüm arızalanırsa veri kaybedebilirsiniz. Küme, her zaman veri fazlalığını sağlamak için tüm dizinlerinde en az iki eşleme (üç kopya) uygular. Aşağıdaki diyagram bu mimariyi göstermektedir.

Multi-AZ with Standby özelliği, altyapıyı üç Erişilebilirlik Alanında dağıtırken, iki bölgeyi aktif ve bir bölgeyi bekleme konumunda tutar. Bekleme bölgesi, her zaman aynı kapasiteyi sağlayarak ve arıza sırasında herhangi bir kapasite provizyonu veya veri hareketi olmaksızın statik olarak kararlı bir tasarım kullanarak bölgesel arızalar sırasında bile tutarlı performans sunar. Normal işlemler sırasında, aktif bölge, okuma ve yazma istekleri ve parça sorgulama trafiği için koordinatör trafiğine hizmet eder ve bekleme bölgesine yalnızca replikasyon trafiği gider. OpenSearch, tasarım gereği sıfır çoğaltma gecikmesine sahip olan yazma istekleri için eşzamanlı çoğaltma protokolünü kullanır ve hizmetin, aktif bir bölgede herhangi bir arıza olması durumunda bir bekleme bölgesini anında aktif hale getirmesini sağlar. Bu olay bir olarak adlandırılır bölgesel yük devretme. Daha önce etkin olan bölge, bekleme moduna indirilir ve durumu tekrar sağlıklı hale getirmek için kurtarma işlemleri başlar.

Bölgesel yük devretme neden önemlidir, ancak doğru yapılması zordur

Bir Erişilebilirlik Alanındaki bir veya daha fazla düğüm, donanım arızaları, fiber kesintileri gibi altyapı arızaları, güç veya termal sorunlar veya bölgeler arası veya bölge içi ağ sorunları gibi çok çeşitli nedenlerle başarısız olabilir. Okuma istekleri herhangi bir etkin alan tarafından sunulabilirken, yazma isteklerinin birden çok Erişilebilirlik Alanındaki tüm kopyalara eşzamanlı olarak çoğaltılması gerekir. OpenSearch Service, iki yük devretme modu düzenler: yük devretmeleri oku ve yük devretmeleri yazın.

Okuma yük devretmelerinin birincil hedefleri, yüksek kullanılabilirlik ve tutarlı performanstır. Bu, sistemin arızaları sürekli olarak izlemesini ve trafiği etkilenen bölgedeki sağlıksız düğümlerden uzağa kaydırmasını gerektirir. Sistem, yük devretmeleri zarif bir şekilde ele alarak tüm hareket halindeki isteklerin bitmesine izin verirken, aynı anda yeni gelen trafiği sağlıklı bir bölgeye kaydırır. Ancak, iki düğüm hatası veya bir bölge artı bir düğüm hatası (genellikle çift ​​hata), bu da kullanılabilirlik için bir risk oluşturur. Bu sorunu çözmek için sistem bir arızalı açma Sistemin yüksek oranda kullanılabilir durumda kalmasını sağlamak için hala bekleme modundayken üçüncü bölge dışındaki trafiğe hizmet veren mekanizma. Aşağıdaki diyagram bu mimariyi göstermektedir.

Bölgeler arası iletişimi etkileyen bozulmuş bir ağ cihazı, kopyalamanın senkronize doğası nedeniyle yazma isteklerinin önemli ölçüde yavaşlamasına neden olabilir. Böyle bir durumda, sistem tüm giriş ve çıkış trafiğini keserek, etkilenen bölgeyi izole etmek için bir yazma yük devretme düzenler. Yazma yük devretmelerinde kurtarma hemen gerçekleşse de, tüm düğümlerin parçalarıyla birlikte çevrimdışına alınmasıyla sonuçlanır. Bununla birlikte, ağ kurtarma işleminden sonra etkilenen bölge geri getirildikten sonra parça kurtarma, tam segment kopyalamasını önleyerek yerel diskindeki değiştirilmemiş verileri kullanmaya devam etmelidir. Yazma yük devretme, parça kopyasının kullanılamamasına neden olduğundan, yazma yük devretmelerini ne çok sık ne de geçici hatalar sırasında çok dikkatli bir şekilde uygularız.

Aşağıdaki grafik, bölgesel bir arıza sırasında otomatik okuma yük devretme özelliğinin kullanılabilirlik üzerindeki herhangi bir etkiyi önlediğini göstermektedir.

Aşağıda, bir bölgedeki ağ yavaşlaması sırasında, yazma yük devretmesinin kullanılabilirliği kurtarmaya yardımcı olduğu gösterilmektedir.

Bölgesel yük devretme mekanizmasının öngörülebilir olmasını sağlamak için (gerçek bir arıza olayı sırasında trafiği sorunsuz bir şekilde kaydırabilir), yük devretmeleri düzenli olarak uygular ve sabit durumda bile etkin ve bekleme bölgelerini döndürmeye devam ederiz. Bu, yük devretme sırasında saat sapmaları, eski kimlik bilgileri veya ağ sorunları gibi sürprizlerle karşılaşmamamızı sağlayarak yalnızca tüm ağ yollarını doğrulamakla kalmaz, aynı zamanda yük devretmelerde soğuk başlatmaları önlemek için önbellekleri kademeli olarak değiştirmeye devam ederek her zaman tutarlı performans sunmamızı sağlar. .

Hizmetin dayanıklılığını artırma

OpenSearch Hizmeti, güvenilirliği artırmak için otomatik algılama ve arızadan daha hızlı kurtarma, fazla istekleri azaltma, başarısız hızlı stratejiler, kuyruk boyutlarını sınırlama, iş yükü taleplerini karşılamak için hızla uyum sağlama, gevşek bağlı bağımlılıkları uygulama, arızaları sürekli test etme gibi çeşitli ilkeleri ve en iyi uygulamaları kullanır. ve dahası. Bu bölümde bu yöntemlerden birkaçını ele alacağız.

Otomatik arıza tespiti ve kurtarma

Tüm hatalar, çok sayıda alt dakikalık metrik veri noktalarında en ince ayrıntısına kadar izlenir. Tespit edildikten sonra sistem, etkilenen düğümde otomatik olarak bir kurtarma eylemini tetikler. Bu gönderide şu ana kadar tartışılan başarısızlık sınıflarının çoğu, hatanın kesin olduğu ikili başarısızlıklara atıfta bulunsa da, başka bir tür başarısızlık daha vardır: ikili olmayan hatalar olarak adlandırılır. gri arızalar, tezahürleri ince ve genellikle hızlı tespite meydan okuyan. Yavaş disk G/Ç, performansın olumsuz etkilenmesine neden olan bir örnektir. İzleme sistemi, yavaş G/Ç'ye sahip bir düğümü tespit etmek ve değiştirmek için G/Ç bekleme süreleri, gecikmeler ve aktarım hızındaki anormallikleri algılar. Daha hızlı ve etkili algılama ve hızlı kurtarma, kontrolümüz dışındaki çok çeşitli altyapı arızaları için en iyi seçeneğimizdir.

Dinamik bir ortamda etkili iş yükü yönetimi

Sistemin çok fazla istekle aşırı yüklenmesine, CPU/belleğin maksimize edilmesine veya çok büyük bellek parçaları tahsis edebilen birkaç hileli sorguya veya birden çok çekirdeği tüketebilecek kontrolden çıkmış sorgulara neden olan iş yükü modellerini inceledik. diğer kritik isteklerin gecikme süreleri veya sistem kaynaklarının azalması nedeniyle birden çok düğümün başarısız olmasına neden olma. Bu yöndeki iyileştirmelerden bazıları, arama geri tepme girişimlerinin bir parçası olarak yapılıyor; çeşitli kontrol noktalarında istek ayak izinin izlenmesiyle başlayarak, daha fazla isteğin karşılanmasını önlüyor ve sürekli bir süre boyunca kaynak limitlerini ihlal etmeleri halinde halihazırda çalışmakta olan istekleri iptal ediyor. Trafik şekillendirmedeki karşı basıncı desteklemek için, sistem halihazırda yüksek CPU ve bellekle çalışırken üretken olmayan işler yapmaktan kaçınmak için (istekler zaman aşımına uğrar veya iptal edilir) giriş noktasında bir isteği reddetme yetenekleri sağlayan kabul kontrolünü kullanırız. . İş yükü yönetimi mekanizmalarının çoğunda yapılandırılabilir düğmeler bulunur. Tüm iş yüklerine uyan tek bir boyut yoktur, bu nedenle Auto-Tune onları daha ayrıntılı bir şekilde kontrol etmek için.

Küme yöneticisi, meta veri yönetimi ve küme oluşumu gibi kritik koordinasyon görevlerini yerine getirir ve anlık görüntü ve parça yerleştirme gibi birkaç arka plan işlemini düzenler. Dinamik eşleme güncellemelerinin, anlık görüntü görevlerinin vb. hızını kontrol etmek, aşırı yüklenmeyi önlemek ve kritik operasyonların her zaman kararlı bir şekilde çalışmasına izin vermek için bir görev kısıtlayıcı ekledik. Ancak kümede küme yöneticisi olmadığında ne olur? Bir sonraki bölüm bunu nasıl çözdüğümüzü anlatıyor.

Kritik bağımlılıkları ayırma

Küme yöneticisi hatası durumunda aramalar her zamanki gibi devam eder ancak tüm yazma istekleri başarısız olmaya başlar. Küme meta verilerini güncellemesi gerekmediği sürece bu durumda yazma işlemlerine izin vermenin yine de güvenli olması gerektiği sonucuna vardık. Bu değişiklik, veri tutarlılığından ödün vermeden yazma kullanılabilirliğini daha da geliştirir. Küme büyüdükçe aşağı akış bağımlılıklarının ölçeklenebilmesini sağlamak için diğer hizmet bağımlılıkları değerlendirildi.

Arıza modu testi

Her türlü başarısızlığı taklit etmek zor olsa da, AWS Hata Enjeksiyon Simülatörü (AWS FIS), sistemde düğüm arızaları, disk bozulması veya ağ bozulması gibi yaygın hataları enjekte etmek için. AWS FIS ile işlem hatlarımızda düzenli olarak test yapmak, algılama, izleme ve kurtarma sürelerimizi iyileştirmemize yardımcı olur.

Açık kaynağa katkıda bulunmak

Aramayı Aç açık kaynaklı, topluluk odaklı bir yazılımdır. Aktif ve bekleme bölgelerini desteklemek için yüksek kullanılabilirlik tasarımı dahil olmak üzere değişikliklerin çoğu açık kaynağa katkıda bulunmuştur; aslında, açık kaynaklı bir ilk geliştirme modelini izliyoruz. Bölgesel trafik kayması ve yerine çalışma sağlayan temel ilkel, ağırlıklı trafik yönlendirme politikası (aktif bölgelerin ağırlıkları 1 olarak atanır ve bekleme bölgelerinin ağırlıkları 0 olarak atanır). Yazma yük devretmeleri bölgesel hizmetten çıkarma eylemi, belirli bir bölgeden tüm trafiği tahliye eder. Esneklik geliştirmeleri arama geri tepmesi ve küme yöneticisi görev azaltma devam eden çabalardan bazılarıdır. OpenSearch'e katkıda bulunmaktan heyecan duyuyorsanız, bir GitHub sorunu ve düşüncelerinizi bize bildirin.

Özet

Öğrenmeye ve gelişmeye devam ederken, güvenilirliği artırma çabaları hiç bitmeyen bir döngüdür. OpenSearch Hizmeti, Bekleme özelliğine sahip Multi-AZ ile küme yapılandırması için en iyi uygulamaları entegre etti, iş yükü yönetimini geliştirdi ve dört 9 saniye kullanılabilirlik ve tutarlı performans elde etti. OpenSearch Service ayrıca AWS FIS aracılığıyla bölgesel trafik rotasyonları ve otomatik testlerle kullanılabilirliği sürekli olarak doğrulayarak çıtayı yükseltti.

Güvenilirliği ve hata toleransını daha da geliştirmeye yönelik çabalarımızı sürdürmekten ve OpenSearch Hizmetini kullanarak yeni ve mevcut çözüm oluşturucuların neler yaratabileceğini görmekten heyecan duyuyoruz. Bunun, işletmenizin ihtiyaçlarına göre doğru kullanılabilirlik düzeyi ve bu teklifin kullanılabilirlik SLA'sını nasıl başardığına dair daha derin bir anlayışa yol açacağını umuyoruz. Özellikle AWS'de yüksek kullanılabilirlik düzeylerine ulaşan başarı öykülerinizle ilgili olarak sizden haber almak isteriz. Başka sorularınız varsa, lütfen yorum bırakın.


yazarlar hakkında

Buktaver Han Amazon OpenSearch Hizmeti üzerinde çalışan bir Baş Mühendistir. Dağıtılmış ve otonom sistemler oluşturmakla ilgileniyor. OpenSearch'ün bakımını yapan ve aktif bir katılımcısıdır.

Gaurav Bafna Amazon Web Services'ta OpenSearch üzerinde çalışan Kıdemli Yazılım Mühendisidir. Dağıtılmış sistemlerde problem çözme konusunda büyülenmiştir. OpenSearch'ün bakımını yapan ve aktif bir katılımcısıdır.

Murali Krişna AWS OpenSearch Hizmetinde Kıdemli Baş Mühendistir. AWS OpenSearch Service ve AWS CloudSearch'ü oluşturmuştur. Uzmanlık alanları arasında Bilgi Erişimi, Büyük ölçekli dağıtılmış bilgi işlem, düşük gecikmeli gerçek zamanlı hizmet sistemleri vb. bulunmaktadır. Metin ve multimedya içeriğini taramak, işlemek, dizine eklemek ve sunmak için web ölçeğinde sistemler tasarlama ve oluşturma konusunda engin deneyime sahiptir. Amazon'dan önce, arama ürünleri için tarama ve dizin oluşturma sistemleri geliştiren Yahoo!'nun bir parçasıydı.

Ranjith Ramachandra Amazon OpenSearch Hizmeti üzerinde çalışan bir Kıdemli Mühendislik Yöneticisidir. Yüksek oranda ölçeklenebilir dağıtılmış sistemler, yüksek performans ve esnek sistemler konusunda tutkulu.

Rohin Bhargava Amazon OpenSearch Service ekibinde Kıdemli Ürün Yöneticisidir. AWS'deki tutkusu, müşterilerin iş hedefleri için başarıya ulaşmaları için doğru AWS hizmetleri karışımını bulmalarına yardımcı olmaktır.

spot_img

En Son İstihbarat

spot_img