Postgres ด้วยสถาปัตยกรรม pgpool


9

ด้านล่างนี้เป็นตัวอย่างสถาปัตยกรรม pgpool:

ป้อนคำอธิบายรูปภาพที่นี่

นี่หมายความว่าคุณจะต้องมี pgpool บนเซิร์ฟเวอร์เดียว จริงหรือ เมื่อฉันมองไปที่การตั้งค่าที่ผมยังเห็นว่าคุณกำหนดค่าแบ็กเอนด์ภายในpgpool.conf; ดังนั้นมันจึงมีความหมายเพิ่มเติม แต่มันไม่ได้อธิบายว่าทำไมฉันจึงเห็น pgpool บนเซิร์ฟเวอร์ส่วนหลังด้วย

เมื่อดูเอกสารฉันเห็นด้วย:

หากคุณใช้ PostgreSQL 8.0 หรือใหม่กว่าแนะนำให้ติดตั้งฟังก์ชั่น pgpool_regclass ใน PostgreSQL ทั้งหมดเพื่อให้เข้าถึงได้โดย pgpool-II ขอแนะนำอย่างยิ่งเนื่องจากจะใช้ภายในโดย pgpool-II

ดังนั้นฉันไม่แน่ใจว่าจะคิดอย่างไร หากเป็นวิธีที่ดีที่สุดที่จะมี pgpool ในแบ็กเอนด์ทั้งหมดหรือเพียงเซิร์ฟเวอร์เฉพาะ?


หากคุณต้องการความพร้อมในการใช้งานสูงคุณอาจต้องการเซิร์ฟเวอร์ pgpool สองตัวต่อหน้าเซิร์ฟเวอร์ postgresql อย่างน้อย 2 เครื่อง (ในกล่องอื่น)
Neil McGuigan

คำตอบ:


10

โดยทั่วไปคุณจะไม่ติดตั้ง Pgpool บนเซิร์ฟเวอร์ส่วนหลัง สิ่งที่คุณเห็นในภาพของคุณคือการกำหนดค่าที่พบบ่อยที่สุด Pgpool เป็นเซิร์ฟเวอร์แบบสแตนด์อโลนซึ่งตั้งอยู่ด้านหน้าของฐานข้อมูล เซิร์ฟเวอร์ Postgres สองเครื่องมักถูกกำหนดค่าด้วยการจำลองแบบการสตรีม กับคนที่เป็นนายและอีกคนเป็นทาส

สิ่งนี้อนุญาตให้ Pgpool โหลดยอดคงเหลือทั้งหมดที่อ่านแบบสอบถามระหว่างสองฐานข้อมูล (หรือมากกว่า) แบบสอบถามใด ๆ ที่เกี่ยวข้องกับการเขียนใด ๆ จะถูกส่งไปยังเซิร์ฟเวอร์หลักซึ่งจะทำซ้ำกับทาส

ในฐานะที่เป็น@Neil McGuigan กล่าวว่าคุณยังสามารถมีเซิร์ฟเวอร์ Pgpool หลายเพื่อให้บรรลุความพร้อมสูงที่ดีกว่า ในทางเทคนิคคุณสามารถติดตั้ง Pgpool บนเซิร์ฟเวอร์ฐานข้อมูลในการกำหนดค่านี้ได้ การเรียกใช้เซิร์ฟเวอร์ Pgpool หลายเครื่องเป็นการกำหนดค่าที่ซับซ้อนมากขึ้น ถ้านี่เป็นครั้งแรกที่คุณใช้ Pgpool ฉันจะเริ่มต้นด้วยเซิร์ฟเวอร์ Pgpool หนึ่งเครื่องก่อนที่จะทำงานสองเครื่อง

ในการกำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันของคุณคิดว่ามันเป็นเพียงการเชื่อมต่อกับฐานข้อมูล Postgres เดียว

เกี่ยวกับpgpool_regclassซึ่งควรเป็นคำถามที่แยกต่างหากนี่คือคำถามที่พบบ่อยของ Pgpool :

หากคุณใช้ PostgreSQL 8.0 หรือใหม่กว่าแนะนำให้ติดตั้งฟังก์ชั่น pgpool_regclass ใน PostgreSQL ทั้งหมดเพื่อให้เข้าถึงได้โดย pgpool-II ขอแนะนำอย่างยิ่งเนื่องจากจะใช้ภายในโดย pgpool-II หากไม่มีสิ่งนี้การจัดการชื่อตารางซ้ำในสคีมาที่แตกต่างกันอาจทำให้เกิดปัญหาได้ (ตารางชั่วคราวไม่ใช่ปัญหา)

