পোস্টগ্র্রেএসকিউএল হাই এপ্রেবিলিটি / এইচএপক্র্সি এবং পিজিবিউনসার ব্যবহার করে স্কেলাবিলিটি


17

ওয়েব অ্যাপ্লিকেশনটির জন্য আমার একাধিক পোস্টগ্রাএসকিউএল সার্ভার রয়েছে। সাধারণত হট স্ট্যান্ডবাই মোডে এক মাস্টার এবং একাধিক ক্রীতদাস (অ্যাসিনক্রোনাস স্ট্রিমিং প্রতিরূপ)।

আমি সংযোগ পুলিংয়ের জন্য পিজিবিউনার ব্যবহার করি: প্রতিটি পিজি সার্ভারে একটি ইনস্টল ইনস্টল করা হয়েছে (পোর্ট 6432) লোকালহোস্টের ডাটাবেসে সংযোগ স্থাপন করে। আমি লেনদেন পুল মোড ব্যবহার করি।

দাসদের উপর আমার পঠনযোগ্য সংযোগগুলি ভারসাম্য বজায় রাখার জন্য, আমি কম-বেশি এইরকম একটি কনফিড সহ HAProxy (v1.5) ব্যবহার করি:

listen pgsql_pool 0.0.0.0:10001
        mode tcp
        option pgsql-check user ha
        balance roundrobin
        server master 10.0.0.1:6432 check backup
        server slave1 10.0.0.2:6432 check
        server slave2 10.0.0.3:6432 check
        server slave3 10.0.0.4:6432 check

সুতরাং, আমার ওয়েব অ্যাপ্লিকেশনটি হ্যাপ্রোক্সির সাথে সংযোগ স্থাপন করে (পোর্ট 10001), প্রতিটি পিজি স্লেভটিতে কনফিগার করা একাধিক পিজবাউন্টারের লোড-ব্যালেন্স সংযোগগুলি।

এখানে আমার বর্তমান স্থাপত্যের একটি উপস্থাপনা গ্রাফ রয়েছে:

haproxy> pgbouncer> postgresql

এটি এর মতো বেশ ভালভাবে কাজ করে তবে আমি বুঝতে পারি যে কিছু কিছু একে একে অন্যরকমভাবে প্রয়োগ করে: ওয়েব অ্যাপ্লিকেশন এমন একক পিজিবিউনসার উদাহরণের সাথে সংযোগ করে যা একাধিক পিজি সার্ভারের মধ্যে লোড-ব্যালেন্সকে HAproxy এর সাথে সংযুক্ত করে:

pgbouncer> haproxy> postgresql

সেরা পদ্ধতির কি? প্রথমটি (আমার বর্তমান) বা দ্বিতীয়টি? অন্য সমাধানের কোনও সমাধানের কি কোনও সুবিধা আছে?

ধন্যবাদ

উত্তর:


10

আপনার HAProxy -> PGBoutsr -> PGServer অ্যাপ্রোচের বিদ্যমান কনফিগারেশনটি আরও ভাল। এবং এটি কেবল কাজ করে। এখানে কারণ: HAProxy বিভিন্ন সার্ভারের সাথে সংযোগ পুনর্নির্দেশ করে। এটি ফলাফল ডাটাবেস সংযোগে ম্যাক ঠিকানা পরিবর্তন। সুতরাং যদি পিজিবিউনসার HAProxy এর উপরে থাকে তবে ম্যাক ঠিকানা পরিবর্তনের কারণে প্রতিবার পুলের সংযোগগুলি অবৈধ হয়ে যায়।


7

পিজিবাউনার পোস্টগ্রিস সার্ভারের সাথে একটি পুলের সাথে সংযোগগুলি বজায় রাখে। টিসিপি সংযোগ স্থাপনের সময়গুলি একটি উচ্চ-ভলিউম পরিবেশে উল্লেখযোগ্য।

বিপুল সংখ্যক ডিবি অনুরোধকারী গ্রাহকদের প্রতিটি অনুরোধের জন্য একটি রিমোট পিজিবিউনসারের সাথে সংযোগ স্থাপন করতে হবে। স্থানীয়ভাবে পিজবাউনসার চালানোর চেয়ে এটি আরও ব্যয়বহুল (যাতে অ্যাপ্লিকেশনটি স্থানীয়ভাবে পিজবাউনসারের সাথে সংযোগ স্থাপন করে) এবং পিজবাউনার রিমোট পিজি সার্ভারের সাথে সংযোগের একটি পুল বজায় রাখে।

সুতরাং, আইএমও, পিজিবিউনসার -> হ্যাপ্রোক্সি -> পিজি সার্ভার হ্যাপ্রোক্সি -> পিজিবিউন্সার -> পিজি সার্ভারের চেয়ে ভাল বলে মনে হচ্ছে, বিশেষত যখন পিজিবিউনার ক্লায়েন্ট অ্যাপ্লিকেশনে স্থানীয় থাকে।


1

ডোনেটেলোর দেওয়া উত্তরটির সাথে আমার একমত হতে হবে না।

আপনি দেখুন, যদি আপনার অ্যাপ্লিকেশন কোনও স্থানীয় পুল ব্যবহার করে ডিবি সংযোগ পরিচালনা না করে তবে এটি প্রত্যেকবার ডিবিকে জিজ্ঞাসা করার জন্য একটি নতুন সংযোগ তৈরি করবে; পিজবাউনার ব্যবহার করার সময় ঠিক একই ঘটনা ঘটে তাই এটি ব্যবহার করে আপনার খুব ভাল উন্নতি হবে।

যখন পিজবাউনার পোস্টগ্র্রেএসকিউএল সংযোগগুলি পুল করে আপনার পরিচালনা করছেন, তখন আপনার অ্যাপ্লিকেশনটি সংযোগ খোলার জন্য ব্যয় করার সময়টি উল্লেখযোগ্যভাবে হ্রাস পাবে, যখন সংযোগটি সরাসরি ডিবিতে খোলা হবে তার তুলনায়। এটি কারণ পিজি শংসাপত্রগুলি যাচাই করতে এবং যাচাই করার জন্য বেশ আস্তে প্রতিটি সময় সংযোগের জন্য অনুরোধ করা হয়।

সুতরাং, অ্যাপ্লিকেশন অ্যাপ্লিকেশন -> HAProxy -> [PgBouncer -> PostgreSQL] আরও ভাল, কারণ পিজবাউনার পিজিতে সংযোগের সময় সাশ্রয় করে। পুলিং মোডের পাশাপাশি অ্যাকাউন্ট নেওয়াও গুরুত্বপূর্ণ। আপনার অ্যাপটি কীভাবে আচরণ করে সে সম্পর্কে আপনাকে সচেতন হতে হবে। এটি কি বেশিরভাগ ক্ষেত্রে লেনদেন হয়? বা, এটি কি আরও উচ্চ সংমিশ্রণের সাথে আরও অনেকগুলি ছোট এসকিউএল বাক্য প্রয়োগ করে? এই সমস্ত পরামিতিগুলির কার্যকারিতার উপর প্রভাব রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.