হোস্ট জুড়ে ডকার পরিষেবাগুলি কীভাবে সংযুক্ত করবেন?


115

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

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

বিকাশের গতির ভিত্তিতে বর্তমানের সেরা অনুশীলনগুলি কী তা অনুসরণ করা শক্ত। সুতরাং আমার প্রশ্নটি মূলত:

  1. কী (যদি থাকে) ডকারে হোস্টগুলি জুড়ে লিঙ্ক করার জন্য বর্তমান প্রধান পদ্ধতি এবং এবং
  2. সরাসরি ডকার সিস্টেমে এই কার্যকারিতাটি সমর্থন করার কোনও পরিকল্পনা আছে কি?

উত্তর:


58

হালনাগাদ

ডক-শ্রমিক সম্প্রতি করেনি ঘোষণা নামক একটি নতুন সরঞ্জাম সোয়ার্ম ডকশ্রমিক অর্কেস্ট্রারচনা জন্য।

ঝাঁকুনি আপনাকে একাধিক ডকার ডেমনগুলিতে "যোগদান" করতে দেয়: আপনি প্রথমে একটি ঝাঁক তৈরি করেন, একটি মেশিনে একটি ঝাঁকনি ম্যানেজার শুরু করেন, এবং ডকার ডিমনগুলি ঝাঁকটির সনাক্তকারী ব্যবহার করে স্বর্ম ম্যানেজারকে "যোগদান" করতে পারেন। ডকার ক্লায়েন্ট ঝাঁকনি ম্যানেজারের সাথে এমনভাবে সংযোগ স্থাপন করে যেন এটি একটি নিয়মিত ডকার সার্ভার।

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

$ docker run -d -P -e constraint:storage=ssd mysql

সমর্থিত প্রতিবন্ধকতাগুলির মধ্যে "node"একটি হ'ল আপনাকে একটি নির্দিষ্ট হোস্টনামে একটি ধারক পিন করতে দেয়। ঝাঁকটি নোড জুড়ে লিঙ্কগুলিও সমাধান করে।

আমার পরীক্ষায় আমি ধারণা পেয়েছিলাম যে ঝাঁকনি এখনও স্থির স্থানে ভলিউমের সাথে খুব ভালভাবে কাজ করে না (বা কমপক্ষে তাদের লিঙ্ক করার প্রক্রিয়াটি খুব স্বজ্ঞাত নয়), তাই এটি মনে রাখা উচিত।

স্বর্ম এখন বিটা পর্বে।


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

অতিরিক্তভাবে, ডকার ক্লাস্টার-সক্ষম করতে বেশ কয়েকটি তৃতীয় পক্ষের এক্সটেনশন রয়েছে। তৃতীয় পক্ষের সমাধানগুলির মধ্যে রয়েছে:

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

2
সুতরাং মূলত এখনও পাত্রে ক্রস হোস্টগুলিকে সংযুক্ত করার কোনও উপায় নেই যা অ্যাম্বাসডোরের প্যাটার্নকে জড়িত করে না বা ডকারকে বাইপাস করে এবং সরাসরি এলএক্সসির সাথে কথা বলবে?
ব্যবহারকারী 3012759

@ ব্যবহারকারী 3012759 রাষ্ট্রদূত প্যাটার্ন হ'ল একমাত্র প্রতিষ্ঠিত নেটিভ উপায়, তবে সোর্ম (আলফায়) অন্য দেশীয় উপায় যা ডকারের শিডিয়ুলারের পরিবর্তে কাজ করে। বিলম্বিত প্রতুত্তরের জন্য দুঃখিত।
লাইস্কোনিং

স্কাইডক (এখনও: 03/2015) মাল্টি-হোস্ট সমর্থন অন্তর্ভুক্ত করে নানিবন্ধক (একটি সরল প্রকল্প যা স্কাইডিএনএসের সাথে কাজ করতে পারে) করে, তবে কনফিগারেশনটি আরও ম্যানুয়াল (পরিষেবাগুলি অবশ্যই পোর্টগুলিতে হোস্ট পোর্টে ম্যাপ করা উচিত)।
টার্টেলমনভিহ

