ইসি পরিষেবা কার্য সংজ্ঞাটি আপডেট করে না


8

ইসি ক্লাস্টারে আমার 2 ইসি 2 দৃষ্টান্ত দিয়ে একটি পরিষেবা চলছে। এবং আমি নতুন ডকার ইমেজ নিতে টাস্ক সংজ্ঞা আপডেট করি। তবে নতুন কার্য সংজ্ঞা থাকলেও পুরানো কার্য সংজ্ঞাটি এখনও চলছে।

টাস্ক সংজ্ঞা এবং পরিষেবা আপডেট করার জন্য আমি নিম্নলিখিত কমান্ডগুলি ব্যবহার করেছি।

aws ecs register-task-definition --family service90-task --cli-input-json file://service90-task.json

aws ecs update-service --cluster service90-cluster --service service90-service --desired-count 0

TASK_REVISION=`aws ecs describe-task-definition --task-definition service90-task | egrep "revision" | tr "/" " " | awk '{print $2}' | sed 's/"$//'`

aws ecs update-service --cluster service90-cluster --service service90-service --task-definition service90-task:${TASK_REVISION} --desired-count 2

আমি বেশ কয়েকবার চেষ্টা করেছি কিন্তু কোথায় ভুল হয়ে গেছে তা বুঝতে পারি না। আমি পুরানোটির পরিবর্তে নতুন টাস্ক সংজ্ঞা চালানোর জন্য ইসি পরিষেবা পেতে চাই।

উত্তর:


7

আমি পরে যেমন জানতে পেরেছি, টাস্কটি আপডেট না করার কারণটি হ'ল কাঙ্ক্ষিত গণনাটি 2 তে সেট করা আছে এবং কেবলমাত্র 2 টি ইসি 2 উপলব্ধ রয়েছে। সুতরাং ইসিএস এজেন্ট কাজটি আপডেট করা সত্ত্বেও কাঙ্ক্ষিত গণনা ধরে রাখার চেষ্টা করে।

সমাধান - একটি অতিরিক্ত ইসি 2 উদাহরণ থাকুন (এক্ষেত্রে 3 ইসি 2 উদাহরণ)। বা পছন্দসই কাজের সংখ্যার চেয়ে একটি অতিরিক্ত উদাহরণ থাকতে পারে।

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


2

বিকল্প সমাধান হ'ল Minimum healthy percentপরিষেবাটির মোতায়েনের বিকল্প সেট করা 0, যার ফলে নতুন সংস্করণ মোতায়েনের আগে বিদ্যমান কাজগুলি বন্ধ হয়ে যায়।

এটি যুক্ত খরচ সাশ্রয় ইত্যাদির সাথে একক ই সি 2 ইনস্ট্যান্স ক্লাস্টারগুলি ব্যবহার করার অনুমতি দেয়

উত্পাদনের জন্য উপযুক্ত নয় কারণ আপনার মোতায়েনের মধ্যে ডাউনটাইম থাকবে


তদন্তের দিন এবং সার্ভারটি রিবুট করার দিন, এই উত্তর দিয়ে সমাধান! ধন্যবাদ :)
নায়ারা

2

পরিষেবাটিতে চলমান "কার্যগুলি" তে একটি কার্য-সংজ্ঞা আপডেট করার জন্য আপনাকে কার্যগুলি মুছতে হবে এবং একটি নতুন কার্য শুরু করতে হবে।

এইভাবে, আমি কার্যগুলিতে টাস্ক-সংজ্ঞাটি আপডেট করার সমস্যাটি সমাধান করি

আমি নিম্নলিখিত কোডটি লিখেছি:

    # Register a new Task definition 
    aws ecs register-task-definition --family testing-cluster --cli-input-json file://scripts/taskdefinition/testingtaskdef.json --region $AWS_REGION

    # Update Service in the Cluster
    aws ecs update-service --cluster $CLUSTER_NAME --service $SERVICE --task-definition testing-cluster --desired-count 1 --region $AWS_REGION 



    DECRIBED_SERVICE=$(aws ecs describe-services --region $AWS_REGION --cluster $CLUSTER_NAME --services $SERVICE);
    CURRENT_DESIRED_COUNT=$(echo $DECRIBED_SERVICE | jq --raw-output ".services[0].desiredCount")
    #    - echo $CURRENT_DESIRED_COUNT

    CURRENT_TASK_REVISION=$(echo $DECRIBED_SERVICE | jq -r ".services[0].taskDefinition")
    echo "Current Task definition in Service" + $CURRENT_TASK_REVISION

    CURRENT_RUNNING_TASK=$(echo $DECRIBED_SERVICE | jq -r ".services[0].runningCount")
    echo $CURRENT_RUNNING_TASK

    CURRENT_STALE_TASK=$(echo $DECRIBED_SERVICE | jq -r ".services[0].deployments | .[] | select(.taskDefinition != \"$CURRENT_TASK_REVISION\") | .taskDefinition")
    echo "Task defn apart from current service Taskdefn" +  $CURRENT_STALE_TASK
    #   - echo $CURRENT_STALE_TASK

    tasks=$(aws ecs --region $AWS_REGION list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns | map(.[40:]) | reduce .[] as $item (""; . + $item + " ")')
    echo "Tasks are as follows" 
    echo $tasks
    TASKS=$(aws ecs --region $AWS_REGION describe-tasks --cluster $CLUSTER_NAME --task $tasks);
    #    - echo $TASKS
    OLDER_TASK=$(echo $TASKS | jq -r ".tasks[] | select(.taskDefinitionArn!= \"$CURRENT_TASK_REVISION\") | .taskArn | split(\"/\") | .[1] ")
    echo "Older Task running  " + $OLDER_TASK
    for old_task in $OLDER_TASK; do
        aws ecs --region us-east-1 stop-task --cluster $CLUSTER_NAME --task $old_task
    done    

    # Run new tasks with the updated new Task-definition
    aws ecs --region $AWS_REGION run-task --cluster $CLUSTER_NAME --task-definition $CURRENT_TASK_REVISION

0

আমি দীর্ঘদিন ধরে এদিকে মাথা ফাটিয়ে যাচ্ছি এবং গত সপ্তাহ পর্যন্ত কোনও জায়গায়ই এর কার্যকর সমাধান খুঁজে পাইনি।

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

আপনি এখনই আপনার পরিষেবাটি মুছতে এই আদেশটি ব্যবহার করতে পারেন; এটা গত সপ্তাহে অসম্ভব!

aws ecs delete-service --service my-http-service --force true

আশাকরি এটা সাহায্য করবে

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