İçeriğe geç
Geliştirme dokümantasyonu
Bu belgeler Keydra'nın geliştirilmekte olan hâlini anlatır; yayımlanmış bir sürüm değildir. Anlatılanlar bir sürüm çıkana kadar değişebilir.

Birden fazla Keydra çalıştırma

Hangi işi tek bir örneğin üstlendiği, hangisinin her örnekte yapılabildiği, bir örnekteki değişikliğin diğerine bağlı tarayıcıya ulaşmasını sağlayan ortak depo ve her örneğin neyi tuttuğunu ve kurulumun nelere eriştiğini gösteren sayfa.

Birden fazla örnek çalıştırma#

Yük dengeleyici arkasında iki örnek çalıştırmak, bir kurulumun parçası hâline gelen her uygulama için olağandır; erişilebilirlik için olmasa bile sürüm yükseltmeleri için gerekir. Eşgüdüm sağlanmazsa zamanlanmış işler iki kez çalışır, uyarılar iki kez tetiklenir ve izlenen her hedef kendini tek sanan iki süreç tarafından iki kez örneklenir. Bunların hiçbiri kendini belli etmez: gecelik bir boşaltma işinin ikinci kopyası, birincisiyle aynı görünür.

Ön koşullar
  • Ortak tek bir PostgreSQL.

  • Tarayıcıların diğer örnekteki değişiklikleri de görmesi gerekiyorsa Keydra’nın kendi deposu için bir Redis.

Prosedür
  1. Bütün örnekleri aynı veritabanına yönlendirin.

  2. Her örneğe bir kimlik verin ya da kendisinin üretmesine izin verin:

    properties
    KEYDRA_INSTANCE_ID=keydra-a
  3. Örnekleri ortak bir depoya yönlendirin:

    properties
    KEYDRA_STORE_URL=redis://store.internal:6379
  4. Bütün örneklere aynı KEYDRA_SECRET_KEY değerini verin; hepsi aynı şifreli sütunları okur.

Doğrulama
  • Her örnekte Hakkında sayfasını açın. Örneğin adını ve o an lider işlerini üstlenip üstlenmediğini gösterir.

  • Bir örnekte değişiklik yapın, diğerine bağlı bir tarayıcıyla bakın. Değişiklik oraya da ulaşır.

  • Kirayı elinde tutan örneği durdurun. Diğeri işi bir kira süresi içinde devralır.

Not:Not

Kira, PostgreSQL’deki tek bir satırdır: birkaç saniyeliğine alınır ve sürekli yenilenir. Ayrı bir eşgüdüm servisi kullanılmaz. PostgreSQL zaten zorunludur, zaten ortaktır ve kirayı beş saniye kaybetmenin en kötü sonucu beş saniye geç çalışan bir zamanlanmış iştir.

Kiranın süresinin dolup dolmadığına veritabanının saati karar verir. Saatleri bir dakika farklı iki makine bile kimin kirasının bittiği konusunda hemfikir olur.

Birden fazla Keydra#

Yük dengeleyici arkasındaki iki örnek aynı PostgreSQL’i paylaşır. Her yerde yapılabilecek işler — anahtar uzayını okumak, konsol komutu çalıştırmak, pano çizmek — isteğin ulaştığı örnekte yapılır. Yalnızca bir kez yapılması gereken işler ise sahiplenilir:

  • Zamanlanmış işler yalnızca kirayı elinde tutan örnekte çalışır.

  • Uyarı kurallarını yalnızca o örnek değerlendirir; böylece tetiklenen kural tek bir mesaj gönderir.

  • Yarım kalmış göç işlerini işaretleyen tarama da orada çalışır.

Kira, veritabanındaki tek bir satırdır: birkaç saniyeliğine alınır ve sürekli yenilenir. Süresinin dolup dolmadığına örneklerin değil, veritabanının saati karar verir. Yenilemeyi kesen örnek kirayı bir sonraki isteyene bırakır; bir çökme sonrasında kimsenin müdahalesi gerekmeden toparlanmayı sağlayan da budur.

Hakkında sayfası, örneğin adını ve o an kirayı elinde tutup tutmadığını gösterir.

Örnekler sayfasını okumak ve bir örneği boşaltmak#

Birden fazla Keydra çalıştığında Örnekler sayfası kimlerin ayakta olduğunu, her birinin neyi tuttuğunu ve hepsinin neyin üzerinde durduğunu söyler. Bir örneği durdurmadan önce hizmet dışına almak da buradan yapılır.

Örnekler sayfası; bu kurulumun neye dayandığı ve isteği hangi örneğin yanıtladığı
Ön koşullar
  • Sayfayı okumak için instance:read.

  • Bir örneği boşaltmak için instance:drain. Bilerek ayrı bir izin: işin nerede olduğunu okumakla nereye gideceğine karar vermek aynı edim değildir.