6
আমার জলাঞ্জলি সম্পর্কে তদন্তটি সুপারিশ করে যে এটি ক্লাস্টার পরিচালনার উপর দৃষ্টি নিবদ্ধ করা হয়েছে এবং আন্তঃ-হোস্ট সংযোগের উপর নয়। এই ঘাট পরিষ্কারভাবে Docker নিজস্ব ডেমো কর্তৃক বর্ণিত যে youtube.com/watch?v=M4PFY6RZQHQ&t=3m37s
ব্রুনো Bronosky

1
@lyschoening ডকার দেশীয় মাল্টি হোস্ট নেটওয়ার্কিং ঘোষণা করেছে যে আপনি নিজের উত্তরটি আপডেট করতে চাইতে পারেন
টমাসলেভিল

15

আপডেট 3

Libswarm হিসাবে নতুন নামকরণ করা হয়েছে সোয়ার্ম এবং এখন একটি পৃথক অ্যাপ্লিকেশন।

শুরুর পয়েন্ট হিসাবে ব্যবহার করার জন্য এখানে গিথুব পৃষ্ঠার ডেমো রয়েছে:

# create a cluster
$ swarm create
6856663cdefdec325839a4b7e1de38e8

# on each of your nodes, start the swarm agent
#  <node_ip> doesn't have to be public (eg. 192.168.0.X),
#  as long as the other nodes can reach it, it is fine.
$ swarm join --token=6856663cdefdec325839a4b7e1de38e8 --addr=<node_ip:2375>

# start the manager on any machine or your laptop
$ swarm manage --token=6856663cdefdec325839a4b7e1de38e8 --addr=<swarm_ip:swarm_port>

# use the regular docker cli
$ docker -H <swarm_ip:swarm_port> info
$ docker -H <swarm_ip:swarm_port> run ... 
$ docker -H <swarm_ip:swarm_port> ps 
$ docker -H <swarm_ip:swarm_port> logs ...
...

# list nodes in your cluster
$ swarm list --token=6856663cdefdec325839a4b7e1de38e8
http://<node_ip:2375>

আপডেট 2

অফিসিয়াল পদ্ধতির এখন এখানে একটি ডেমো দেখতে ল্যাবসওয়ার্ম ব্যবহার করা

হালনাগাদ

একটা চমৎকার টুকরো কথা আছে Docker মধ্যে openvswitch হোস্ট যোগাযোগের জন্য একই পদ্ধতির ব্যবহার করে।

পরিষেবা আবিষ্কারের অনুমতি দেওয়ার জন্য ডিএনএসের উপর ভিত্তি করে একটি আকর্ষণীয় পদ্ধতির নাম রয়েছে যার নাম স্কাইডক

একটি স্ক্রিনকাস্টও রয়েছে


এটি ধাঁধার একই টুকরা ব্যবহার করে তবে উপরে ভ্লানগুলি যুক্ত করেও এটি একটি দুর্দান্ত নিবন্ধ:

http://fbevmware.blogspot.it/2013/12/coupling-docker-and-open-vswitch.html

সমাধানের দৃust়তার সাথে প্যাচিংয়ের কোনও সম্পর্ক নেই। ডকার আসলে লিনাক্স কনটেইনারগুলির উপর কেবল এক ধরণের ডিএসএল এবং এই নিবন্ধগুলির উভয় সমাধান কেবল কিছু ডকার স্বয়ংক্রিয় সেটিংস বাইপাস করে সরাসরি লিনাক্স কনটেইনারগুলিতে ফিরে যায়।

সুতরাং আপনি সমাধানগুলি নিরাপদে ব্যবহার করতে পারেন এবং ডকার একবার এটি কার্যকর করে নিলে আরও সহজ উপায়ে এটি করতে সক্ষম হওয়ার জন্য অপেক্ষা করতে পারেন।


2
ইদানীং স্বল্পদৈর্ঘ্যে খুব বেশি কার্যকলাপ হয়নি activity আমি ভাবছি যদি ডকার দলটি অন্য কোনও দিকে এগিয়ে চলেছে?
রমন

