জিরো ডাউনটাইম সহ কীভাবে একটি এএসপি.এনইটি অ্যাপ্লিকেশন স্থাপন করবেন


127

আমাদের ওয়েবসাইটের একটি নতুন সংস্করণ স্থাপন করতে আমরা নিম্নলিখিতটি করি:

  1. নতুন কোডটি জিপ আপ করুন এবং এটি সার্ভারে আপলোড করুন।
  2. লাইভ সার্ভারে, আইআইএস ওয়েবসাইট ডিরেক্টরি থেকে সমস্ত লাইভ কোড মুছুন।
  3. এখনি খালি আইআইএস ডিরেক্টরিতে নতুন কোড জিপফাইলে বের করুন

এই প্রক্রিয়াটি সমস্ত স্ক্রিপ্টযুক্ত এবং খুব দ্রুত ঘটে যায়, তবে পুরানো ফাইলগুলি মুছে ফেলা হচ্ছে এবং নতুন ফাইলগুলি স্থাপন করা হওয়ার পরে 10-10 সেকেন্ড ডাউনটাইম থাকতে পারে।

0 সেকেন্ড ডাউনটাইম পদ্ধতিতে কোনও পরামর্শ?


এটি সার্ভারফল্টে থাকা উচিত নয়?
ড্যানিয়েল রদ্রিগেজ

49
সম্ভবত, তবে সার্ভারফল্ট সেপ্টেম্বর '08-এ উপস্থিত ছিল না
কার্ল গ্লেনন

3
আইআইএস কি কোনও সিমলিংক ফোল্ডারে নির্দেশ করতে পারে? সিমলিংক পরিবর্তনের ফলে আইআইএস প্রক্রিয়াটি পুনর্ব্যবহারের কারণ হবে?
নিল ম্যাকগুইগান

পূর্ণ উত্স কোড স্ক্রিপ্ট নমুনা সঙ্গে কোন চূড়ান্ত সমাধান?
কিকিনেট

একাধিক অ্যাপ পুল থাকা এবং ট্র্যাফিকটি একটি অ্যাপ পুল থেকে অন্যটিতে স্যুইচ করা কি সম্ভব নয়?
লুক

উত্তর:


79

আপনার 2 টি সার্ভার এবং একটি ভারসাম্য ভারসাম্য প্রয়োজন। পদক্ষেপে এখানে:

  1. সমস্ত ট্র্যাফিক সার্ভার 2-এ চালু করুন
  2. সার্ভারে স্থাপন করুন 1
  3. পরীক্ষার সার্ভার 1
  4. সমস্ত ট্র্যাফিক সার্ভার 1-এ চালু করুন
  5. সার্ভার 2 এ স্থাপন করুন
  6. পরীক্ষার সার্ভার 2
  7. উভয় সার্ভারে ট্র্যাফিক চালু করুন

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


4
আপনি লোড ব্যালেন্সারটিও কনফিগার করতে পারেন যাতে এটি প্রদত্ত সার্ভারের জন্য বিদ্যমান সেশনগুলিতে পরিষেবা দেয় তবে নতুনটি গ্রহণ করে না। এটি আপনাকে সেশনগুলি বাদ দেওয়ার এড়াতে সহায়তা করে। এই কৌশলটির জন্য সেশনগুলি শেষ হওয়ার অপেক্ষার প্রয়োজন রয়েছে এবং সাধারণভাবে আপনি এটির স্ক্রিপ্ট করতে চান।

35
কোড রোলের ডাটাবেসে কাঠামোগত পরিবর্তন থাকলে এই পদ্ধতিটি নেমে আসে tend আপনি একবার সার্ভার 1 এর জন্য ডিবি আপগ্রেড করলে সার্ভার 2 বিস্ফোরিত হবে। এখন আপনি সার্ভার 1 তে টেস্টিংয়ের জন্য ডাটাবেসটিকে ব্যাকআপ / পুনরুদ্ধার করতে পারেন, তবে সমান্তরাল অনুলিপি চলাকালীন আপনার কাছে লাইভ ডিবিতে পরিবর্তিত ডেটা বাছাইয়ের বিষয়টি রয়েছে।
ইবার

