অ্যামাজন ক্লাউডফর্মেশনে ইসি 2 :: ইনস্ট্যান্স বা আরডিএস :: ডিবিআইস্ট্যান্স পুনরায় তৈরি করার জন্য জোর করা কি সম্ভব?


16

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

আমার স্ট্যাক এমন এক স্থানে আটকে যায় যেখানে কেবল ধ্বংস করে দেওয়া এবং উত্স তৈরি করা এটি ঠিক করে দেবে, তার পরিবর্তে আমাকে কাজ চালিয়ে যেতে পুরো স্ট্যাকটি মুছতে হয়েছিল।

সম্পাদনা:

এই সমস্যাটি আমাকে দুবার আঘাত করেছে। প্রথমে আমি একটি এডাব্লুএস :: আরডিএস :: কিছু ডিফল্ট ইনস্ট্যান্স তৈরি করেছি এবং তারপরে এটিকে "ইঞ্জিনিয়ারভিশন": "5.5" এ ডাউনগ্রেড করার চেষ্টা করেছি। এটিকে পরিবর্তন হিসাবে কিছুটা বাধা দেওয়া হয়েছিল বলে মনে করা হয়, তবে মাইএসকিএল উদাহরণগুলি 5.6 থেকে 5.5 থেকে ডাউনগ্রেড করা যায় না তাই স্ট্যাকটি UPDATE_FAILED অবস্থায় রেখে দেওয়া হয়েছিল এবং আমি কোনও খারাপ অভ্যাস ছাড়া আরডিএস পুনরায় তৈরি করতে সক্ষম হতে পারি না।

অন্য ঘটনাটি হ'ল আমার কাছে বেশ কয়েকটি "এডাব্লুএস :: ইসি 2 :: ইনস্ট্যান্স" রয়েছে যা এর "ইউজারডাটা" থেকে কোনও স্ক্রিপ্ট ডাউনলোড করে এবং কার্যকর করে দেয় যদি স্পষ্টভাবে ওয়াই ডাউনলোড করা স্ক্রিপ্টটি পরিবর্তন করে তবে অবশ্যই আমাকে পুনরায় সংশোধন করতে হবে এবং এটি করার কোনও উপায় নেই। মেশিনটি পুনরায় তৈরি করতে আবারও আমি একই বাজে কৌশল ব্যবহার করি।

বাজে কৌশল:

একটি মেশিনের একটি অটস্কলিং গ্রুপ ব্যবহার না করে, আমি বৈশিষ্ট্যগুলিতে প্রাপ্যতা অঞ্চল পরিবর্তন করার উভয় সমস্যার সমাধান করেছি ... তবে আমাকে খারাপ স্বাদে ফেলেছে


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

স্পষ্ট করার জন্য সম্পাদিত। : আমি এখানে জিজ্ঞাসা forums.aws.amazon.com/thread.jspa?threadID=135295&tstart=0
আস্তিক

এটি সরাসরি আপনার প্রশ্নের উত্তর দেয় না, তবে পরিবর্তিত হয়ে গেলে ইউজারডাটা স্ক্রিপ্টগুলি পুনরায় চালনার জন্য আপনি এইগুলি দেখতে পারেন cfn-hup: ডকস.এওএস.মাজোন
রিড ক্র্যাফট-মারফি

উত্তর:


10

উদাহরণস্বরূপ স্টোর-ব্যাকড ইসি 2 উদাহরণস্বরূপ, একটি কৌশলটি হ'ল সংস্করণ নম্বর, তারিখ, বা অনুরূপ সম্বলিত ব্যবহারকারী ডেটা স্ক্রিপ্টে একটি মন্তব্য যুক্ত করা, তারপরে আপনি যখনই উদাহরণটি পুনরায় তৈরি করতে চান তা পরিবর্তন করুন:

{
    "Resources" : {
        "MyEC2Instance" : {
            "Type" : "AWS::EC2::Instance",
            "Properties" : {
                // ... other properties ...
                "UserData": { 
                    "Fn::Base64" : {
                        "Fn::Join" : [ ":", [
                        "#!/bin/bash\n",
                        "# Version: 1.0\n",
                        // ... rest of user data ...
                    ]]}
            }
        }
    }
}

যে কোনও পরিবর্তনের UserDataফলে দৃষ্টান্তটি প্রতিস্থাপন করা হবে (অর্থাত্ পুনঃজন্মিত)। ব্যবহারকারীর ডেটা স্ক্রিপ্টের আচরণ একই হওয়া উচিত, যদিও একমাত্র পরিবর্তনটি একটি মন্তব্য। মনে রাখবেন যে এটি ইবিএস-সমর্থিত দৃষ্টান্তগুলির জন্য কাজ করে না।

আরডিএসের জন্য আপনি বর্তমান আরডিএস উদাহরণের একটি ডিবি স্ন্যাপশট নিতে পারেন , তারপরে সেই স্ন্যাপশটটি ব্যবহার করতে আপনার টেম্পলেটটি সংশোধন করুন DBSnapshotIdentifier:

{
    "Resources" : {
        "MyDB" : {
        "Type" : "AWS::RDS::DBInstance",
        "Properties" : {
            // ... other properties ...
            "DBSnapshotIdentifier": "<db snapshot ID>"
        }
    }    
}

যখনই DBSnapshotIdentifierপরিবর্তন করা হবে, ডাটাবেস উদাহরণটি প্রতিস্থাপন করা হবে। স্ন্যাপশট ব্যবহার করা আপনাকে স্ন্যাপশট তৈরি হওয়ার সময় থেকে ডেটা রাখতে দেয়। (আপনি যদি ডেটা মুছতে চান , আপনি একটি খালি স্ন্যাপশট তৈরি করতে পারেন এবং এটি ইনপুট হিসাবে পাস করতে পারেন Or

আরও সাধারণ উপায় হল সংস্থানটির যৌক্তিক নাম পরিবর্তন করা। থেকে একটি স্ট্যাক টেমপ্লেট পরিবর্তন CloudFormation ডক্সে:

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


দেখে মনে হচ্ছে একমাত্র সমাধান "নোংরা কৌশল" করাই আমি অনুরূপ সমাধানে পৌঁছেছি (প্রাপ্যতা অঞ্চল পরিবর্তন করতে বাধ্য করা) জিজ্ঞাসার কিছু সময় পরে :)
theশ্বরবাদী

4
কেবল ইঙ্গিত করতে চাই যে দৃষ্টান্তটি প্রতিস্থাপন করা হয়েছে এবং এভাবে ইসি 2 উদাহরণটি স্টোর-ব্যাক করা হলে ব্যবহারকারীর ডেটা কার্যকর করা হয়েছিল। যদি এটি ইবিএস ব্যাক হয় তবে ব্যবহারকারীর ডেটা পরিবর্তন কেবল উদাহরণটি পুনরায় আরম্ভ করবে এবং ব্যবহারকারী ডেটা আবার কার্যকর করা হবে না। এই ক্ষেত্রে এমনকি ইউজারডাটা আবার চালাতে আপনি সিএফএন-হুপ ব্যবহার করতে পারেন, তবে উদাহরণটি একই থাকে।
কৈসসু

@ কৈসসু: ধন্যবাদ, এটি একটি অত্যন্ত মূল্যবান স্পষ্টতা। আমি সেই অনুযায়ী আমার উত্তর আপডেট করেছি।
মার্কাস্ক

@ কৈসসু তবে আপনি যদি স্ক্রিপ্টটি ম্যানুয়ালি পুনরায় চালনা করেন (/ var / lib / মেঘ / উদাহরণ / স্ক্রিপ্ট / অংশ -001 তে অবস্থিত) আপনাকে অবশ্যই নিশ্চিত করতে হবে যে স্ক্রিপ্টটি একই কমান্ডগুলি একাধিকবার চালানোর জন্য প্রতিরক্ষামূলক :(
সি 24 ডাব্লু

1

যদি আপনি এটিকে একটি অটোসকলিং গোষ্ঠীতে রাখেন তবে আপনি অটোস্কেলিং গ্রুপটি নূন্যতম / সর্বোচ্চ / ডিফল্ট 0 তে সম্পাদনা করতে পারেন, তবে এটি পুরানো উদাহরণটি ধ্বংস করতে শুরু করার সাথে সাথে আপনি ন্যূনতম / সর্বোচ্চ / ডিফল্টটি 1/1/1 এ রাখতে পারেন এবং presto: নতুন উদাহরণ।


0

যদি আপনার ইসি 2 একটি অটোস্কেলিং গোষ্ঠীতে থাকে আপনি AutoScalingGroupNameকোনও সংস্করণ নম্বর দিয়ে সম্পত্তিটি সেট করতে পারেন ।

প্রতিবার আপনি এই সংস্করণ নম্বরটি সিএফএন পরিবর্তন করবেন: 1. একটি নতুন অটো-স্কেলিং গ্রুপ তৈরি করুন এবং পছন্দসই দৃষ্টান্তগুলি স্পিন করুন 2. পুরানো অটো-স্কেলিং গোষ্ঠীতে দৃষ্টান্তগুলি মেরে ফেলুন এবং এটি মুছুন

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

AutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
        AutoScalingGroupName: !Sub "${StackName}-${ServiceName}-${ServiceVersion}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.