12

বুনা হ'ল একটি নতুন ডকার ভার্চুয়াল নেটওয়ার্ক প্রযুক্তি যা টিসিপি / ইউডিপি-তে ভার্চুয়াল ইথারনেট স্যুইচ হিসাবে কাজ করে - আপনার যা দরকার তা আপনার হোস্টের ওয়েইভ চলমান একটি ডকার ধারক।

কি আকর্ষণীয় এখানে

  • লিঙ্কগুলির পরিবর্তে, আপনার ভার্চুয়াল নেটওয়ার্কে স্থির আইপি / হোস্টনাম ব্যবহার করুন
  • হোস্টগুলিকে সম্পূর্ণ সংযোগের প্রয়োজন নেই, পিয়ারগুলি উপলভ্য রয়েছে তার উপর ভিত্তি করে একটি জাল তৈরি হয় এবং প্যাকেটগুলি মাল্টি-হপ যেখানে তাদের যেতে হবে সেখানে যেতে হবে to

এটি আকর্ষণীয় পরিস্থিতিতে বাড়ে

  • ডব্লিউএএন জুড়ে একটি ভার্চুয়াল নেটওয়ার্ক তৈরি করুন, ডকারের ধারকরা কেউই আসল নেটওয়ার্কে বসে তা জানতে বা তাদের যত্ন নেবে না
  • আপনার ধারকগুলি বিভিন্ন শারীরিক ডকার হোস্টে সরান, তাঁত সেই অনুসারে পিয়ারটি সনাক্ত করবে

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


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

এখানে আমি এটি কীভাবে দেখব: ডকার রচনাটি কনটেইনার লিঙ্কিং এবং অর্কেস্টেশন সম্পর্কে, ডকার সোর্মটি অনেকগুলি ডকার হোস্ট, সকেটপ্লেন (বর্তমানে ডকারের মালিকানাধীন) জুড়ে ডকার চালানোর বিষয়ে এবং ওয়েভ উভয়ই ওভারলে নেটওয়ার্ক। সকেটপ্লেইন ওপেনভুইচবিচের উপর ভিত্তি করে তৈরি করা হয় যা সাধারণত ভিএমগুলিতে (যেমন ওপেনস্ট্যাক) ওভারলেগুলির জন্য ব্যবহৃত হয়; অন্যদিকে তাঁত কেবলমাত্র ডকার er এই সমস্তগুলির মধ্যে, মেসোস / কুবারনেটস / ল্যাটিস ডকার সিআলআইয়ের চেয়ে কিছুটা পৃথক ব্যবহারকারীর অভিজ্ঞতা এবং স্কেলিবিলিটি স্তর সহ ডকার সোর্মের প্রতিস্থাপন।
স্টুয়ার্ট চার্লটন

7

হালনাগাদ

ডকার 1.12 তথাকথিত জলাভূমি মোড এবং একটি serviceবিমূর্ততা যোগ করে । তারা সম্ভবত প্রতিটি ব্যবহারের ক্ষেত্রে যথেষ্ট পরিপক্ক নয়, তবে আমি আপনাকে তাদের পর্যবেক্ষণে রাখার পরামর্শ দিচ্ছি। স্বর্ম মোড কমপক্ষে একটি বহু-হোস্ট সেটআপে সহায়তা করে, যা অগত্যা লিঙ্কিং সহজ করে না। ডকার-অভ্যন্তরীণ ডিএনএস সার্ভারের (১.১১ সাল থেকে) আপনার ধারক নামগুলি অ্যাক্সেস করতে সহায়তা করা উচিত, যদি সেগুলি সুপরিচিত হয় - যার অর্থ একটি জলাবদ্ধ প্রসঙ্গে উত্পন্ন নামগুলি সম্বোধন করা এত সহজ হবে না।


ডকার 1.9 রিলিজের সাথে আপনি মাল্টি হোস্ট নেটওয়ার্কিংয়ে তৈরি হবেন । তারা সহজে একটি ওয়ার্কিং ক্লাস্টারের ব্যবস্থা করার জন্য একটি উদাহরণ স্ক্রিপ্ট সরবরাহ করে।