1
@ আন্ড্রেইরিনা - আপনি কীভাবে ভাবেন যে এটি একটি উচ্চ পরিমাণের ওএলটিপি সিস্টেমে কাজ করবে? হয় সিস্টেম সিঙ্কের বাইরে চলে যায় এবং আপনি যখন কেটে ফেলেন তখন ডেটা আলগা করে দেয়, অথবা আপনাকে নতুন ডিবি কাঠামোর মধ্যে ট্রানজিটরি ডেটা সনাক্ত ও স্থানান্তর করতে ডেটা এন্ট্রি থামিয়ে স্ক্রিপ্ট লিখতে হবে।
EBarr

9
@ ইবার: এবং কোনও ক্ষেত্রে প্রযুক্তিগতভাবে আপনার এখনও এএসপি.এনইটি অ্যাপে শূন্য ডাউনটাইম রয়েছে - প্রশ্নটি "শূন্য ডাউনটাইম সহ একটি স্কিল সার্ভার ডিবিতে কীভাবে স্থাপন করা যায়" তা নয়।
Sklivvz

6
এগুলির কীটি এমনভাবে বিকাশ করা যাতে আপনার স্কেল পরিবর্তনগুলি ধ্বংসাত্মক না হয়। একবারে আর ব্যবহার না করা হলে আপনাকে প্রায়শই নিম্নলিখিত রিলিজে ধ্বংসাত্মক স্কয়ার পরিবর্তন করতে হয়। অনুশীলন করা কঠিন নয়।
বিলার

60

মাইক্রোসফট ওয়েব ডিপ্লোয়মেন্ট টুল কিছু মাত্রায় এই সমর্থন করে:

উইন্ডোজ ট্রানজেকশনাল ফাইল সিস্টেম (টিএক্সএফ) সমর্থন সক্ষম করে। যখন টিএক্সএফ সমর্থন সক্ষম থাকে, তখন ফাইল অপারেশনগুলি পারমাণবিক হয়; অর্থাৎ তারা হয় সফল হয় বা সম্পূর্ণ ব্যর্থ হয়। এটি ডেটা অখণ্ডতা নিশ্চিত করে এবং ডেটা বা ফাইলগুলিকে "আধ-রাস্তা" বা দূষিত অবস্থায় বিদ্যমান থেকে বাধা দেয়। এমএস ডিপ্লয়ে, টিএক্সএফ ডিফল্টরূপে অক্ষম থাকে।

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

আমি বিশ্বাস করি যে 0 টি ডাউনটাইমের জন্য সংস্করণ এবং আইআইএস মেটাবেস হিসাবে ফোল্ডারগুলি ব্যবহার করে আপনার স্ক্রিপ্টটি পরিবর্তন করা সম্ভব:

  • একটি বিদ্যমান পাথ / ইউআরএল জন্য:
  • এর অধীন সার্ভারে নতুন (বা সংশোধিত) ওয়েবসাইট অনুলিপি করুন
    • \ ওয়েব \ অ্যাপ্লিকেশন \ v2.1 \
  • ওয়েবসাইটের পথ পরিবর্তন করতে আইআইএস মেটাবেসটি সংশোধন করুন
    • \ ওয়েব \ অ্যাপ্লিকেশন \ 2.0 from থেকে
    • থেকে \ ওয়েব \ অ্যাপ্লিকেশন \ v2.1 \

এই পদ্ধতিটি নিম্নলিখিত সুবিধা দেয়:

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

5
আমি আমাদের পাওয়ারশেল ডিপ্লোয়মেন্ট স্ক্রিপ্টগুলি মানিয়ে এই পদ্ধতির প্রয়োগ করেছি। আপনি স্ক্রিপ্টের সেই অংশটি দেখতে পারেন যা এখানে আইআইএস সাইট ফোল্ডারটি পরিবর্তন করে: stackoverflow.com/questions/330608/… পয়েন্টারের জন্য ধন্যবাদ।
কার্ল গ্লেনন 16

17
দুর্ভাগ্যক্রমে, এই পদ্ধতিটি ডিবিতে কাঠামোগত পরিবর্তনগুলির জন্য অ্যাকাউন্ট করে না। একবার আপনি V2.1 এর জন্য ডিবি আপগ্রেড করুন তারপরে v.2.0 বিস্ফোরিত হবে।
ইবার

