ZooKeeper bakımı hakkında

ZooKeeper toplulukları, bir veya daha fazla ZooKeeper düğümü kaybolsa bile veri kaybı olmadan çalışmaya devam edecek şekilde tasarlanmıştır. Bu esneklik, sistemde kesinti olmadan ZooKeeper düğümlerinde bakım yapmak için etkili bir şekilde kullanılabilir.

ZooKeeper ve Edge hakkında

Edge'de ZooKeeper düğümleri, çeşitli Edge bileşenlerinin konumu ve yapılandırmasıyla ilgili yapılandırma verilerini içerir ve farklı bileşenleri yapılandırma değişiklikleri hakkında bilgilendirir. Üretim sistemi için desteklenen tüm Edge topolojileri en az üç ZooKeeper düğümü kullanır.

ZooKeeper düğümlerini belirtmek için Edge yapılandırma dosyasındaki ZK_HOSTS ve ZK_CLIENT_HOSTS özelliklerini kullanın. Örneğin:

ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Burada:

  • ZK_HOSTS, ZooKeeper düğümlerinin IP adreslerini belirtir. IP adresleri, tüm ZooKeeper düğümlerinde aynı sırada listelenmelidir.

    Çoklu veri merkezi ortamında, tüm veri merkezlerindeki tüm ZooKeeper düğümlerini listeleyin.

  • ZK_CLIENT_HOSTS, yalnızca bu veri merkezi tarafından kullanılan ZooKeeper düğümlerinin IP adreslerini belirtir. IP adresleri, veri merkezindeki tüm ZooKeeper düğümlerinde aynı sırada listelenmelidir.

    Tek bir veri merkezi kurulumunda bunlar, ZK_HOSTS tarafından belirtilen düğümlerle aynıdır. Çoklu veri merkezi ortamında, her veri merkezinin Edge yapılandırma dosyası yalnızca o veri merkezinin ZooKeeper düğümlerini listelemelidir.

Varsayılan olarak tüm ZooKeeper düğümleri seçmen düğümleri olarak belirlenir. Yani tüm düğümler, ZooKeeper liderini seçme sürecine katılır. Düğümün bir seçmen değil, gözlemci düğümü olduğunu belirtmek için :observer değiştiricisini ZK_HOSTS ile ekleyebilirsiniz. Gözlemci düğümü, lider seçimine katılmaz.

:observer değiştiricisini genellikle birden fazla Edge veri merkezi oluştururken veya tek bir veri merkezinde çok sayıda ZooKeeper düğümü olduğunda belirtirsiniz. Örneğin, iki veri merkezine sahip 12 ana bilgisayarlı bir Edge kurulumunda, Veri Merkezi 2'deki 9. düğümde bulunan ZooKeeper gözlemcidir:

Ardından, Veri Merkezi 1 için yapılandırma dosyanızda aşağıdaki ayarları kullanırsınız:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

2. veri merkezi için:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

Aşağıdaki bölümlerde lider, seçmen ve gözlemci düğümleri hakkında daha fazla bilgi verilmekte ve seçmen ve gözlemci düğümleri eklemeyle ilgili dikkat edilmesi gereken noktalar açıklanmaktadır.

Liderler, takipçiler, seçmenler ve gözlemciler hakkında

Çok düğümlü bir ZooKeeper kurulumunda düğümlerden biri lider olarak belirlenir. Diğer tüm ZooKeeper düğümleri takipçi olarak tanımlanır. Okuma işlemleri herhangi bir ZooKeeper düğümünden yapılabilirken tüm yazma istekleri lidere yönlendirilir. Örneğin, Edge'e yeni bir Message Processor eklenir. Bu bilgiler ZooKeeper liderine yazılır. Tüm takipçiler ve ardından verileri kopyalayın.

Edge yükleme sırasında her ZooKeeper düğümünü seçmen veya gözlemci olarak belirlersiniz. Lider, tüm seçmen ZooKeeper düğümleri tarafından seçilir. Lider seçimi için tek şart, çalışan ZooKeeper seçmen düğümlerinin çoğunluğunun mevcut olmasıdır. Çoğunluk, tüm veri merkezlerindeki tüm seçmen ZooKeeper düğümlerinin yarısından fazlasının çalıştığı anlamına gelir.

Yeterli sayıda seçmen düğümü yoksa lider seçilemez. Bu senaryoda, Zookeeper istekleri karşılayamaz. Bu, çoğunluk sağlanana kadar Edge Yönetim Sunucusu'na istek gönderemeyeceğiniz, API isteklerini işleyemeyeceğiniz veya Edge kullanıcı arayüzüne giriş yapamayacağınız anlamına gelir.

