অ্যামাজন ইসিএস (ডকার): নির্দিষ্ট আইপি ঠিকানায় বাধ্যতামূলক ধারক


24

আমি অ্যামাজন ইসিএসের সাথে খেলছি (ডকারের একটি পুনরুদ্ধার) এবং আমি খুঁজে পাচ্ছি যে এমন একটি ডকারের সক্ষমতা রয়েছে যা ইসিএস সরবরাহ করে না বলে মনে হয়। যথা, আমি একটি দৃষ্টান্তে একাধিক পাত্রে চলতে চাই এবং আইপি ঠিকানায় 1 টি মানচিত্রে ধারক 1 এ আসার অনুরোধ জানানো হয়েছে এবং আইপি ঠিকানায় 2 টি মানচিত্রে কনটেইনার 2 এ আসা অনুরোধ রয়েছে etc.

ডকারে, একটি নির্দিষ্ট আইপি ঠিকানায় একটি ধারককে বাঁধাইয়ের মাধ্যমে এটি করা হয়:

docker run -p myHostIPAddr:80:8080 imageName command

তবে অ্যামাজন ইসিএসে এটি করার কোনও উপায় বলে মনে হচ্ছে না।

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

একটি অতিরিক্ত মোড় হ'ল আমি কনটেইনার এন থেকে আউটবাউন্ড অনুরোধ করতে চাই যাতে ধারক এন এর বাহ্যিক আইপি ঠিকানা থাকে।

উপরের সমস্ত কিছু করার কোনও উপায় আছে কি?

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

{
  "bindIP": "0.0.0.0", 
  "containerPort": 8021, 
  "hostPort": 8021
},

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

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

ধন্যবাদ।


আমাদের ওয়ার্কফ্লো নিয়ে আমি একই সমস্যা করছি। aws ecs describe-container-instancesসাহায্য বলে মনে হচ্ছে না। তারা মনে হয় সত্যিই আপনাকে একটি ELB ব্যবহার করতে চাপ দিতে চায়, যা আমাদের ক্ষেত্রে বোবা ধরনের।
চার 43

: এখন এটা করতে (Q4 ই 2017) এক উপায় মনে করা হয় stackoverflow.com/a/46577872/6309
VonC

উত্তর:


4

একটি বিকল্প: প্রতিটি ক্লায়েন্টের জন্য একটি এলএলবি তৈরি করুন এবং তারপরে প্রতিটি ইএলবিতে নির্দিষ্ট ধারক নির্ধারণ করুন।

[1] http://docs.aws.amazon.com/AmamaonECS/latest/developerguide/service-load-balancing.html


13
ক্যাচ-চিং! এক ELB এর জন্য মাসে 18 টাকা। এখন, কে ইসিএসের সাথে মাইক্রোসার্ফেসিস চায়? aws.amazon.com/elasticloadbalancing/pricing
নট

1
@ ননটস আমাদের একই সমস্যা ছিল। তারপরে আমরা ল্যাম্বদা + এপিআই গেটওয়েতে স্যুইচ করেছি এবং আমাদের খরচ 10 সেন্টে চলে গেছে।
গ্রেপ

আপনি এখন পরিষেবা প্রতি 1 এর পরিবর্তে আপনার সমস্ত পরিষেবার জন্য একটি একক ALB (ক্লাসিক ELB এর পরিবর্তে) ব্যবহার করতে পারেন। তাদের হয় আলাদা আলাদা হোস্ট-নেম বা হোস্ট-নেমে বিভিন্ন পথে থাকা দরকার।
এজে ব্রাউন

4

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

আপনি প্রতিটি কন্টেইনারটির জন্য একটি টাস্ক তৈরি করেন এবং প্রতিটি কাজের জন্য একটি লক্ষ্য গ্রুপের সাথে মিলিয়ে আপনি প্রতিটি কাজের জন্য একটি পরিষেবা তৈরি করেন। এবং তারপরে আপনি মাত্র 1 ইলাস্টিক লোড ব্যালেন্সার তৈরি করেন।

অ্যাপ্লিকেশন-ভিত্তিক ইলাস্টিক লোড ব্যালান্সাররা অনুরোধকৃত পাথের ভিত্তিতে অনুরোধগুলি রুট করতে পারে। লক্ষ্য গোষ্ঠীগুলি ব্যবহার করে, আপনি elb-domain.com/11 টি ধারক, elb-domain.com/2ধারক 2, ইত্যাদিতে আগত অনুরোধগুলি রুট করতে পারেন etc.

এখন আপনি মাত্র এক ধাপ দূরে। একটি বিপরীত প্রক্সি সার্ভার তৈরি করুন।

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

server {
    server_name domain1.com;
    listen 80;
    access_log /var/log/nginx/access.log vhost;
    location / {
        proxy_pass http://elb-domain.com/1;
    }
}

অবশ্যই আপনি যদি আইপি শুনছেন তবে আপনি server_nameলাইনটি বাদ দিতে পারেন এবং কেবল একই ইন্টারফেসটি শুনতে পারেন listen

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

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


1

আপনি নিজেই ধারকটিকে রাখতে পারবেন না তবে আপনি একটি নির্দিষ্ট পাত্রে নিবেদিত একটি ইসি 2 উদাহরণ তৈরি করতে পারেন। তারপরে, যেখানে আপনাকে সেই পরিষেবাটি অ্যাক্সেস করতে হবে, আপনি পাত্রে চালিত ইসি 2 হোস্টটি উল্লেখ করতে পারেন।

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

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

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