8
টিএমএফ ব্যবহার করা এখানে ওভারকিল, আইএমও। একই সাথে ফাইল সিস্টেমে v2.0 এবং v2.1 উভয়ই রাখতে কোনও ক্ষতি করে না। V2.1 অনলাইনে গেলে বড় পরিবর্তন ঘটে এবং ততক্ষণে, TxF লেনদেন প্রতিশ্রুতিবদ্ধ হয়। টিআইএসএফের কারণে নয়, আইআইএস যেভাবে পুরানো অ্যাপপুল থেকে নতুনে চলেছে তার কারণেই সত্যই ঘটে যায়।
রিকএনজেড

5
এটির সাথে আর একটি সমস্যা হ'ল যদি অ্যাপ ফোল্ডারগুলির সাবফোল্ডারগুলিতে প্রচুর পরিমাণে ব্যবহারকারী ডেটা সংরক্ষণ করা হয়।
কেনি এভিট

4
এটি 0 সেকেন্ডের স্থাপনা নয় কারণ নতুন অ্যাপ্লিকেশনটি শুরু করা দরকার।
usr

12

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

একটি সম্পূর্ণ টিউটোরিয়াল এখানে পাওয়া যাবে।


7

আমি সম্প্রতি এটি পেরিয়েছি এবং আমি যে সমাধানটি নিয়ে এসেছি তা হল আইআইএসে দুটি সাইট স্থাপন এবং তাদের মধ্যে স্যুইচ করা।

আমার কনফিগারেশনের জন্য আমার প্রতিটি এ এবং বি সাইটের জন্য একটি ওয়েব ডিরেক্টরি ছিল: সি: ran ইন্ট্রানেট \ লাইভ এ \ ইন্টারফেস সি: \ ইন্ট্রনেট \ লাইভ বি \ ইন্টারফেস

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

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


1
ফাইল অনুলিপির কারণে এটি ডাউনটাইমের সাথে সহায়তা করে, তবে @ স্ক্লাইভজ-এর মতোই সমস্যাটি রয়েছে - কোড রোলটি ডাটাবেসে কাঠামোগত পরিবর্তন আসার সাথে সাথে সাইটটি বর্ধমান হয়ে উঠবে।
ইবার

এটি আমার কাছেও স্বজ্ঞাত উপায় বলে মনে হয়েছিল, তবে কেন এটি করার কোনও সহজ, অন্তর্নির্মিত উপায় নেই?
পেট্রাস থেরন

3
@ ইবারের তারপরে ধ্বংসাত্মক স্কেল পরিবর্তনগুলি রোল আউট করবেন না। উদাহরণস্বরূপ, যদি আপনার কোনও কলাম অপসারণ করতে হয়, পরবর্তী প্রকাশে এটি আর বা বি দ্বারা আর ব্যবহার করা হয় না
বিলার

@ বিলার - সম্মত হয়েছেন (সতর্কতার সাথে) code "কোড রোলসের সময় ডাউনটাইম" নিয়ে এই প্রশ্নগুলির একটি সম্পূর্ণ সিরিজ রয়েছে। আমার এখনও একটি ডিবি স্কিমার বিকশিত হওয়ার বাস্তবতা নিয়ে সত্যই আলোচনা করা একটি সন্ধান করতে পেলাম। ক্যাভেট - স্কিমার দ্বি-পর্যায়ে পরিবর্তনগুলির সাথে বিভিন্ন ধরণের জটিলতা রয়েছে। একটি উদাহরণ - অনেকগুলি ORM বার্ফ যদি টেবিল সংজ্ঞাটি বোঝে তবে সংজ্ঞা থেকে আলাদা হয় (নতুন বা অনুপস্থিত কলাম)।
EBarr

2
@ রব কীভাবে সাইটটি বন্ধ করা হয় আপনি কীভাবে "প্রাক-উষ্ণ" করতে পারেন?
অ্যান্ড্রু জি

7

মাইক্রোসফ্ট.ওয়েব.এডমিনিস্ট্রেশনের সার্ভার ম্যানেজার ক্লাস ব্যবহার করে আপনি নিজের ডিপ্লোমেন্ট এজেন্ট বিকাশ করতে পারেন।

