সমস্যাটি
ব্যালেন্স ওয়েব সার্ভারগুলি লোড করতে আমি হ্যাপ্রোক্সি ব্যবহার করছি। আমি অতিরিক্ত কুকিগুলির সাথে সেশন অধ্যবসায় ব্যবহার করি কারণ কিছু অ্যাপ্লিকেশনগুলি সেশন ফাইলগুলি ব্যবহার করে এবং এগুলি সার্ভারের মধ্যে সিঙ্ক্রোনাইজ হয় না।
রক্ষণাবেক্ষণের জন্য আমি কোনও সার্ভার অক্ষম করতে চাই, তবে সেশন না ভেঙে। সুতরাং আমি বিদ্যমান ক্লায়েন্টদের তাদের অ্যাপ্লিকেশন সেশন চালিয়ে যাওয়ার অনুমতি দিতে চাই, তবে নতুন ক্লায়েন্টকে গ্রহণ করবেন না।
haproxy আচরণ
- আমি "রক্ষণাবেক্ষণে যেতে" একটি সার্ভার সেট করেছি
- যদি কোনও ক্লায়েন্টের কুকি সেট থাকে তবে "রক্ষণাবেক্ষণে যেতে" হিসাবে চিহ্নিত হলেও সার্ভারটি ব্যবহার করুন
- যদি কোনও নতুন ক্লায়েন্ট (কুকিবিহীন) আসে তবে এটি অন্য সার্ভারে পরিচালিত হবে
- সমস্ত ক্লায়েন্টরা তাদের অ্যাপ্লিকেশন সেশন শেষ করার পরে, আর কোনও ক্লায়েন্টের কাছে এই নির্দিষ্ট সার্ভারে কুকি সেট করা থাকবে না এবং ব্যবহারকারীর বাধা ছাড়াই এটিকে বন্ধ করে দেওয়া ভাল।
আপনি কি মনে করেন যে এটি কিছু হ্যাপ্রোক্সি কনফিগারেশন দ্বারা অর্জনযোগ্য? নাকি এটি করার কোনও চতুর উপায় আছে?
অন্যান্য উপায়
এই প্রয়োজনীয়তা অর্জনের অন্যান্য উপায়গুলির অস্তিত্বহীন তালিকা:
- সার্ভারের মধ্যে সেশন ফাইলগুলি সিঙ্ক্রোনাইজ করা (বেশ কয়েকটি সার্ভারের মধ্যে ফাইলগুলি সিঙ্ক্রোনাইজ করার জন্য একটি উপায় প্রয়োজন বা একটি সাধারণ একক মাউন্টপয়েন্ট)
- সেশন তথ্য (অ্যাপ্লিকেশন আচরণ পরিবর্তন করার প্রয়োজন) সংরক্ষণ করতে ডাটাবেস ব্যবহার করুন
আরো বিস্তারিত
আমি এই ধরণের কনফিগারেশন ব্যবহার করি:
frontend https-in
bind xxx.xxx.xxx.xxx:443 ssl crt /etc/haproxy/ssl/_default.pem crt /etc/haproxy/ssl
reqadd X-Forwarded-Proto:\ https
acl APP1 hdr(host) -i APP1.atac.local
use_backend APP1 if APP1
default_backend _default
backend APP1
redirect scheme https if !{ ssl_fc }
mode http
balance roundrobin
cookie HAPROXY_SESSION insert indirect
option httpchk HEAD /haproxy_test_page.php HTTP/1.0\nUser-Agent:\ HAProxy
server SRV1 SRV1_IP:PORT cookie SRV1 check
server SRV2 SRV2_IP:PORT cookie SRV2 check
আমি যদি কেবল এসআরভি 1 অক্ষম করি (হ্যাপ্রোক্সি ক্লাইম কমান্ড সহ), আমি মনে করি এসআরভি 1 এ খোলা সমস্ত অ্যাপ্লিকেশন সেশন বর্তমান এইচটিটিপি "সেশন" শেষ হওয়ার পরে ভেঙে যাবে। এটা কি সঠিক?