Örneğin, tek bir veri merkezi kurulumunda:

  • Üç ZooKeeper düğümü yüklediniz
  • Tüm ZooKeeper düğümleri oy kullanır.
  • Çoğunluk, çalışan iki seçmen düğümüdür
  • Yalnızca bir seçmen düğümü varsa ZooKeeper topluluğu çalışamaz.

İki veri merkezi bulunan bir kurulumda:

  • Veri merkezi başına üç ZooKeeper düğümü yüklediniz (toplam altı düğüm).
  • 1 numaralı veri merkezinde üç oy veren düğüm var.
  • Veri Merkezi 2'de iki seçmen düğümü ve bir gözlemci düğümü var
  • Yetersayı, her iki veri merkezindeki beş seçmene dayanır ve bu nedenle üç işlevsel seçmen düğümüdür.
  • Yalnızca iki veya daha az seçmen düğümü varsa ZooKeeper topluluğu çalışamaz.

Düğümleri seçmen veya gözlemci olarak eklerken dikkat edilmesi gereken noktalar

Sistem gereksinimleriniz, Edge kurulumunuza ek ZooKeeper düğümleri eklemenizi gerektirebilir. ZooKeeper düğümleri ekleme belgelerinde, Edge'e nasıl ek ZooKeeper düğümleri ekleyeceğiniz açıklanmaktadır. ZooKeeper düğümleri eklerken, eklenecek düğümlerin türünü (seçmen veya gözlemci) dikkate almanız gerekir.

Bir veya daha fazla seçmen düğümü devre dışı kaldığında ZooKeeper topluluğunun çalışmaya devam edebilmesi için yeterli sayıda seçmen düğümünüz olduğundan emin olmanız gerekir. Bu, yeterli sayıda seçmen düğümünün hâlâ mevcut olduğu anlamına gelir. Seçmen düğümleri ekleyerek çekirdek boyutunu artırırsınız ve bu nedenle daha fazla seçmen düğümünün devre dışı kalmasını tolere edebilirsiniz.

Ancak ek seçmen düğümleri eklemek, yazma performansını olumsuz etkileyebilir. Bunun nedeni, yazma işlemlerinin lider üzerinde anlaşmaya varmak için çoğunluk gerektirmesidir. Lideri belirlemek için gereken süre, seçmen düğümlerinin sayısına bağlıdır. Daha fazla seçmen düğümü ekledikçe bu süre artar. Bu nedenle, tüm düğümleri oy veren düğüm yapmak istemezsiniz.

Oy veren düğümler yerine gözlemci düğümler ekleyebilirsiniz. Gözlemci düğümleri eklemek, lider seçme yükünü artırmadan genel sistem okuma performansını artırır. Bunun nedeni, gözlemci düğümlerinin oy kullanmaması ve çoğunluk boyutunu etkilememesidir. Bu nedenle, bir gözlemci düğümü devre dışı kalırsa topluluğun lider seçme yeteneği etkilenmez. Ancak gözlemci düğümlerinin kaybedilmesi, veri isteklerine hizmet verebilecek daha az düğüm olacağından ZooKeeper topluluğunun okuma performansında düşüşe neden olabilir.

Apigee, tek bir veri merkezinde, gözlemci düğümlerinin sayısından bağımsız olarak en fazla beş seçmeninizin olmasını önerir. Apigee, iki veri merkezinde en fazla dokuz seçmeninizin (bir veri merkezinde beş, diğerinde dört) olmasını önerir. Ardından, sistem gereksinimleriniz için gereken sayıda gözlemci düğümü ekleyebilirsiniz.

ZooKeeper düğümünü kaldırma

Bir ZooKeeper düğümünü kaldırmak istemenizin birçok nedeni olabilir. Örneğin, bir düğüm bozulmuş veya yanlış ortama eklenmiş olabilir.

Bu bölümde, çalışmayan ve erişilemeyen bir ZooKeeper düğümünün nasıl kaldırılacağı açıklanmaktadır.

Bir ZooKeeper düğümünü kaldırmak için:

  1. Sessiz yapılandırma dosyanızı düzenleyin ve kaldırmak istediğiniz ZooKeeper düğümünün IP adresini kaldırın.
  2. Kalan ZooKeeper düğümlerini yeniden yapılandırmak için ZooKeeper'a yönelik setup komutunu yeniden çalıştırın:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Tüm Zookeeper düğümlerini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Yönetim Sunucusu düğümünü yeniden yapılandırın:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Tüm yönlendiricileri yeniden yapılandırın:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Tüm Mesaj İşleyicileri yeniden yapılandırın:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Tüm Qpid düğümlerini yeniden yapılandırın:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Tüm Postgres düğümlerini yeniden yapılandırın:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Bakım konusunda dikkat edilmesi gereken noktalar