আপনার একটি কে / ভি স্টোরের প্রয়োজন হবে (যেমন কনসাল) যা প্রতিটি হোস্টের বিভিন্ন ডকার ইঞ্জিনের মধ্যে রাজ্য ভাগ করতে দেয়। প্রতিটি ডকার ইঞ্জিনকে সেই কে / ভি স্টোরের সাথে কনফিগার করতে হবে এবং তারপরে আপনি আপনার হোস্টগুলিকে সংযুক্ত করতে স্বর্ম ব্যবহার করতে পারেন।

তারপরে আপনি এটির মতো একটি নতুন ওভারলে নেটওয়ার্ক তৈরি করুন:

$ docker network create --driver overlay my-network

পাত্রে এখন রান প্যারামিটার হিসাবে নেটওয়ার্ক নামের সাথে চালানো যেতে পারে:

$ docker run -itd --net=my-network busybox

ইতিমধ্যে চলমান অবস্থায় এগুলি কোনও নেটওয়ার্কের সাথেও সংযুক্ত থাকতে পারে:

$ docker network connect my-network my-container

আরও বিবরণ ডকুমেন্টেশনে পাওয়া যায় ।


6

নিম্নলিখিত নিবন্ধটি একাধিক হোস্টে ডকার পাত্রগুলি কীভাবে সংযুক্ত করতে হবে তা সুন্দরভাবে বর্ণনা করেছে: http://goldmann.pl/blog/2014/01/21/conecteding-docker-containers-on-m Multipleple-hosts/


1
এটি আসলেই খুব সুন্দর সমাধান; আমি এটি জুড়ে এসেছি। আমি যে বিষয়ে উদ্বিগ্ন তা হ'ল নিবন্ধটি কেবল গতকালই পোস্ট করা হয়েছিল এবং এটি একটি ডকার প্যাচের প্রয়োজন। (এটি কতটা সাম্প্রতিক পোস্ট করা হয়েছে তা প্রদত্ত আমি তাদের অপেক্ষা করতে চাই যে তারা সেই প্যাচটি ডকারে একীভূত করেছে)।
22:36

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

2
এটি একটি উত্তর নেই। সংযুক্ত নিবন্ধ থেকে উত্তরটি অনুলিপি করুন। এটি এসও স্ট্যান্ডার্ড।
ব্রুনো ব্রোনোস্কি

6

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

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

দ্রষ্টব্য: আমি জানি যে আমার প্রথম গিস্টের দিকে ইঙ্গিত করার জন্য আরও একটি উত্তর রয়েছে তবে উত্তরটি সম্পাদনা করতে বা মন্তব্য করার মতো পর্যাপ্ত কর্মফল আমার কাছে নেই।


আপনি কীভাবে পরিষেবা সনাক্তকরণ করবেন? বলুন যদি আমার একটি মেশিনে রেডিস এবং অন্য মেশিনে ক্লায়েন্ট অ্যাপ্লিকেশন থাকে তবে ক্লায়েন্ট অ্যাপ্লিকেশন কীভাবে রেডিস পরিষেবার আইপি পাবে?
লাইস্কোনিং

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

1

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

অন্যদিকে, হোস্ট জুড়ে পাত্রে ওয়্যারিংয়ের জন্য রয়েছে কোরিসের ফ্ল্যানেল এবং জুনিপারের ওপেনকন্ট্রেল।


1

ডকার সুইমের মতো মনে হচ্ছে 1.14আপনাকে এটি করতে দেয়:

  • হোস্টনেমকে ধারককে আশ্বাস দিয়ে, --hostnameট্যাগ ব্যবহার করে , তবে আমি এটিকে কাজ করতে সক্ষম হইনি, ধারকরা নিযুক্ত হোস্টনামগুলি দ্বারা একে অপরকে পিং করতে সক্ষম হয় না।

  • মেশিন ব্যবহার করে পরিষেবা বরাদ্দ --constraint 'node.hostname == <host>'

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