কীভাবে দুটি সার্ভারে এনগিনেক্স ডেটা প্রতিলিপি করা যায়?


14

আমি একটি নির্দিষ্ট এনগিনেক্স সার্ভার দুটি সার্ভারে প্রাপ্ত ট্র্যাফিকের প্রতিলিপি দেওয়ার চেষ্টা করছি । লক্ষ্য লোড-ব্যালেন্স নয়, সমস্ত এনগিনেক্স সার্ভারে একই ইনপুটটিকে পুনরায় খেলানো।

একটি উদাহরণ: এনগিনেক্স একটি এইচটিটিপি পোস্ট পায়। আমি এই একই পোস্টটি অন্য সার্ভারে প্রেরণ করতে চাই।

** হালনাগাদ **

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

ব্যবহারকারী -> পোস্ট ডেটা -> এনজিএনএক্স ইনস্ট্যান্স ---- মুক্তি ---> সার্ভার 1 এবং সার্ভার 2


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

আপনি যা জিজ্ঞাসা করছেন বলে মনে হচ্ছে তা আরও নির্ভুলভাবে প্রতিবিম্বিত করতে আমি আপনাকে প্রশ্নটি পুনরায় চাপিয়ে দিয়েছি।
gWaldo

1
এ জাতীয় আচরণটি কখনও কখনও এ / বি পরীক্ষায় ব্যবহৃত হয়
gWaldo

2
এটি যাওয়ার উপায় নয়, আপনি এইচটিটিপি, w3.org/Protocols/rfc2616/rfc2616.html
ড্যানিয়েল প্রতা আলমেইদা

আমি এই ধরণের জিনিসটি আগে জিজ্ঞাসা করেছি seen আমি মনে করি আপনি যা দেখতে চান তা "এইচটিপি পুনরায় খেলুন" হিসাবে অনুসন্ধান করা যেতে পারে।
gWaldo

উত্তর:


10

আমি পোস্ট_অ্যাকশন স্থিতি ব্যবহার করে প্রতিলিপি করতে সক্ষম হয়েছি।

upstream main_upstream {
least_conn;
server 192.168.9.10:80;
keepalive 1024;
}

server {
listen 80;
server_name _;
client_body_buffer_size 1512k;
client_max_body_size 10m;

location /1/ {
fastcgi_pass main_upstream;
post_action @replayevent ;

}
# Send the post_action request to a FastCGI backend for logging.
location @replayevent {
fastcgi_pass 192.168.9.14:80;
}

এখন এটি ডেটা দুটি সার্ভার প্রেরণ করে।

যদি আপনার উজানটি ফাস্টসিজি সমর্থন করে না (আমার ক্ষেত্রে ঘটেছে), প্রক্সি_পাস দিয়ে প্রতিস্থাপন করুন।


4

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

একটি বিকল্প হ'ল বার্নিশের মতো কিছু ব্যবহার করা এবং বার্নিশ্রেপ্লে ব্যবহার করে দ্বিতীয় রিয়ার সার্ভারে একটি রিপ্লে করা:

https://www.varnish-cache.org/docs/2.1/reference/varnishreplay.html

আমি এটি ব্যবহার করি নি, তাই আমি জানি না আপনি এটি প্রথম রিয়ার সার্ভারের সাথে ট্র্যাফিকটিকে প্রায় একই সাথে পুনরায় খেলতে পারবেন কিনা।


3

আপনি যা ব্যবহার করতে চান তা হ'ল ইএম-প্রক্সি [1] এর মতো। এটি সহজেই যে কোনও সংখ্যক সার্ভার জুড়ে বিভক্ত HTTP অনুরোধগুলি পরিচালনা করে। এটি কেবলমাত্র লাইভ সার্ভার থেকে ফিরিয়ে নেওয়া ডেটা সঠিকভাবে পরিচালনা করে এবং অন্যকে অবরুদ্ধ করে যাতে ব্যবহারকারী একাধিক প্রতিক্রিয়া না পান।

[1] https://github.com/igrigorik/em-proxy/


2

এনএফএস সার্ভারের মতো কেন্দ্রীয় স্টোরেজ ব্যবহার করুন এবং প্রতিটি এনগিনেক্স ওয়েব নোড এনএফএস শেয়ার (ফাইল-স্তর) মাউন্ট করে। অথবা ওসিএফএস 2 এর মতো একটি ক্লাস্টার ফাইল সিস্টেম ব্যবহার করুন এবং প্রতিটি ওয়েব নোড LUN / পার্টিশন (ব্লক-স্তর) মাউন্ট করে।


পোষ্ট অনুরোধটি অগত্যা ফাইল সিস্টেমে জিনিসগুলি লিখবে না। ওপি'র আর্কিটেকচার সম্পর্কে আমাদের স্পষ্টতা দরকার।
সিজেসি

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