ZooKeeper bakımını, her seferinde tek bir düğümde gerçekleştirirseniz tamamen çalışan bir toplulukta kesinti olmadan yapabilirsiniz. Aynı anda yalnızca bir ZooKeeper düğümünün devre dışı olduğundan emin olarak, lider seçmek için her zaman yeterli sayıda seçmen düğümü olmasını sağlayabilirsiniz.

Birden fazla veri merkezinde bakım

Birden fazla veri merkeziyle çalışırken ZooKeeper topluluğunun veri merkezleri arasında ayrım yapmadığını unutmayın. ZooKeeper derlemeleri, tüm veri merkezlerindeki tüm ZooKeeper düğümlerini tek bir topluluk olarak görür.

ZooKeeper, çoğunluk hesaplamaları yaparken belirli bir veri merkezindeki seçmen düğümlerinin konumunu dikkate almaz. Veri merkezlerinde bağımsız düğümler devre dışı kalabilir ancak tüm toplulukta çoğunluk korunduğu sürece ZooKeeper çalışmaya devam eder.

Bakımla ilgili uygulamalar

Zaman zaman, bakım için bir ZooKeeper düğümünü (seçmen düğümü veya gözlemci düğümü) devre dışı bırakmanız gerekir. Örneğin, düğümdeki Edge sürümünü yükseltmeniz gerekebilir, ZooKeeper'ı barındıran makine başarısız olabilir veya düğüm, ağ hatası gibi başka bir nedenle kullanılamayabilir.

Kullanılamaz hale gelen düğüm bir gözlemci düğümüyse düğüm geri yüklenene kadar ZooKeeper topluluğunun performansında hafif bir düşüş yaşanabilir. Düğüm bir seçmen düğümüyse lider seçim sürecine katılan bir düğümün kaybı nedeniyle ZooKeeper topluluğunun kullanılabilirliğini etkileyebilir. Seçmen düğümünün devre dışı kalma nedeni ne olursa olsun, kullanılabilir seçmen düğümlerinin çoğunluğunu korumak önemlidir.

Bakım prosedürü

Bakım prosedürlerini yalnızca bir ZooKeeper topluluğunun çalıştığından emin olduktan sonra gerçekleştirin. Bu, gözlemci düğümlerinin çalıştığını ve bakım sırasında yeterli sayıda seçmen düğümünün bulunduğunu varsayar.

Bu koşullar karşılandığında, herhangi bir boyuttaki ZooKeeper topluluğu, herhangi bir noktada tek bir düğümün kaybını veri kaybı veya performans üzerinde anlamlı bir etki olmadan tolere edebilir. Bu, aynı anda tek bir düğümde olmak kaydıyla topluluktaki herhangi bir düğümde bakım yapabileceğiniz anlamına gelir.

Bakım işlemleri kapsamında, bir ZooKeeper düğümünün türünü (lider, seçmen veya gözlemci) belirlemek için aşağıdaki prosedürü kullanın:

  1. ZooKeeper düğümünde yüklü değilse nc paketini yükleyin:
    sudo yum install nc
  2. Düğümde aşağıdaki nc komutunu çalıştırın (2181, ZooKeeper bağlantı noktasıdır):
    echo stat | nc localhost 2181

    Şu biçimde bir çıkış görürsünüz:

    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

    Düğümler için çıkışın Mode satırında, düğüm yapılandırmasına bağlı olarak observer, leader veya follower (lider olmayan bir seçmen anlamına gelir) ifadesini görmeniz gerekir.

  3. Her ZooKeeper düğümünde 1. ve 2. adımları tekrarlayın.

Özet

ZooKeeper topluluğunda bakım yapmanın en iyi yolu, bakımı her seferinde bir düğümde yapmaktır. Hatırlatma:

  • ZooKeeper topluluğunun çalışmaya devam etmesi için bakım sırasında seçmen düğümlerinin çoğunluğunu korumanız gerekir.
  • Gözlemci düğümün kaldırılması, çoğunluğu veya lider seçme özelliğini etkilemez.
  • Yetersiz sayı, tüm veri merkezlerindeki tüm ZooKeeper düğümleri genelinde hesaplanır.
  • Önceki sunucu çalışır duruma geldikten sonra bir sonraki sunucunun bakımına geçin.
  • ZooKeeper düğümünü incelemek için nc komutunu kullanın.