স্বয়ংক্রিয় লিনাক্স আপডেটের জন্য সেরা অনুশীলন


11

আমরা আমাদের RHEL / RHEL- ভিত্তিক সার্ভারগুলির জন্য স্বয়ংক্রিয় আপডেটগুলি সম্পাদন করার পথে কাজ করছি।

প্রাথমিক ধারণা: পুতুল ব্যবহার করে আমরা ডিফল্ট সংগ্রহস্থলগুলি অক্ষম করি এবং আমাদের নিজস্বকে নির্দেশ করি। তারপরে, আমরা ensure => latestযে প্যাকেজগুলি স্বয়ংক্রিয়ভাবে আপডেট করতে চাই তার জন্য আমরা ব্যবহার করি।

সমস্যা: আমরা দেখছি যে কিছু পরিষেবা আপডেট (ডু) পরে পুনরায় চালু হয়।

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

সম্পাদন করা

সম্ভাব্য সমাধান: আমি একটি সমাধান জমা দিয়েছি যা @ voretaq7 এবং @wwite এর প্রস্তাবিত অনেকগুলি কার্যকর করে। আপাতত আমি যাচ্ছি সেই পথটি দেখে মনে হচ্ছে এটি। আপনার যদি অন্য পরামর্শ থাকে তবে দয়া করে মন্তব্য করুন বা একটি উত্তর জমা দিন।

উত্তর:


14

আপনার সাধারণ আপডেটের কৌশলটি দুর্দান্ত: আপনার একটি স্থানীয় রেপো রয়েছে (যা আমি আপনাকে একটি পরিবেশ পরিবেশে পরীক্ষা করে দেখি), এবং আপনি তার ভিত্তিতে সমস্ত কিছু আপডেট করেন (আমি ভাল হিসাবে ধরে নিলাম) রেপো।

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


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

অতিরিক্ত অপ্রয়োজনীয়তা হার্ডওয়্যার ব্যর্থতার ক্ষেত্রে আপনাকে সুরক্ষা দেয়, যা দীর্ঘ-পর্যাপ্ত সময় স্কেল অনিবার্য।


4
সমস্ত জিনিস পুনরায় বুট করার জন্য +1।
টম ও'কনোর

2
@ টমো কননর আমি কঠিন পদ্ধতি শিখেছি। রিবুটগুলির মধ্যে প্রায় 3 মাস অবধি আমি খুব স্বাচ্ছন্দ্য বোধ করি, তারপরে আমি ভাবতে শুরু করি যে আমি কী করছিলাম যা অদৃশ্য হয়ে যাবে। শেষ পুনরায় বুট করার পরে আমরা আসলে একটি ভিপিএন টানেল হারিয়েছি (টানেলটি হার্ড-কোডড ছিল এবং উঠে এসেছিল, তবে এর জন্য রুটটি যুক্ত করা হয়নি, তাই ... হ্যাঁ)
voretaq7

আপনার দ্বারা অনুপ্রাণিত একটি সম্ভাব্য সমাধান পোস্ট করেছেন @ voretaq7
বেলমিন ফার্নান্দেজ

@ বিমিংমেল-বিন আপনার উত্তর হিসাবে পোস্ট করা উচিত - এটি একটি যুক্তিসঙ্গত পদ্ধতির মতো বলে মনে হচ্ছে।
voretaq7

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

5

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

আর একটি বিকল্প হ'ল নির্বাচনীভাবে পরিষেবাগুলি আপডেট করা। উদাহরণস্বরূপ, আপনার সর্বদা সর্বশেষতম প্যাকেজগুলির প্রয়োজন? এটি আপডেটগুলি চালনার জন্য আপনার কারণগুলি বোঝার পিছনে ফিরে যায়। আসল লক্ষ্য কী?

আপনার নিজস্ব রেপো চালানোর সুবিধাটি হ'ল আপনি প্রকাশনা বা রোলআউটগুলি মঞ্চস্থ করতে পারেন এবং সময়সূচীটি পরিচালনা করতে পারেন। আপনার যদি এমন কোনও হার্ডওয়্যার পেরিফেরাল বা সফ্টওয়্যার বিক্রেতার রয়েছে যার জন্য RHEL 5.6 প্রয়োজন এবং এটি 5.7 এর নীচে ভেঙে যাবে? এটি আপনার নিজের প্যাকেজগুলি পরিচালনা করার জন্য একটি সুবিধা।


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

2

@ বিমিং মেল-বিন

সরলকরণ লুপ সরঞ্জামগুলির জন্য এসএসএস ব্যবহারের প্রয়োজন, পুতুল শুরু / থামানোর জন্য দূর করবে।

সবার আগে আপনাকে "নুপ" নামক একটি ভেরিয়েবল অন্তর্ভুক্ত করার জন্য আপনার প্রকাশগুলি পরিবর্তন করতে হবে যার মূল্য ENC থেকে উত্পন্ন হয়।

সুতরাং আপনার ক্লাসে এমন কিছু থাকবে:

noop => $noop_status

noop_statusআপনার ENC তে কোথায় সেট করা আছে। আপনি মান সেট যখন noop_statusথেকে true, স্পষ্ট noop মোড শুধুমাত্র চালানো হবে।

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

এটির সাথে, কোনও পরিবর্তন কেবলমাত্র নির্বাচিত হোস্টগুলিতে প্রয়োগ করা হয়।

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

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

আপনি যদি আরও গ্রানুলারিটি (এবং জটিলতা) চান তবে আপনার কাছে প্রতি ক্লাস প্যারামিটারগুলিও থাকতে পারে, পছন্দ করতে পারে noop_status_apacheClassইত্যাদি।

includeআপনি অন্যান্য ক্লাসে ক্লাস করলে এটি পরিচালনা করা কঠিন হতে পারে ।


1

@ Voretaq7 এর উত্তর ভিত্তিক সম্ভাব্য সমাধান:

  1. হার্ড কোড সংস্করণ প্যাকেজগুলির সংখ্যা puppetপ্রকাশ করে এবং আমাদের নিজস্ব সংগ্রহস্থলে প্যাকেজগুলি বজায় রাখে।

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

  3. একটি পরীক্ষা সার্ভারে আপডেট হওয়া প্যাকেজটি পরীক্ষা করুন।

  4. একবার আপডেট পরীক্ষা করা হয়, ভালো কিছু ব্যবহার funcবা psshবন্ধ করার জন্য puppetপ্রভাবিত নোড উপর এজেন্ট।

  5. puppetপ্যাকেজের নতুন সংস্করণ ক্ষতিগ্রস্থ নোডগুলিতে ইনস্টল করা আছে তা নিশ্চিত করার জন্য উদ্ভাসিত আপডেট করুন ।

  6. অবশেষে বা puppet agent --onetime && rebootব্যবহার করে সার্ভারে চালানfuncpssh

দয়া করে মন্তব্য করুন এবং এই সমাধানে বা সরল করা যেতে পারে এমন কোনও কিছুর কমতি যদি শনাক্ত করেন তবে আমাকে জানান।


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

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