আমাকে এই নিখুঁতভাবে মোকাবেলা করতে হবে এবং একটি ধারণা নিয়ে এসেছি। এই কাজের জন্য গবেষণা করার সময় আমি এখানে পৌঁছেছি, তাই আমি ভেবেছিলাম যে আমি এই পোস্টটির ভবিষ্যতের দর্শকদের সাথে আমার সমাধানটি ভাগ করব।
ডকার-রচনা-ভিত্তিক সমাধান
আপনি যদি ডকার-রচনা ব্যবহার করছেন তবে আপনি আমার ডকার সিঙ্ক্রোনাইজেশন পিওসি পরীক্ষা করে দেখতে পারেন । আমি অন্যান্য প্রশ্নের মধ্যে কিছু ধারণাগুলি একত্রিত করেছি (এর জন্য ধন্যবাদ - উত্সাহিত)।
মূল ধারণাটি হ'ল যৌগের প্রতিটি ধারক একটি ডায়াগনস্টিক পরিষেবাটি প্রকাশ করে। এই পরিষেবাটি কল করে কনটেইনারটিতে প্রয়োজনীয় বন্দরগুলির সেটটি খোলা রয়েছে এবং কনটেইনারটির সামগ্রিক স্থিতি (পিওসি অনুসারে ওয়ার্মআপ / রুনিং) প্রদান করে কিনা তা পরীক্ষা করে। যদি নির্ভরশীল পরিষেবাগুলি চালু থাকে এবং চলমান থাকে তবে প্রতিটি পাত্রে স্টার্টআপ পরীক্ষা করার জন্যও একটি উপযোগ রয়েছে। তবেই ধারকটি শুরু হয়।
উদাহরণস্বরূপ ডকার-রচনা পরিবেশে দুটি পরিষেবা সার্ভার 1 এবং সার্ভার 2 রয়েছে এবং ক্লায়েন্ট পরিষেবা যা উভয় সার্ভার শুরু হওয়ার জন্য অপেক্ষা করে তারপরে উভয়কে অনুরোধ প্রেরণ করে প্রস্থান করে।
পিওসি থেকে অংশ
অপেক্ষা_ফোর্স_সার্ভার.শ
#!/bin/bash
server_host=$1
sleep_seconds=5
while true; do
echo -n "Checking $server_host status... "
output=$(echo "" | nc $server_host 7070)
if [ "$output" == "RUNNING" ]
then
echo "$server_host is running and ready to process requests."
break
fi
echo "$server_host is warming up. Trying again in $sleep_seconds seconds..."
sleep $sleep_seconds
done
একাধিক পাত্রে অপেক্ষা করা:
trap 'kill $(jobs -p)' EXIT
for server in $DEPENDS_ON
do
/assets/wait_for_server.sh $server &
wait $!
done
ডায়াগনস্টিক srervice বেসিক বাস্তবায়ন ( চেকপোর্টস.শ ):
#!/bin/bash
for port in $SERVER_PORT; do
nc -z localhost $port;
rc=$?
if [[ $rc != 0 ]]; then
echo "WARMUP";
exit;
fi
done
echo "RUNNING";
একটি বন্দরে ডায়াগনস্টিক পরিষেবা ওয়্যারিং আপ:
nc -v -lk -p 7070 -e /assets/checkports.sh