หากคุณใช้ PostgreSQL 9.4.0 หรือใหม่กว่าและ pgpool-II 3.3.4 หรือใหม่กว่า 3.4.0 หรือใหม่กว่าคุณไม่จำเป็นต้องติดตั้ง pgpool_regclass เนื่องจาก PostgreSQL 9.4 มี pgpool_regclass ในตัวเช่นฟังก์ชัน "to_regclass"

หากคุณต้องการสิ่งนี้เป็นเพียงโค้ด SQL บางตัวที่รันบนเซิร์ฟเวอร์หลัก Postgres ของคุณเพื่อเพิ่มฟังก์ชั่นที่ Pgpool ใช้

ด้วย regclass มีขั้นตอนเพิ่มเติมที่คุณต้องทำ (ฉันคิดถึง insert_lock) หากคุณกำลังรวบรวมจากแหล่งที่มา (โดยทั่วไปการกระจายส่วนใหญ่มีรุ่น Pgpool ที่ล้าสมัยจริงๆ) คุณจะต้องรวบรวมไลบรารี Postgres เช่นกัน

หากคุณรวบรวมจากแหล่งที่มาที่คุณจะต้องไปลงในโฟลเดอร์และทำ.../pgpool-II-3.X.X/src/sql/pgpool-regclass./configure; make

คัดลอกไฟล์ pgpool-regclass.so ไปยังไดเร็กทอรีส่วนขยาย Postgres บนเซิร์ฟเวอร์ Ubuntu 14.04 ของฉัน (เพียงใช้ Postgres 9.3 แพคเกจติดตั้ง) /usr/lib/postgresql/9.3/libก็ตั้งอยู่ที่: อย่าลืมทำเช่นนี้สำหรับเซิร์ฟเวอร์ Postgres ทั้งหมด

เมื่อเสร็จแล้วคุณสามารถทำงานpgpool-regclass.sqlกับต้นแบบ นี่เป็นการแม็พpgpool_regclassฟังก์ชันกับไลบรารีที่คุณคัดลอก


1

เช่นเดียวกับทุกสิ่งอื่น ๆ มีหลายวิธีที่คุณจะสามารถปรับใช้ความพร้อมใช้งานสูงได้สำเร็จ ที่นี่ฉันจะแนะนำบางอย่างจากประสบการณ์ของฉัน (การใช้งาน HA ของฉันเอง):

  1. มันจะดีกว่าเสมอถ้ามีอินสแตนซ์ pgpool2 หลายอันแทนที่จะเป็นอันเดียว เหตุผลชัดเจน: single pgpool2 เป็นจุดเดียวของความล้มเหลว ตั้งแต่ pgpool ได้แนะนำคุณสมบัติสุนัขเฝ้าบ้านมันง่ายที่จะสำเร็จ
  2. โดยทั่วไปจะดีกว่าเล็กน้อยที่จะมีอินสแตนซ์ pgpool2 บนเครื่องที่แยกต่างหากกว่าจะแบ่งปันเครื่องเดียวกันระหว่างแบ็กเอนด์ PostgreSQL และ pgpool2 แต่ไม่มีข้อเสียเปรียบที่สำคัญแม้ว่าคุณจะเรียกใช้บนเซิร์ฟเวอร์เดียวกันกับ PostgreSQL (ในการปรับใช้ HA ของฉันทุกเครื่องจะรันหนึ่งอินสแตนซ์ PostgreSQL และหนึ่งอินสแตนซ์ pgpool2)

ในที่สุดฉันจะแนะนำการสอนทีละขั้นตอนนี้ซึ่งจะนำคุณไปสู่การเริ่มต้นใหม่ (ติดตั้งเซิร์ฟเวอร์ PostgreSQL ... ) เพื่อให้การใช้งานพร้อมใช้งานสูงเสร็จ บทช่วยสอนที่กล่าวถึงอธิบายถึงการนำไปใช้ที่ฉันใช้

ฉันหวังว่ามันจะช่วย

อัปเดต: ขอบคุณ @Moshe Katz - ลิงก์ได้เปลี่ยนไป อัปเดตตอนนี้ที่นี่ในโพสต์ต้นฉบับด้วย


2
เว็บไซต์ชี้โดยคุณitenlight.com/blog/2016/05/18/…ดูเหมือนว่าจะไม่ทำงาน คุณช่วยดูหน่อยได้ไหม?
user6807024

ดูเหมือนว่าบทความนี้มีอยู่ที่fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-1
Moshe Katz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.