কৌশলটি হ'ল ভার্চুয়াল ডাইরেক্টরির ফিজিক্যালপ্যাথ পরিবর্তন করা, যার ফলস্বরূপ পুরানো এবং নতুন ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে একটি অনলাইন অ্যাটমিক স্যুইচ।

সচেতন থাকুন যে এর ফলস্বরূপ পুরানো এবং নতুন অ্যাপডোমেনগুলি সমান্তরালে সম্পাদন করতে পারে!

সমস্যাটি কীভাবে ডাটাবেসগুলিতে পরিবর্তনগুলি সিঙ্ক্রোনাইজ করা যায় ইত্যাদি is

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

একটি অ্যাপডোমাইনকে জোর করার জন্য আপনাকে একটি HTTP অনুরোধ করতে হবে (আইআইএস 7.5 অটোস্টার্ট বৈশিষ্ট্য সমর্থন করে)

নতুন অ্যাপডোমেনের জন্য অনুরোধগুলি ব্লক করার এখন আপনার একটি উপায় দরকার। আমি একটি নামযুক্ত মুটেক্স ব্যবহার করি - যা স্থাপনা এজেন্টের দ্বারা তৈরি এবং মালিকানাধীন, নতুন ওয়েব অ্যাপ্লিকেশনটির অ্যাপ্লিকেশন_স্টার্ট দ্বারা অপেক্ষা করা হয়েছিল এবং তারপরে ডেটাবেস আপডেট হওয়ার পরে ডিপ্লোমেন্ট এজেন্ট দ্বারা প্রকাশ করা হয়।

(মুটেক্স ওয়েট আচরণটি সক্ষম করতে আমি ওয়েব অ্যাপে একটি মার্কার ফাইল ব্যবহার করি) নতুন ওয়েব অ্যাপটি চালু হয়ে গেলে আমি চিহ্নিতকারী ফাইলটি মুছি।


6

ঠিক আছে তাই যেহেতু সবাই ২০০৮ সালে আমার লেখা উত্তরটি নিম্নমুখী করছে * ...

2014 এ আমরা এটি এখন কীভাবে করব তা আমি আপনাকে বলব Web আমরা আর ওয়েব সাইটগুলি ব্যবহার করি না কারণ আমরা এখন এএসপি.নেট এমভিসি ব্যবহার করি।

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

এছাড়াও, আমরা মাইক্রোসফ্টের সর্বশেষ উইজার্ডের উপর নির্ভর করি না - খুব ধীর এবং খুব বেশি লুকানো যাদু এবং এর নাম পরিবর্তন করার ঝুঁকিপূর্ণ।

আমরা এটি কীভাবে করব তা এখানে:

  1. আমাদের একটি পোস্ট বিল্ড স্টেপ রয়েছে যা ডিএলএলগুলি একটি 'বিন-পাব' ফোল্ডারে তৈরি করে।

  2. আমরা প্রোডাকশন সার্ভার পর্যন্ত পরিবর্তিত ফাইলগুলি (এফটিপি-র উপরে কারণ এটি ব্যাপকভাবে সমর্থিত) যাচাই ও সিঙ্ক করতে তুলনা ছাড়িয়ে (যা দুর্দান্ত **) ব্যবহার করি use

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

এটি ডাউনটাইম কেবল মিলিসেকেন্ড। অ্যাপ্লিকেশন পুনঃসূচনাটি দ্বিতীয় বা দুটি নিতে পারে তবে পুনঃসূচনা করার সময় অনুরোধগুলি বাফার হয় তাই কার্যকরভাবে ডাউন শুরুর সময় আছে।

কতগুলি ফাইল পরিবর্তন করা হয়েছে এবং কতগুলি পর্যালোচনা করতে হবে তার উপর নির্ভর করে পুরো স্থাপনার প্রক্রিয়াটি 5 সেকেন্ড থেকে 30 মিনিট পর্যন্ত সময় নেয়।

