এনগিনেক্স প্রক্সি সহ স্টিকি সেশনস


10

আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা দুটি পৃথক এডাব্লুএস দৃষ্টান্তে চলছে এবং আমি আইপি ভিত্তিক "স্টিকি" বা "অবিচলিত" সেশনগুলি সক্ষম করতে চাই যাতে আমি কোনও নির্দিষ্ট উপায়ে ওয়েব সকেট প্রযুক্তির সুবিধা নিতে পারি।

আমার দুটি পৃথক সেটআপ রয়েছে যা ip_hashএই স্টিকি সেশনগুলি সক্ষম করতে উভয়ই জড়িত ।

প্রথম সেটআপে, অ্যাপ্লিকেশন প্রক্রিয়াগুলি Nginx কনফিগারেশনের মতো একই ইভেন্টে চলছে। এটি কাজ করছে , সেশনগুলি প্রত্যাশার মতো অবিচল রয়েছে।

upstream my_app {
    ip_hash;
    # local servers
    server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
    server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

দ্বিতীয় সেটআপে, আমি বাহ্যিক দৃষ্টান্তগুলিতে ইঙ্গিত করছি এবং একই প্রভাব অর্জনের চেষ্টা করছি। এই সেট আপটি কাজ করছে না । অন্য কথায়, সেশনগুলি এখনও ভারসাম্যপূর্ণ লোড হচ্ছে।

upstream my_app {
    ip_hash;
    # external servers
    server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
    server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

আমি কি ip_hashসঠিকভাবে ব্যবহার করছি ? আমি কীভাবে বাহ্যিক সার্ভারগুলির জন্য "স্টিকি" আইপি-ভিত্তিক সেশনগুলি সক্ষম করতে পারি?


আপনার Nginx "ngx_http_upstream_module" ইনস্টল করা আছে? এটি ডিফল্টরূপে অন্তর্ভুক্ত হয়েছে কিনা তা আমি জানি না। "এনগিনেক্স-ভি" সাধারণত এটির সাথে নির্মিত মডিউলগুলি আউটপুট করে। খনি (উত্স থেকে নির্মিত) এটি উল্লেখ করে না
টিম

উত্তর:


7

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

upstream my_app {
    ip_hash;
    server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
    server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

server {
    server_name my-app.com;

    location / {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        # This is necessary to pass the correct IP to be hashed
        real_ip_header X-Real-IP;

        proxy_pass http://my_app/;
        proxy_redirect off;
    }
}

7

এনগিনেক্স ডকুমেন্টেশন অনুসারে স্টিকি সেশন সমর্থনটি কেবল তাদের ব্যয়বহুল প্লাস সংস্করণের জন্য উপলব্ধ। আমি বিকল্পগুলি নিয়ে গবেষণা করে চলেছি এবং আমি যতই কাছাকাছি এসেছি সেটি হ'ল এই পুরানো কাঁটা যা এনগিনেক্স 1.5++ এর সাথে সামঞ্জস্যপূর্ণ নয় https://github.com/lusis/nginx-sticky-module

আমি একটি LUA মডিউলও তৈরি করার চেষ্টা করেছি কিন্তু পিয়ার নির্বাচনের জন্য কোনও এপিআই হুক নেই, কেবল গণনা এবং অবরুদ্ধ করার জন্য।

এনগিনেক্স প্লাস লোড ব্যালেন্সিং

হালনাগাদ

আমি আর একটি দুর্দান্ত মডিউল পেয়েছি, https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src দেখুন


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