ratanon.com - infrastructure

PostgreSQL 16 Load Balancing

การตั้งค่า Pgpool-II สำหรับ PostgreSQL 16 เพื่อรองรับการทำ Load Balancing สำหรับ concurrent connections จำนวน 100,000


 ขั้นตอนการติดตั้งและตั้งค่า Pgpool-II


1. ติดตั้ง Pgpool-II

  - ติดตั้ง Pgpool-II บนระบบของคุณ:

   sudo apt update
   sudo apt install pgpool2


2. ตั้งค่า PostgreSQL

  - ตรวจสอบให้แน่ใจว่า PostgreSQL ของคุณเปิดให้บริการ และสามารถเชื่อมต่อจาก Pgpool-II ได้ โดยแก้ไขไฟล์ `postgresql.conf` และ `pg_hba.conf` ของ PostgreSQL.


3. ตั้งค่า Pgpool-II

  - แก้ไขไฟล์การตั้งค่า `pgpool.conf` โดยเพิ่ม/แก้ไขค่าต่อไปนี้:

   listen_addresses = '*'
   port = 9999
   backend_hostname0 = 'db1_hostname'
   backend_port0 = 5432
   backend_weight0 = 1
   backend_data_directory0 = '/var/lib/postgresql/16/main'

   backend_hostname1 = 'db2_hostname'
   backend_port1 = 5432
   backend_weight1 = 1
   backend_data_directory1 = '/var/lib/postgresql/16/main'


   # Add more backends if needed

   # Load Balancing settings
   load_balance_mode = on


4. ตั้งค่า pgpool_hba.conf

  - อนุญาตการเชื่อมต่อจาก client โดยเพิ่มข้อมูลใน `pgpool_hba.conf`:

   sh
   host  all       all       0.0.0.0/0        md5


5. ตั้งค่า pool_passwd

  - เพิ่มข้อมูลการเชื่อมต่อใน `pool_passwd` เพื่อจัดการกับการเชื่อมต่อที่ปลอดภัย:

   sh
   echo "username:md5passwordhash" >> /etc/pgpool2/pool_passwd


6. ตั้งค่า watchdog

  - หากคุณต้องการเพิ่มความเสถียร ให้เปิดใช้งาน Watchdog ใน `pgpool.conf`:

   use_watchdog = on
   # Configure watchdog settings according to your environment

   


7. เพิ่มจำนวน Connections

  - ตรวจสอบค่า `max_pool` และ `num_t_children` ใน `pgpool.conf` ให้เพียงพอต่อ concurrent connections:

   num_t_children = 10000
   max_pool = 10


8. ปรับแต่ง Kernel Parameters

  - เพื่อรองรับ concurrent connections จำนวนมาก จำเป็นต้องปรับค่า kernel parameters โดยแก้ไขไฟล์ `/etc/sysctl.conf`:

   sh
   net.core.somaxconn = 10000
   net.ipv4.tcp_max_syn_backlog = 10000
   fs.file-max = 100000

   

  - แล้วรันคำสั่ง `sysctl -p` เพื่อปรับค่า kernel parameters


9. ปรับแต่ง PostgreSQL Parameters

  - ใน `postgresql.conf` ให้ปรับค่าต่อไปนี้: 

   max_connections = 100000
   shared_buffers = 8GB
   work_mem = 64MB
   maintenance_work_mem = 512MB


10. เริ่มบริการ Pgpool-II

  - รีสตาร์ท Pgpool-II เพื่อให้การตั้งค่ามีผล:

   sh
   sudo systemctl restart pgpool2

การทดสอบการตั้งค่า

- ทดสอบการเชื่อมต่อจาก client หลาย ๆ ตัวพร้อมกันเพื่อดูว่า Pgpool-II สามารถจัดการกับ concurrent connections ได้หรือไม่:

 sh
 pgbench -i -s 10 -h <pgpool_ip> -p 9999 -U <user> <database>
 pgbench -c 1000 -j 10 -T 600 -h <pgpool_ip> -p 9999 -U <user> <database>

 

การตั้งค่าทั้งหมดนี้เป็นการแนะนำเบื้องต้น

0
52