এইভাবে আপনাকে কোনও সম্পূর্ণ ওয়েবসাইটকে আলাদা ডিরেক্টরিতে অনুলিপি করতে হবে না কেবল কেবল বিন ফোল্ডারটিতে। প্রক্রিয়াটির উপরেও আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে এবং ঠিক কী পরিবর্তন হচ্ছে তা জানেন।

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

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


তবে, আপনি এখনও ডাউনটাইম পাবেন কারণ অ্যাপ পুলটি পুনরায় ব্যবহার করে cy
টেস্টপ্যাটার্ন

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

5

আমি একমাত্র শূন্য ডাউনটাইম পদ্ধতিগুলিতে কমপক্ষে 2 টি সার্ভারে হোস্টিং জড়িত থাকার কথা ভাবতে পারি।


1

আমি একক সার্ভারের জন্য নীচে জর্জের উত্তরটি কিছুটা পরিমার্জন করব:

  1. কোনও একক ডিএলএলতে সাইটটি প্রাক-সংকলন করতে একটি ওয়েব ডিপ্লোয়মেন্ট প্রকল্প ব্যবহার করুন
  2. নতুন সাইটটি জিপ আপ করুন এবং এটি সার্ভারে আপলোড করুন
  3. এটি সাইটের জন্য সঠিক অনুমতি সহ একটি ফোল্ডারে অবস্থিত একটি নতুন ফোল্ডারে আনজিপ করুন, সুতরাং আনজিপড ফাইলগুলি যথাযথভাবে অনুমতিগুলি উত্তরাধিকার সূত্রে প্রাপ্ত (সম্ভবত e: \ ওয়েব, সাবফোল্ডার v20090901, v20090916 ইত্যাদি) সহ
  4. সাইটযুক্ত ফোল্ডারের নাম পরিবর্তন করতে আইআইএস ম্যানেজার ব্যবহার করুন
  5. পুরানো ফোল্ডারটি কিছু সময়ের জন্য রাখুন, যাতে সমস্যা হওয়ার পরে আপনি এতে পিছনে আসতে পারেন

চতুর্থ ধাপ আইআইএস কর্মী প্রক্রিয়াটিকে পুনর্ব্যবহার করার কারণ করবে।

আপনি যদি ইনপ্রোক সেশন ব্যবহার না করেন তবে এটি কেবল শূন্যকালীন; পরিবর্তে এসকিউএল মোড ব্যবহার করুন (আরও ভাল, পুরোপুরি সেশন স্টেট এড়ানো)।

অবশ্যই যখন একাধিক সার্ভার এবং / অথবা ডাটাবেস পরিবর্তন হয় তখন এটি আরও কিছুটা যুক্ত থাকে ....


1
@ স্ক্লিভিভিজেড হিসাবে একই সমস্যা - কোড রোলের ডাটাবেসে কাঠামোগত পরিবর্তন হওয়ার সাথে সাথেই এই পদ্ধতিটি নেমে আসে।
ইবার

3
এ কারণেই আমি বলেছিলাম যে যখন ডিবি পরিবর্তন হয় তখন এটি আরও জড়িত ছিল ... ডিবিতে কাঠামোগত পরিবর্তন সহ কোড রোল করা কেবল একটি স্থাপনার বিষয় নয়; কোডটিতে সমর্থন থাকতে হবে, এবং সম্ভবত ডিবিতেও।
রিকএনজেড

1

Sklivvz এর উত্তরে প্রসারিত করতে, যা কোনও ধরণের লোড ব্যালেন্সার (বা একই সার্ভারে কেবল স্ট্যান্ডবাই অনুলিপি) থাকার উপর নির্ভর করে

  1. সমস্ত ট্রাফিক সাইট / সার্ভার 2 এ পরিচালনা করুন
  2. যতটা সম্ভব ব্যবহারকারী ব্যবহারকারীর সংস্করণে ওয়ার্কফ্লো বিচারাধীন রয়েছে তা নিশ্চিত করতে toচ্ছিকভাবে কিছুটা অপেক্ষা করুন
  3. সাইট / সার্ভার 1 এ স্থাপন করুন এবং যতটা সম্ভব গরম করুন
  4. লেনদেনের মাধ্যমে ডাটাবেস স্থানান্তরগুলি কার্যকর করুন (এটি সম্ভব করার চেষ্টা করুন)
  5. তাত্ক্ষণিকভাবে সমস্ত ট্র্যাফিক সাইট / সার্ভার 1 এ পরিচালনা করুন
  6. সাইট / সার্ভার 2 এ স্থাপন করুন
  7. উভয় সাইট / সার্ভারে সরাসরি ট্র্যাফিক

