ZooKeeper toplulukları, bir veya daha fazla ZooKeeper düğümünün kaybına rağmen veri kaybı olmadan işlevsel kalacak şekilde tasarlanmıştır. Bu esneklik, sistemde kapalı kalma süresi 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 yapılandırma değişiklikleri hakkında farklı bileşenleri 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. Bu, tüm düğümlerin ZooKeeper liderini seçmeye katıldığı anlamına gelir. 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, liderin seçim sürecine 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, oy verenler 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 belirlenir. Okuma işlemleri herhangi bir ZooKeeper düğümünden yapılabilirken tüm yazma istekleri lider düğüme yönlendirilir. Örneğin, Edge'e yeni bir Message Processor eklenir. Bu bilgiler ZooKeeper liderine yazılır. Tüm takipçiler verileri kopyalar.
Edge yükleme zamanında her bir ZooKeeper düğümünü seçmen veya gözlemci olarak belirlersiniz. Daha sonra 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 nedenle, kvorum geri yüklenene kadar Edge Management Server'a istekte bulunamaz, API isteklerini işleyemez veya Yeni Edge kullanıcı arayüzünde oturum açamazsınız.
Örneğin, tek bir veri merkezi kurulumunda:
- Üç ZooKeeper düğümü yüklediniz
- Tüm ZooKeeper düğümleri oy kullanır.
- Yeterli sayı, iki işlevsel 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 yüklemenize 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) göz önünde bulundurmanız gerekir.
Bir veya daha fazla seçmen düğümü kapalı olsa bile ZooKeeper topluluğunun çalışmaya devam edebilmesi için yeterli sayıda seçmen düğümüne sahip olduğunuzdan emin olmak istiyorsunuz. Bu, seçmen düğümlerinin çoğunluğunun kullanılabilir durumda 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ü çökerse topluluğun lider seçme özelliği etkilenmez. Ancak gözlemci düğümlerinin kaybedilmesi, veri isteklerine hizmet verecek daha az düğüm olduğu için 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 gerektiği kadar 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, bir Zookeeper düğümü kapalıyken ve erişilemez durumdayken nasıl kaldırılacağı açıklanmaktadır.
Bir Zookeeper düğümünü kaldırmak için:
- Sessiz yapılandırma dosyanızı düzenleyin ve kaldırmak istediğiniz ZooKeeper düğümünün IP adresini kaldırın.
- Kalan ZooKeeper düğümlerini yeniden yapılandırmak için ZooKeeper'a yönelik
setupkomutunu yeniden çalıştırın:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- Tüm Zookeeper düğümlerini yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- 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 - 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 - 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 - 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 - 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
Her seferinde tek bir düğümde gerçekleştirmeniz koşuluyla, tam işlevli bir toplulukta ZooKeeper bakımı yapabilirsiniz. Bu durumda, hizmet kesintisi yaşanmaz. Herhangi bir zamanda yalnızca bir ZooKeeper düğümünün kapalı olmasını sağlayarak her zaman bir lider seçmek için yeterli sayıda seçmen düğümünün kullanılabilir 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, kvorum hesaplamaları yaparken belirli bir veri merkezindeki seçmen düğümlerinin konumunu dikkate almaz. Veri merkezlerinde bağımsız düğümler devre dışı kalabilir ancak topluluğun tamamında bir kvorum korunduğu sürece ZooKeeper işlevsel kalır.
Bakımla ilgili uygulamalar
Çeşitli zamanlarda, bir ZooKeeper düğümünü (seçmen düğümü veya gözlemci düğümü) bakım için kapatmanız gerekir. Örneğin, düğümdeki Edge sürümünü yükseltmeniz gerekebilir, ZooKeeper'ı barındıran makine arızalanabilir veya düğüm, ağ hatası gibi başka bir nedenle kullanılamaz hale gelebilir.
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 işlemlerini yalnızca bir ZooKeeper topluluğunun işlevsel olduğundan 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, rastgele boyuttaki bir 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, topluluktaki herhangi bir düğümde bakım yapabileceğiniz anlamına gelir. Ancak bu işlem, her seferinde yalnızca bir düğümde yapılabilir.
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:
- ZooKeeper düğümünde yüklü değilse
ncpaketini yükleyin:sudo yum install nc
- Düğümde aşağıdaki
nckomutunu çalıştırın (2181, ZooKeeper bağlantı noktasıdır):echo stat | nc localhost 2181
Formda aşağıdaki çı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
Modesatırında, düğüm yapılandırmasına bağlı olarakobserver,leaderveyafollower(lider olmayan bir seçmen anlamına gelir) ifadesini görmeniz gerekir. - 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
nckomutunu kullanın.