Pgpool mimarisi ile postgres


9

Aşağıda bir örnek pgpool mimarisi verilmiştir:

resim açıklamasını buraya girin

Bu, tek bir sunucuda sadece pgpool'a ihtiyacınız olduğunu gösterir; bu doğru mu? Konfigürasyona baktığımda arka uçları yapılandırdığınızı da görüyorum pgpool.conf; bu yüzden bunu ima eder. Ancak, neden arka uç sunucularında pgpool gördüğümü açıklamıyor.

Belgelere bakarken de görüyorum:

PostgreSQL 8.0 veya üstünü kullanıyorsanız, pgpool-II tarafından dahili olarak kullanıldığı için tüm PostgreSQL'e pgpool_regclass fonksiyonunun yüklenmesi şiddetle tavsiye edilir, çünkü pgpool-II tarafından dahili olarak kullanılır.

Ne düşüneceğimi bilmiyorum; tüm arka uçlarda pgpool olması veya sadece özel bir sunucu olması en iyi uygulamadır?


yüksek kullanılabilirlik için gidiyorsanız, muhtemelen en az 2 postgresql sunucusunun önünde (hepsi farklı kutularda) iki pgpool sunucusu istiyorsunuz
Neil McGuigan

Yanıtlar:


10

Genellikle Pgpool'u arka uç sunucularına kurmazsınız. Resminizde gördüğünüz en yaygın yapılandırmadır. Pgpool, veritabanlarının önünde yer alan bağımsız bir sunucudur. İki Postgres sunucusu genellikle akış çoğaltmasıyla yapılandırılır; biri efendi diğeri köle.

Bu, Pgpool'un iki (veya daha fazla) veritabanı arasındaki tüm okunan sorguları dengelemesini sağlar. Herhangi bir yazım içeren tüm sorgular ana sunucuya yönlendirilir ve bu da slave'e kopyalanır.

As @Neil McGuigan söyledi , ayrıca daha iyi yüksek kullanılabilirlik elde etmek için birden pgpool sunucular olabilir. Teknik olarak bu yapılandırmada Pgpool'u veritabanı sunucularına kurabilirsiniz, ancak bu kötü bir uygulamadır. Birden fazla Pgpool sunucusu çalıştırmak çok daha karmaşık bir yapılandırmadır. Bu Pgpool ile ilk kez olsaydı, iki işe başlamadan önce bir Pgpool sunucusuyla başlardım.

Her iki yapılandırmada da uygulama sunucunuz yalnızca tek bir Postgres veritabanına bağlandığını düşünür.

Hakkında pgpool_regclass, bu gerçekten ayrı bir soru olmalı, bu Pgpool SSS bölümünden :

PostgreSQL 8.0 veya üstünü kullanıyorsanız, pgpool-II tarafından dahili olarak kullanıldığı için tüm PostgreSQL'e pgpool_regclass fonksiyonunun yüklenmesi şiddetle tavsiye edilir, çünkü pgpool-II tarafından dahili olarak kullanılır. Bu olmadan, farklı şemadaki yinelenen tablo adlarının işlenmesi soruna neden olabilir (geçici tablolar sorun değildir).

PostgreSQL 9.4.0 veya üstünü ve pgpool-II 3.3.4 veya üstünü, 3.4.0 veya üstünü kullanıyorsanız, PostgreSQL 9.4 yerleşik pgpool_regclass "" to_regclass "işlevine sahip olduğundan, gerekli değildir.

Buna ihtiyacınız varsa, Pgpool'un kullandığı bir işlevi eklemek için Postgres ana sunucunuzda çalıştırılan bazı SQL kodları vardır.

Regclass ile, yapmanız gereken ek bir adım var (insert_lock'u düşünüyordum). Kaynaktan derliyorsanız (genellikle dağıtımların çoğu Pgpool'un gerçekten eski sürümlerine sahiptir), bir Postgres kütüphanesi de derlemeniz gerekecektir.

Kaynaktan derlediyseniz, .../pgpool-II-3.X.X/src/sql/pgpool-regclassklasöre girip bir ./configure; make.

Pgpool-regclass.so dosyasını Postgres uzantı dizinine kopyalayın. : Benim Ubuntu 14.04 sunucuda, o yer almaktadır (sadece yüklemek Postgres 9.3 paketini kullanarak) /usr/lib/postgresql/9.3/lib. Bunu tüm Postgres sunucuları için yapmayı unutmayın .

Bu tamamlandığında, pgpool-regclass.sqlmaster üzerinde çalışabilirsiniz . Bu, pgpool_regclassişlevi kopyaladığınız kitaplıkla eşleştirir .


1

Diğer her şeyde olduğu gibi, yüksek kullanılabilirlikli dağıtımınızı gerçekleştirmenin birçok yolu vardır. Burada deneyimlerimden bir şey önereceğim (kendi HA uygulamam):

  1. Tek yerine birden fazla pgpool2 örneğine sahip olmak her zaman daha iyidir. Nedeni açıktır: tek pgpool2 tek hata noktasıdır. Pgpool bekçi köpeği özelliğini getirdiğinden, başarılması kolaydır.
  2. Genellikle ayrı makinelerde pgpool2 örneklerine sahip olmak, aynı makineyi PostgreSQL arka ucu ve pgpool2 arasında paylaşmaktan biraz daha iyidir. Ancak, PostgreSQL ile aynı sunucuda çalıştırsanız bile önemli bir dezavantaj yoktur. (HA uygulamamda her makine bir PostgreSQL örneği ve bir pgpool2 örneği çalıştırır.)

Son olarak, yüksek kullanılabilirlik uygulamasını tamamlamak için sizi sıfırdan (PostgreSQL sunucusunu yükleyerek ...) yönlendirecek bu adım adım öğreticiyi önereceğim. Bahsedilen öğreticide kullandığım uygulama açıklanmaktadır.

Umarım yardımcı olmuştur.

GÜNCELLEME: Teşekkürler @Moshe Katz - bağlantı değişti. Şimdi burada, orijinal yazı da güncellendi.


2
Sizin tarafınızdan gösterilen web sitesi itenlight.com/blog/2016/05/18/… çalışmıyor gibi görünüyor. Bakabilir misin?
user6807024

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.