একটি ডেটাবেস স্ন্যাপশট / অনুলিপি তৈরি করে কিছুটা ধূমপান পরীক্ষার সূচনা করা সম্ভব তবে এটি সবসময় সম্ভব হয় না।

যদি সম্ভব হয় এবং প্রয়োজন হয় "রাউটিং পার্থক্যগুলি" যেমন বিভিন্ন ভাড়াটে ইউআরএল: গুলি (গ্রাহক x.myapp.net) বা বিভিন্ন ব্যবহারকারী, প্রথমে গিনি পিগের একটি অজানা গোষ্ঠীতে স্থাপন করতে। যদি কিছু ব্যর্থ না হয় তবে সবার জন্য ছেড়ে দিন।

যেহেতু ডাটাবেস স্থানান্তরগুলি জড়িত, তাই পূর্ববর্তী সংস্করণে ফিরে যাওয়া প্রায়শই অসম্ভব।

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


1

আমি এটি এইভাবে করি:

সর্বনিম্ন সিস্টেমের প্রয়োজনীয়তা: সাথে
1 টি সার্ভার

  • 80 লোডে চলমান 1 লোড ব্যালেন্সার / বিপরীত প্রক্সি (যেমন এনজিনেক্স)
  • 2 এএসপি.নেট-কোর / মনো বিপরীত প্রক্সি / ফাস্টসিগি ক্রুট-জেল বা ডকার-ধারক দুটি ভিন্ন টিসিপি পোর্টে শুনছে
    (বা এমনকি কোনও দুটি স্নাতকক্ষেত্রবিহীন দুটি টিসিপি পোর্টে কেবল দুটি বিপরীত প্রক্সি অ্যাপ্লিকেশন)

কর্মধারা:

লেনদেন মাইপডেট শুরু করুন

try
    Web-Service: Tell all applications on all web-servers to go into primary read-only mode 
    Application switch to primary read-only mode, and responds 
    Web sockets begin notifying all clients 
    Wait for all applications to respond

    wait (custom short interval)

    Web-Service: Tell all applications on all web-servers to go into secondary read-only mode 
    Application switch to secondary read-only mode (data-entry fuse)
    Updatedb - secondary read-only mode (switches database to read-only)

    Web-Service: Create backup of database 
    Web-Service: Restore backup to new database
    Web-Service: Update new database with new schema 

    Deploy new application to apt-repository 
    (for windows, you will have to write your own custom deployment web-service)
    ssh into every machine in array_of_new_webapps
    run apt-get update
    then either 
    apt-get dist-upgrade
    OR
    apt-get install <packagename>
    OR 
    apt-get install --only-upgrade <packagename>
    depending on what you need
    -- This deploys the new application to all new chroots (or servers/VMs)

    Test: Test new application under test.domain.xxx
    -- everything that fails should throw an exception here
    commit myupdate;

    Web-Service: Tell all applications to send web-socket request to reload the pages to all clients at time x (+/- random number)
    @client: notify of reload and that this causes loss of unsafed data, with option to abort 

    @ time x:  Switch load balancer from array_of_old_webapps to array_of_new_webapps 
    Decomission/Recycle array_of_old_webapps, etc.

catch
        rollback myupdate 
        switch to read-write mode
        Web-Service: Tell all applications to send web-socket request to unblock read-only mode
end try 

-7

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

নিশ্চিত নয় যে এটি "ওয়েব অ্যাপ্লিকেশন" তে সহায়তা করে যদিও (আমি মনে করি আপনি এটিই বলছেন যা আপনি ব্যবহার করছেন), তাই আমরা সর্বদা "ওয়েব সাইট" ব্যবহার করি। "ওয়েব সাইটগুলি" মোতায়েন করা আপনার সাইটটি পুনরায় আরম্ভ করে না এবং সমস্ত ব্যবহারকারীর সেশনগুলি বাদ দেয়।


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