Prosedür
  1. Örnekler sayfasını açın. Her satır çalışan bir Keydra’dır; ilk ne zaman haber verdiğini ve kirasını en son ne zaman yenilediğini gösterir. İçlerinden biri düzenli işleri üstlenmiş olarak işaretlidir — birden fazla örnek varken yalnızca bir kez yapılması gereken işler.

  2. Her birinin neyi tuttuğunu okuyun: soket kaç tarayıcıyla konuştuğu, akış birileri izlediği için bir hedefe karşı açık tuttuğu bağlantı sayısı, ise süren uzun işlerdir. Satırı genişletirseniz hangi hedefler için istemci tuttuğunu görürsünüz.

  3. Bir örneği hizmet dışına almak için işlemler menüsünden Boşalt seçeneğini kullanın. İletişim kutusu, yapmadan önce ne yapacağını söyler.

  4. Sayıların düşüşünü izleyin. Önce soketler gider — tarayıcılar yeniden bağlanır ve yük dengeleyici onları başka yere yönlendirir; akışlar onları izler; işler yerinde kalır, çünkü onlar kendiliğinden taşınmaz.

  5. Sıfıra indiğinde örneği durdurmak kimseye bir şeye mal olmaz. Hizmete geri al işlemi geri alır.

Doğrulama

Boşaltılan bir örnek /q/health/ready adresinde kendini hazır değil olarak bildirir — yük dengeleyicinin ona istek göndermeyi bırakmasını sağlayan budur — ve düzenli işleri bir vuruş içinde geri verir. Canlılık denetimi açık kalır: boşaltmak, bir kapsayıcıyı öldürtmenin yolu değildir.

Not:Not

İstek, boşaltılan örneğe değil, yük dengeleyicinin gönderdiği yere ulaşır. İki Keydra örneği birbirine hiç bağlanmaz — veritabanı üzerinden buluşurlar ve boşaltılan örnek talimatı zaten attığı vuruşta okur. Rolün içine katılmak yerine kendi sütunu olmasının sebebi, ilginç anın örneğin ikisini birden olduğu an olmasıdır: hâlâ lider, çoktan boşalıyor, birinci olmayı bırakmak üzere.

Yeni başlamış bir süreç, satırda daha önce ne yazıyorsa yazsın, boşalıyor değildir. Bunun için bir yapılandırma özelliği olmamasının sebebi de budur: bir manifest dosyasındaki draining=true birinin bir kez yazıp unuttuğu şeydir ve ürettiği sonuç, ayağa kalkıp trafiği reddeden bir filodur.

Örneği durdurmak buradan yapılmaz. Bu, onu başlatan şeyin işidir — ve kapsayıcıları yeniden başlatan şey onu zaten yeniden başlatırdı.

Keydra’nın nelere eriştiğini denetlemek#

Örnekler sayfasının alt yarısı bu kurulumun eriştiği her şeyi listeler: veritabanı, depolar, kimlik sağlayıcılar, posta sunucusu, yedek hedefleri, uyarı kanalları, tüneller ve hedeflerin kendisi.

Neler sayılır, nelere sorulur

Satırların çoğu sayımdır — kaç tane var ve kaçı açık. Bunlardan ikisi bundan fazlasını taşır.

Kimlik sağlayıcılara ve yedek hedeflerine cevap verip vermedikleri sorulur. Bunu, düzenli işleri üstlenen örnek yavaş bir saatle — öntanımlı olarak on dakikada bir — yapar ve dönen cevabı yazar. Sayfa istek üretmek yerine o kaydı okur; sayfayı izleyen on kişinin, bir kişinin dışa giden trafiğinin on katına dönüşmemesini sağlayan da budur, üstelik o trafik başkasının hizmetine gider.

Ayrıntı sütunu ne bulunduğunu ve bunun ne kadar önce öğrenildiğini söyler:

  • 1 / 2 cevap veriyor · 6dk önce denetlendi — biri cevap vermeyi bırakmış ve okuma altı dakikalık.

  • Henüz denetlenmedi — hiç sorulmamış. Satır bu yüzden kırmızıya boyanmaz: sorulmamış olmak, başarısız olmuş olmaktan başka bir şeydir.

Şimdi sormak

Şimdi denetle, her şeye hemen sorar; bir yedek hedefini yeni değiştirmiş ve bir sonraki turu beklemek istemeyen kişi içindir. Son cevap birkaç saniyelikse reddedilir — basılı tutulabilen bir düğme, yalnızca instance:read gerektiren bir sayfadan Keydra’ya başkasının hizmetini dövdürmenin yoludur.

Not:Not

Uyarı kanalları ve posta sunucusu sayılır ama hiç sorulmaz. Sebep denetimin zor olması değil: bir keşif belgesini çekmek, birinin sunucusunun saatte bin kez cevapladığı bir istektir ve bir kovaya küçük bir dosya yazıp geri almak kimsenin görmediği bir gidiş-dönüştür. Bir sohbet kanalına ileti göndermek ise bir insanın okuduğu iletidir; olay kanalını on dakikada bir dürten bir durum sayfası, kimsenin açık tutmasına izin verilmeyecek bir sayfa olurdu. Bunlar kendi yapılandırma sayfalarındaki Denetle düğmesini korur.

Bir denetim aslında ne yapar

Yedek hedefi için gidiş-dönüşün tamamıdır — küçük bir dosya yaz, ara, geri al — çünkü oturum açabilen ama yazamayan kimlik bilgileri bir hedefin en sık bozulma biçimidir ve yalnızca bağlantı açan bir denetim, yazılamayan bir hedefi de geçirirdi. Kimlik sağlayıcı için, sağlayıcının keşif belgesinin çekilmesidir; bu, bir oturum açmanın da ilk yaptığı istektir. Kapalı olan bir şeye hiç sorulmaz.

Bu sayfayı düzenle