मेरे पास एक पाइथन/Django ऐप है जिसके पास निकट भविष्य में किसी बिंदु पर डेटाबेस लोड संतुलन की आवश्यकता होगी। इस बीच में मैं स्थानीय वर्चुअल मशीन सेटअप पर pgpool को लागू करने के लिए सीखने की कोशिश कर रहा हूं।pgpool2 लोड संतुलन काम नहीं कर रहा
मैं 4 Ubuntu 12.04 VMs है:
192.168.1.80 <- pool, pgppool2 installed and accessible
192.168.1.81 <- db1 master
192.168.1.82 <- db2 slave
192.168.1.83 <- db3 slave
मैं pgpool द्वितीय संस्करण 3.1.1 और मेरे डेटाबेस सर्वर PostgreSQL 9.1 चल रहा है।
मेरे पास मेरे ऐप का डीबी कनेक्शन 192.168.1.80:9999 है और यह ठीक काम करता है।
समस्या तब होती है जब मैं अपाचे एबी का उपयोग कुछ लोड फेंकने के लिए करता हूं, कोई भी प्रश्न संतुलित नहीं दिखता है। सभी भार मेरे डीबी 1 मास्टर पर जाता है। इसके अलावा, पूल सर्वर पर लोड बहुत ही संबंधित है, यह डीबी 1 की तुलना में वास्तव में उच्च है, शायद औसत 8-10 गुना अधिक है। इस बीच मेरे डीबी 2 और डीबी 3 सर्वरों में लगभग शून्य का भार है, वे केवल डीबी 1 से प्रतिलिपि बना रहे हैं, जो बहुत कम लोड नहीं है ab के साथ मेरे परीक्षणों के लिए गहन है।
ab -n 300 -c 4 -C 'sessionid=80a5fd3b6bb59051515e734326735f80' http://192.168.1.17:8000/contacts/
जो मेरे पूल सर्वर पर लगभग 2.3 तक लोड चलाता है। डीबी 1 पर लोड लगभग 0.4 है और डीबी 2 और डीबी 3 पर लोड लगभग शून्य है।
क्या कोई मेरी कॉन्फ़िगरेशन देख सकता है और देख सकता है कि मैं क्या गलत कर रहा हूं?
backend_hostname0 = '192.168.1.81'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.1/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = '192.168.1.82'
backend_port1 = 5433
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/9.1/main'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_hostname2 = '192.168.1.83'
backend_port2 = 5434
backend_weight2 = 1
backend_data_directory2 = '/var/lib/postgresql/9.1/main'
backend_flag2 = 'ALLOW_TO_FAILOVER'
load_balance_mode = on
मेरा पूरा config यहाँ है:
http://pastebin.com/raw.php?i=wzBc0aSp