1. ভূমিকা
Google ক্লাউডে ওয়েব সাইটগুলি স্থাপন করার অনেক উপায় রয়েছে প্রতিটি সমাধানের সাথে বিভিন্ন বৈশিষ্ট্য, ক্ষমতা এবং নিয়ন্ত্রণের স্তরগুলি অফার করে৷ Compute Engine একটি ওয়েব সাইট চালানোর জন্য ব্যবহৃত পরিকাঠামোর উপর একটি গভীর স্তরের নিয়ন্ত্রণ অফার করে, কিন্তু Google Kubernetes Engine, App Engine, বা অন্যদের মত সমাধানগুলির তুলনায় একটু বেশি অপারেশনাল ম্যানেজমেন্টের প্রয়োজন হয়৷ কম্পিউট ইঞ্জিনের সাথে, আপনার কাছে ভার্চুয়াল মেশিন, লোড ব্যালেন্সার এবং আরও অনেক কিছু সহ অবকাঠামোর দিকগুলির উপর সূক্ষ্ম নিয়ন্ত্রণ রয়েছে৷ আজ, আপনি একটি নমুনা অ্যাপ স্থাপন করবেন - ফ্যান্সি স্টোরের ইকমার্স ওয়েবসাইট - কীভাবে একটি ওয়েবসাইট স্থাপন করা যায় এবং কম্পিউট ইঞ্জিনের সাহায্যে সহজেই স্কেল করা যায়।
আপনি কি শিখবেন
- কিভাবে কম্পিউট ইঞ্জিন দৃষ্টান্ত তৈরি করতে হয়
- সোর্স ইনস্ট্যান্স থেকে ইনস্ট্যান্স টেমপ্লেট কীভাবে তৈরি করবেন
- কিভাবে পরিচালিত উদাহরণ গোষ্ঠী তৈরি করতে হয়
- কিভাবে স্বাস্থ্য পরীক্ষা এবং অটোহিলিং সেট আপ করবেন
- কিভাবে HTTP(S) লোড ব্যালেন্সিং তৈরি করবেন
- লোড ব্যালেন্সারের জন্য স্বাস্থ্য পরীক্ষা কীভাবে তৈরি করবেন
- ক্যাশিংয়ের জন্য কীভাবে একটি সামগ্রী-ডেলিভারি নেটওয়ার্ক ব্যবহার করবেন
কোডল্যাবের শেষে, আপনার ওয়েবসাইটের জন্য অটোহিলিং, লোড ব্যালেন্সিং, অটোস্কেলিং এবং রোলিং আপডেট প্রদান করার জন্য পরিচালিত উদাহরণ গোষ্ঠীর মধ্যে আপনার উদাহরণ থাকবে।
পূর্বশর্ত
- ধারণাগুলির প্রাথমিক ওভারভিউয়ের জন্য আমরা এই ল্যাবে ব্যবহার করব, অনুগ্রহ করে নীচের উপাদানটি দেখুন:
- Google ক্লাউড প্ল্যাটফর্মে স্বাগতম - GCP-এর প্রয়োজনীয়তা৷
- Google ক্লাউড কম্পিউট ইঞ্জিন দিয়ে শুরু করা
- Google ক্লাউড স্টোরেজ দিয়ে শুরু করা
- শুরু করা: ক্লাউড শেল
2. পরিবেশ সেটআপ
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
- এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
Compute Engine API সক্ষম করুন৷
এর পরে, আপনাকে Compute Engine API সক্ষম করতে হবে। একটি API সক্ষম করার জন্য আপনাকে API এর জন্য পরিষেবার শর্তাবলী এবং বিলিং দায়িত্ব গ্রহণ করতে হবে৷
ক্লাউড শেলে, কম্পিউট ইঞ্জিন এপিআই সক্ষম করতে নিম্নলিখিতটি চালান:
gcloud services enable compute.googleapis.com
মেঘের শেল
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।
এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।
- ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন (পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID
তে সেট করা আছে।
gcloud auth list
কমান্ড আউটপুট
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি, কোন কারণে, প্রকল্পটি সেট করা না হয়, কেবল নিম্নলিখিত কমান্ডটি জারি করুন:
gcloud config set project <PROJECT_ID>
আপনার PROJECT_ID
খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:
ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।
echo $GOOGLE_CLOUD_PROJECT
কমান্ড আউটপুট
<PROJECT_ID>
- অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f
আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।
ক্লাউড স্টোরেজ বালতি তৈরি করুন
আমরা আমাদের বিল্ট কোড, সেইসাথে আমাদের স্টার্টআপ স্ক্রিপ্ট রাখার জন্য একটি ক্লাউড স্টোরেজ বালতি ব্যবহার করতে যাচ্ছি। ক্লাউড শেল-এ, একটি নতুন ক্লাউড স্টোরেজ বাকেট তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
gsutil mb gs://fancy-store-$DEVSHELL_PROJECT_ID
3. ক্লোন সোর্স রিপোজিটরি
আপনি আপনার ওয়েবসাইটের ভিত্তি হিসাবে মনোলিথ-টু-মাইক্রোসার্ভিসেস সংগ্রহস্থলের উপর ভিত্তি করে ফ্যান্সি স্টোরের বিদ্যমান ইকমার্স ওয়েবসাইট ব্যবহার করবেন। আপনি আপনার সংগ্রহস্থল থেকে সোর্স কোড ক্লোন করবেন যাতে আপনি কম্পিউট ইঞ্জিনে স্থাপনের দিকগুলিতে ফোকাস করতে পারেন। পরে, আপনি কম্পিউট ইঞ্জিনে আপডেটের সরলতা প্রদর্শন করতে কোডটিতে একটি ছোট আপডেট করবেন।
আপনি স্বয়ংক্রিয়ভাবে প্রজেক্টে কোড রিপোজিটরি ক্লোন করতে পারেন, সেইসাথে ক্লাউড শেল এবং বিল্ট-ইন কোড এডিটর, নিম্নলিখিত লিঙ্কের মাধ্যমে খুলতে পারেন: ক্লাউড শেল-এ খুলুন ।
বিকল্পভাবে, আপনি ক্লাউড শেলের ভিতরে নীচের কমান্ডগুলি দিয়ে সংগ্রহস্থলটি ম্যানুয়ালি ক্লোন করতে পারেন:
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices
ক্লাউড শেল কমান্ড প্রম্পটে, অ্যাপটিকে স্থানীয়ভাবে চালানোর অনুমতি দিতে কোডের প্রাথমিক বিল্ডটি চালান। স্ক্রিপ্ট চালানোর জন্য কয়েক মিনিট সময় লাগতে পারে।
./setup.sh
আপনার যথাযথ অধ্যবসায় করুন এবং আপনার অ্যাপ্লিকেশন পরীক্ষা করুন. আপনার ওয়েব সার্ভার শুরু করতে নিম্নলিখিত কমান্ডটি চালান:
cd microservices npm start
আউটপুট:
Products microservice listening on port 8082! Frontend microservice listening on port 8080! Orders microservice listening on port 8081!
ওয়েব প্রিভিউ আইকনে ক্লিক করে এবং "পোর্ট 8080 এর পূর্বরূপ" নির্বাচন করে আপনার অ্যাপের পূর্বরূপ দেখুন।
এটি একটি নতুন উইন্ডো খুলতে হবে যেখানে আপনি অভিনব স্টোরের ফ্রন্টএন্ডটি দেখতে পাবেন!
ওয়েবসাইট দেখার পর আপনি এই উইন্ডোটি বন্ধ করতে পারেন। ওয়েব সার্ভার প্রক্রিয়া বন্ধ করতে, টার্মিনাল উইন্ডোতে Control+C
( ম্যাকিন্টোশে Command+C
) টিপুন।
4. কম্পিউট ইঞ্জিন দৃষ্টান্ত তৈরি করুন
এখন যেহেতু আপনার কাজের বিকাশকারী পরিবেশ রয়েছে, আপনি কিছু কম্পিউট ইঞ্জিন দৃষ্টান্ত স্থাপন করতে পারেন! নিম্নলিখিত ধাপে, আপনি হবে:
- দৃষ্টান্তগুলি কনফিগার করতে একটি স্টার্টআপ স্ক্রিপ্ট তৈরি করুন।
- সোর্স কোড ক্লোন করুন এবং ক্লাউড স্টোরেজে আপলোড করুন।
- ব্যাকএন্ড মাইক্রোসার্ভিসেস হোস্ট করতে একটি কম্পিউট ইঞ্জিন দৃষ্টান্ত স্থাপন করুন।
- ব্যাকএন্ড মাইক্রোসার্ভিসেস ইনস্ট্যান্স ব্যবহার করতে ফ্রন্টএন্ড কোডটি পুনরায় কনফিগার করুন।
- ফ্রন্টএন্ড মাইক্রোসার্ভিস হোস্ট করতে একটি কম্পিউট ইঞ্জিন দৃষ্টান্ত স্থাপন করুন।
- যোগাযোগের অনুমতি দিতে নেটওয়ার্ক কনফিগার করুন।
স্টার্টআপ স্ক্রিপ্ট তৈরি করুন
একটি স্টার্টআপ স্ক্রিপ্ট প্রতিবার শুরু করার সময় কী করতে হবে তা নির্দেশ দেওয়ার জন্য ব্যবহার করা হবে। এইভাবে দৃষ্টান্তগুলি স্বয়ংক্রিয়ভাবে কনফিগার করা হয়।
কোড এডিটর খুলতে ক্লাউড শেল রিবনের পেন্সিল আইকনে ক্লিক করুন।
monolith-to-microservices ফোল্ডারে নেভিগেট করুন। File > New File- এ ক্লিক করুন এবং startup-script.sh নামে একটি ফাইল তৈরি করুন।
নতুন ফাইলে, নিম্নলিখিত কোডটি পেস্ট করুন, যার মধ্যে কয়েকটি আপনি এটি পেস্ট করার পরে সম্পাদনা করবেন:
#!/bin/bash
# Install logging monitor. The monitor will automatically pick up logs sent to
# syslog.
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash
service google-fluentd restart &
# Install dependencies from apt
apt-get update
apt-get install -yq ca-certificates git build-essential supervisor psmisc
# Install nodejs
mkdir /opt/nodejs
curl https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.gz | tar xvzf - -C /opt/nodejs --strip-components=1
ln -s /opt/nodejs/bin/node /usr/bin/node
ln -s /opt/nodejs/bin/npm /usr/bin/npm
# Get the application source code from the Google Cloud Storage bucket.
mkdir /fancy-store
gsutil -m cp -r gs://fancy-store-[DEVSHELL_PROJECT_ID]/monolith-to-microservices/microservices/* /fancy-store/
# Install app dependencies.
cd /fancy-store/
npm install
# Create a nodeapp user. The application will run as this user.
useradd -m -d /home/nodeapp nodeapp
chown -R nodeapp:nodeapp /opt/app
# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/fancy-store
command=npm start
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF
supervisorctl reread
supervisorctl update
এখন, কোড এডিটরে, [DEVSHELL_PROJECT_ID] পাঠ্যটি খুঁজুন এবং নিম্নলিখিত কমান্ড থেকে আউটপুট দিয়ে প্রতিস্থাপন করুন:
echo $DEVSHELL_PROJECT_ID
উদাহরণ আউটপুট:
my-gce-codelab-253520
startup-script.sh- এ কোডের লাইন এখন নিম্নলিখিতগুলির মতো হওয়া উচিত:
gs://fancy-store-my-gce-codelab-253520/monolith-to-microservices/microservices/* /fancy-store/
স্টার্টআপ স্ক্রিপ্ট নিম্নলিখিত কাজগুলি সম্পাদন করে:
- লগিং এজেন্টের ইনস্টলেশন, যা syslog থেকে স্বয়ংক্রিয়ভাবে লগ সংগ্রহ করে
- Node.js এবং সুপারভাইজারের ইনস্টলেশন, যা একটি ডেমন হিসাবে অ্যাপটি চালায়
- ক্লাউড স্টোরেজ বাকেট থেকে অ্যাপের সোর্স কোডের ক্লোনিং এবং নির্ভরতা ইনস্টল করা
- সুপারভাইজারের কনফিগারেশন, যা অ্যাপটি চালায়, নিশ্চিত করে যে অ্যাপটি অপ্রত্যাশিতভাবে প্রস্থান করা হলে বা প্রশাসক বা প্রক্রিয়া বন্ধ করে দিলে এবং অ্যাপটির stdout এবং stderr সংগ্রহ করার জন্য লগিং এজেন্টের জন্য syslog এ পাঠায়।
এখন তৈরি করা startup-script.sh ফাইলটি আপনার পূর্বে তৈরি ক্লাউড স্টোরেজ বাকেটটিতে অনুলিপি করুন:
gsutil cp ~/monolith-to-microservices/startup-script.sh gs://fancy-store-$DEVSHELL_PROJECT_ID
এটি এখন https://storage.googleapis.com/[BUCKET_NAME]/startup-script.sh- এ অ্যাক্সেসযোগ্য। [BUCKET_NAME] ক্লাউড স্টোরেজ বাকেটের নাম উপস্থাপন করে। এটি শুধুমাত্র অনুমোদিত ব্যবহারকারী এবং পরিষেবা অ্যাকাউন্টগুলি দ্বারা ডিফল্টরূপে দেখা যাবে, তাই এটি একটি ওয়েব ব্রাউজারের মাধ্যমে অ্যাক্সেসযোগ্য হবে না৷ কম্পিউট ইঞ্জিন দৃষ্টান্তগুলি স্বয়ংক্রিয়ভাবে তাদের পরিষেবা অ্যাকাউন্টগুলির মাধ্যমে এটি অ্যাক্সেস করতে সক্ষম হবে৷
ক্লাউড স্টোরেজ বালতিতে কোড কপি করুন
ইনস্ট্যান্স চালু হলে, তারা ক্লাউড স্টোরেজ বাকেট থেকে কোড টেনে নেয় যাতে আপনি কোডের '.env' ফাইলে কিছু কনফিগারেশন ভেরিয়েবল সংরক্ষণ করতে পারেন।
ক্লাউড স্টোরেজ বালতিতে ক্লোন করা কোডটি অনুলিপি করুন:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/
ব্যাকএন্ড উদাহরণ স্থাপন করুন
আপনি যে প্রথম দৃষ্টান্তটি স্থাপন করবেন তা হবে ব্যাকএন্ড উদাহরণ, যেখানে অর্ডার এবং পণ্য মাইক্রোসার্ভিস থাকবে।
একটি f1-মাইক্রো উদাহরণ তৈরি করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান যা আপনার পূর্বে তৈরি স্টার্টআপ স্ক্রিপ্ট ব্যবহার করার জন্য কনফিগার করা হয়েছে এবং একটি ব্যাকএন্ড উদাহরণ হিসাবে ট্যাগ করা হয়েছে যাতে আপনি পরে এটিতে নির্দিষ্ট ফায়ারওয়াল নিয়ম প্রয়োগ করতে পারেন:
gcloud compute instances create backend \ --machine-type=f1-micro \ --image=debian-9-stretch-v20190905 \ --image-project=debian-cloud \ --tags=backend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-$DEVSHELL_PROJECT_ID/startup-script.sh
ব্যাকএন্ডে সংযোগ কনফিগার করুন
আপনি অ্যাপের ফ্রন্টএন্ড স্থাপন করার আগে, আপনি যে ব্যাকএন্ডটি স্থাপন করেছেন তা নির্দেশ করার জন্য আপনাকে কনফিগারেশন আপডেট করতে হবে।
ব্যাকএন্ডের বাহ্যিক আইপি ঠিকানা পুনরুদ্ধার করুন, যা ব্যাকএন্ড উদাহরণের জন্য EXTERNAL_IP ট্যাবের অধীনে নিম্নলিখিত কমান্ড থেকে দেখা যেতে পারে:
gcloud compute instances list
উদাহরণ আউটপুট:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS backend us-central1-a f1-micro 10.128.0.2 34.68.223.88 RUNNING
ক্লাউড শেলের কোড এডিটরে, monolith-to-microservices > react-app ফোল্ডারে নেভিগেট করুন। কোড এডিটর মেনু থেকে, .env ফাইল দেখতে দেখুন > লুকানো ফাইল টগল করুন নির্বাচন করুন।
ব্যাকএন্ডের বাহ্যিক আইপি ঠিকানা নির্দেশ করতে .env ফাইলটি সম্পাদনা করুন। [BACKEND_ADDRESS] নীচে gcloud টুলের পূর্ববর্তী কমান্ড থেকে নির্ধারিত ব্যাকএন্ড ইনস্ট্যান্সের বাহ্যিক IP ঠিকানা উপস্থাপন করে।
REACT_APP_ORDERS_URL=http://[BACKEND_ADDRESS]:8081/api/orders
REACT_APP_PRODUCTS_URL=http://[BACKEND_ADDRESS]:8082/api/products
ফাইলটি সংরক্ষণ করুন।
প্রতিক্রিয়া-অ্যাপ পুনর্নির্মাণ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন, যা ফ্রন্টএন্ড কোড আপডেট করবে:
cd ~/monolith-to-microservices/react-app npm install && npm run-script build
ক্লাউড স্টোরেজ বালতিতে অ্যাপ কোডটি কপি করুন:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/
ফ্রন্টএন্ড উদাহরণ স্থাপন করুন
এখন কোডটি কনফিগার করা হয়েছে, আপনি ফ্রন্টএন্ড উদাহরণ স্থাপন করতে পারেন। আগের মতো একই কমান্ড দিয়ে ফ্রন্টএন্ড ইনস্ট্যান্স স্থাপন করতে নিম্নলিখিতটি চালান, কিন্তু ফায়ারওয়ালের উদ্দেশ্যে এই উদাহরণটিকে "ফ্রন্টএন্ড" হিসাবে ট্যাগ করা হয়েছে।
gcloud compute instances create frontend \ --machine-type=f1-micro \ --image=debian-9-stretch-v20190905 \ --image-project=debian-cloud \ --tags=frontend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-$DEVSHELL_PROJECT_ID/startup-script.sh
নেটওয়ার্ক কনফিগার করুন
ফ্রন্টএন্ডের জন্য পোর্ট 8080 এবং ব্যাকএন্ডের জন্য পোর্ট 8081 এবং 8082 অ্যাক্সেসের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়ম তৈরি করুন। ফায়ারওয়াল কমান্ডগুলি অ্যাপের জন্য উদাহরণ তৈরির সময় বরাদ্দ করা ট্যাগগুলি ব্যবহার করে।
gcloud compute firewall-rules create fw-fe \ --allow tcp:8080 \ --target-tags=frontend
gcloud compute firewall-rules create fw-be \ --allow tcp:8081-8082 \ --target-tags=backend
ওয়েবসাইটটি এখন কার্যকরী হওয়া উচিত। ফ্রন্টএন্ডের বাহ্যিক IP ঠিকানা নির্ধারণ করুন। ফ্রন্টএন্ড উদাহরণের EXTERNAL_IP খোঁজার মাধ্যমে ঠিকানা নির্ধারণ করা যেতে পারে:
gcloud compute instances list
উদাহরণ আউটপুট:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS backend us-central1-a f1-micro 10.128.0.2 104.198.235.171 RUNNING frontend us-central1-a f1-micro 10.128.0.3 34.69.141.9 RUNNING
দৃষ্টান্তটি শুরু হতে এবং কনফিগার হতে কয়েক মিনিট সময় লাগতে পারে৷ অ্যাপের প্রস্তুতি নিরীক্ষণ করতে নিম্নলিখিতগুলি চালান:
watch -n 5 curl http://[EXTERNAL_IP]:8080
একবার আপনি নিম্নলিখিত অনুরূপ আউটপুট দেখতে, ওয়েবসাইট প্রস্তুত করা উচিত. ওয়াচ কমান্ড বাতিল করতে কমান্ড প্রম্পটে Control+C
( Macintosh-এ Command+C
) টিপুন।
ওয়েবসাইটটি অ্যাক্সেস করতে একটি নতুন ওয়েব ব্রাউজার ট্যাব সহ http://[FRONTEND_ADDRESS]:8080-এ ব্রাউজ করুন, যেখানে উপরে নির্ধারিত EXTERNAL_IP হল [FRONTEND_ADDRESS]।
পণ্য এবং অর্ডার পৃষ্ঠাগুলিতে নেভিগেট করার চেষ্টা করুন, এটিও কাজ করা উচিত।
5. পরিচালিত উদাহরণ গোষ্ঠী তৈরি করুন
আপনার অ্যাপ্লিকেশনটিকে স্কেল করার অনুমতি দেওয়ার জন্য, পরিচালিত উদাহরণ গোষ্ঠী তৈরি করা হবে এবং ফ্রন্টএন্ড এবং ব্যাকএন্ড দৃষ্টান্তগুলিকে উদাহরণ টেমপ্লেট হিসাবে ব্যবহার করবে।
একটি পরিচালিত দৃষ্টান্ত গোষ্ঠীতে অভিন্ন দৃষ্টান্ত রয়েছে যা আপনি একটি একক অঞ্চলে একক সত্তা হিসাবে পরিচালনা করতে পারেন৷ পরিচালিত দৃষ্টান্ত গোষ্ঠীগুলি সক্রিয়ভাবে আপনার দৃষ্টান্তগুলিকে, অর্থাৎ চলমান অবস্থায় রেখে আপনার অ্যাপগুলির উচ্চ উপলব্ধতা বজায় রাখে৷ আপনি অটোহিলিং, লোড ব্যালেন্সিং, অটোস্কেলিং এবং রোলিং আপডেটগুলি প্রদান করতে আপনার ফ্রন্টএন্ড এবং ব্যাকএন্ড উদাহরণগুলির জন্য পরিচালিত উদাহরণ গোষ্ঠীগুলি ব্যবহার করবেন৷
সোর্স ইনস্ট্যান্স থেকে ইনস্ট্যান্স টেমপ্লেট তৈরি করুন
আপনি একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করার আগে, আপনাকে একটি ইনস্ট্যান্স টেমপ্লেট তৈরি করতে হবে যা গ্রুপের ভিত্তি হবে। ইনস্ট্যান্স টেমপ্লেট আপনাকে নতুন ভার্চুয়াল মেশিন (VM) দৃষ্টান্ত তৈরি করার সময় ব্যবহার করার জন্য মেশিনের ধরন, বুট ডিস্ক চিত্র বা কন্টেইনার ইমেজ, নেটওয়ার্ক এবং অন্যান্য উদাহরণ বৈশিষ্ট্য নির্ধারণ করতে দেয়। আপনি একটি পরিচালিত দৃষ্টান্ত গোষ্ঠীতে উদাহরণ তৈরি করতে বা এমনকি পৃথক দৃষ্টান্ত তৈরি করতে উদাহরণ টেমপ্লেট ব্যবহার করতে পারেন।
ইনস্ট্যান্স টেমপ্লেট তৈরি করতে, আপনার তৈরি করা বিদ্যমান দৃষ্টান্তগুলি ব্যবহার করুন।
প্রথমত, আপনাকে উভয় দৃষ্টান্ত বন্ধ করতে হবে।
gcloud compute instances stop frontend
gcloud compute instances stop backend
এখন, সোর্স ইনস্ট্যান্স থেকে ইনস্ট্যান্স টেমপ্লেট তৈরি করুন।
gcloud compute instance-templates create fancy-fe \ --source-instance=frontend
gcloud compute instance-templates create fancy-be \ --source-instance=backend
নিশ্চিত করুন যে উদাহরণ টেমপ্লেট তৈরি করা হয়েছে:
gcloud compute instance-templates list
উদাহরণ আউটপুট:
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP fancy-be f1-micro 2019-09-12T07:52:57.544-07:00 fancy-fe f1-micro 2019-09-12T07:52:48.238-07:00
পরিচালিত উদাহরণ গোষ্ঠী তৈরি করুন
আপনি দুটি পরিচালিত উদাহরণ গোষ্ঠী তৈরি করবেন, একটি ফ্রন্টএন্ডের জন্য এবং একটি ব্যাকএন্ডের জন্য। সেই পরিচালিত দৃষ্টান্ত গোষ্ঠীগুলি পূর্বে তৈরি করা উদাহরণ টেমপ্লেটগুলি ব্যবহার করবে এবং প্রতিটি গোষ্ঠীর প্রতিটিতে দুটি দৃষ্টান্ত শুরু করার জন্য কনফিগার করা হবে। দৃষ্টান্তগুলির স্বয়ংক্রিয়ভাবে নামকরণ করা হবে "বেস-ইনস্ট্যান্স-নাম" এর উপর ভিত্তি করে যা এলোমেলো অক্ষর যুক্ত করা হয়েছে।
gcloud compute instance-groups managed create fancy-fe-mig \ --base-instance-name fancy-fe \ --size 2 \ --template fancy-fe
gcloud compute instance-groups managed create fancy-be-mig \ --base-instance-name fancy-be \ --size 2 \ --template fancy-be
আপনার অ্যাপ্লিকেশনের জন্য, ফ্রন্টএন্ড মাইক্রোসার্ভিস পোর্ট 8080 এ চলে এবং ব্যাকএন্ড মাইক্রোসার্ভিস অর্ডারের জন্য পোর্ট 8081 এবং পণ্যের জন্য পোর্ট 8082 এ চলে। প্রদত্ত যে এগুলি নন-স্ট্যান্ডার্ড পোর্ট, আপনি তাদের চিহ্নিত করার জন্য নামযুক্ত পোর্টগুলি নির্দিষ্ট করবেন। নামযুক্ত পোর্টগুলি হল কী: মান জোড়া মেটাডেটা পরিষেবার নাম এবং এটি যে পোর্টে চলছে তার প্রতিনিধিত্ব করে৷ নামযুক্ত পোর্টগুলি একটি ইনস্ট্যান্স গ্রুপে বরাদ্দ করা যেতে পারে, যা নির্দেশ করে যে পরিষেবাটি গ্রুপের সমস্ত দৃষ্টান্তে উপলব্ধ। সেই তথ্য লোড ব্যালেন্সার দ্বারা ব্যবহৃত হয়, যা আপনি পরে কনফিগার করবেন।
gcloud compute instance-groups set-named-ports fancy-fe-mig \ --named-ports frontend:8080
gcloud compute instance-groups set-named-ports fancy-be-mig \ --named-ports orders:8081,products:8082
অটোহিলিং কনফিগার করুন
অ্যাপটির উপলব্ধতা উন্নত করতে এবং এটি সাড়া দিচ্ছে কিনা তা যাচাই করতে, আপনি পরিচালিত উদাহরণ গোষ্ঠীগুলির জন্য একটি অটো-হিলিং নীতি কনফিগার করতে পারেন।
একটি অটো-হিলিং নীতি একটি অ্যাপ-ভিত্তিক স্বাস্থ্য পরীক্ষার উপর নির্ভর করে যে একটি অ্যাপ প্রত্যাশা অনুযায়ী সাড়া দিচ্ছে। কোনো অ্যাপের প্রতিক্রিয়া চেক করা কেবলমাত্র একটি দৃষ্টান্ত চলমান অবস্থায় আছে কিনা তা যাচাই করার চেয়ে আরও সুনির্দিষ্ট, যা ডিফল্ট আচরণ।
একটি স্বাস্থ্য পরীক্ষা তৈরি করুন যা দৃষ্টান্তটি মেরামত করে যদি এটি ফ্রন্টএন্ড এবং ব্যাকএন্ডের জন্য পরপর তিনবার অস্বাস্থ্যকর হিসাবে ফিরে আসে:
gcloud compute health-checks create http fancy-fe-hc \ --port 8080 \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3
gcloud compute health-checks create http fancy-be-hc \ --port 8081 \ --request-path=/api/orders \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3
পোর্ট 8080 এবং 8081 এর মাইক্রোসার্ভিসেসের সাথে স্বাস্থ্য পরীক্ষা প্রোব সংযোগ করার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন:
gcloud compute firewall-rules create allow-health-check \ --allow tcp:8080-8081 \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --network default
তাদের নিজ নিজ পরিষেবাতে স্বাস্থ্য পরীক্ষা প্রয়োগ করুন:
gcloud compute instance-groups managed update fancy-fe-mig \ --health-check fancy-fe-hc \ --initial-delay 300
gcloud compute instance-groups managed update fancy-be-mig \ --health-check fancy-be-hc \ --initial-delay 300
গ্রুপের দৃষ্টান্তগুলি নিরীক্ষণ করতে অটো-হিলিং এর জন্য কিছু সময় দেওয়ার জন্য কোডল্যাবের সাথে চালিয়ে যান। পরে, আপনি অটোহিলিং পরীক্ষা করতে ব্যর্থতার অনুকরণ করবেন।
6. লোড ব্যালেন্সার তৈরি করুন
আমাদের পরিচালিত দৃষ্টান্ত গোষ্ঠীগুলিকে পরিপূরক করতে, আপনি ফ্রন্টএন্ড এবং ব্যাকএন্ড মাইক্রোসার্ভিসে ট্র্যাফিক পরিবেশন করতে HTTP(S) লোড ব্যালেন্সিং ব্যবহার করবেন এবং ম্যাপিং ব্যবহার করে পথের নিয়মের উপর ভিত্তি করে সঠিক ব্যাকএন্ড পরিষেবাগুলিতে ট্র্যাফিক পাঠাবেন৷ এটি সমস্ত পরিষেবার জন্য একটি একক, লোড-ভারসাম্যপূর্ণ আইপি ঠিকানা প্রকাশ করবে।
Google ক্লাউডে উপলব্ধ লোড ব্যালেন্সিং বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, লোড ব্যালেন্সিংয়ের ওভারভিউ দেখুন।
HTTP(S) লোড ব্যালেন্সিং তৈরি করুন
Google ক্লাউড বিভিন্ন ধরনের লোড ব্যালেন্সিং অফার করে, কিন্তু আপনি আপনার ট্রাফিকের জন্য HTTP(S) লোড ব্যালেন্সিং ব্যবহার করবেন। HTTP(S) লোড ব্যালেন্সিং নিম্নরূপ গঠন করা হয়েছে:
- একটি ফরওয়ার্ডিং নিয়ম একটি লক্ষ্য HTTP প্রক্সিতে আগত অনুরোধগুলিকে নির্দেশ করে।
- লক্ষ্য HTTP প্রক্সি অনুরোধের জন্য উপযুক্ত ব্যাকএন্ড পরিষেবা নির্ধারণ করতে একটি URL মানচিত্রের বিরুদ্ধে প্রতিটি অনুরোধ পরীক্ষা করে।
- ব্যাকএন্ড পরিষেবা প্রতিটি অনুরোধকে তার সংযুক্ত ব্যাকএন্ডগুলির পরিবেশন ক্ষমতা, জোন এবং ইনস্ট্যান্স স্বাস্থ্যের উপর ভিত্তি করে একটি উপযুক্ত ব্যাকএন্ডে নির্দেশ করে। প্রতিটি ব্যাকএন্ড ইনস্ট্যান্সের স্বাস্থ্য একটি HTTP স্বাস্থ্য পরীক্ষা ব্যবহার করে যাচাই করা হয়। যদি ব্যাকএন্ড পরিষেবাটি HTTPS বা HTTP/2 স্বাস্থ্য পরীক্ষা ব্যবহার করার জন্য কনফিগার করা হয়, তাহলে অনুরোধটি ব্যাকএন্ড উদাহরণে যাওয়ার পথে এনক্রিপ্ট করা হবে।
- লোড ব্যালেন্সার এবং ইনস্ট্যান্সের মধ্যে সেশনগুলি HTTP, HTTPS, বা HTTP/2 প্রোটোকল ব্যবহার করতে পারে। আপনি যদি HTTPS বা HTTP/2 ব্যবহার করেন, তাহলে ব্যাকএন্ড পরিষেবার প্রতিটি উদাহরণের একটি SSL শংসাপত্র থাকতে হবে।
স্বাস্থ্য পরীক্ষা তৈরি করুন যা প্রতিটি পরিষেবার জন্য কোন দৃষ্টান্তগুলি ট্রাফিক পরিবেশন করতে সক্ষম তা নির্ধারণ করতে ব্যবহৃত হবে।
gcloud compute http-health-checks create fancy-fe-frontend-hc \ --request-path / \ --port 8080
gcloud compute http-health-checks create fancy-be-orders-hc \ --request-path /api/orders \ --port 8081
gcloud compute http-health-checks create fancy-be-products-hc \ --request-path /api/products \ --port 8082
ব্যাকএন্ড পরিষেবাগুলি তৈরি করুন যা লোড-ভারসাম্যপূর্ণ ট্র্যাফিকের লক্ষ্য। ব্যাকএন্ড পরিষেবাগুলি আপনার তৈরি করা স্বাস্থ্য পরীক্ষা এবং নামযুক্ত পোর্টগুলি ব্যবহার করবে।
gcloud compute backend-services create fancy-fe-frontend \ --http-health-checks fancy-fe-frontend-hc \ --port-name frontend \ --global
gcloud compute backend-services create fancy-be-orders \ --http-health-checks fancy-be-orders-hc \ --port-name orders \ --global
gcloud compute backend-services create fancy-be-products \ --http-health-checks fancy-be-products-hc \ --port-name products \ --global
ব্যাকএন্ড পরিষেবা যোগ করুন।
gcloud compute backend-services add-backend fancy-fe-frontend \ --instance-group fancy-fe-mig \ --instance-group-zone us-central1-f \ --global
gcloud compute backend-services add-backend fancy-be-orders \ --instance-group fancy-be-mig \ --instance-group-zone us-central1-f \ --global
gcloud compute backend-services add-backend fancy-be-products \ --instance-group fancy-be-mig \ --instance-group-zone us-central1-f \ --global
একটি URL মানচিত্র তৈরি করুন। ইউআরএল ম্যাপ সংজ্ঞায়িত করে কোন ইউআরএলগুলো কোন ব্যাকএন্ড পরিষেবার দিকে পরিচালিত হয়।
gcloud compute url-maps create fancy-map \ --default-service fancy-fe-frontend
/api/orders এবং /api/products পাথগুলিকে তাদের নিজ নিজ পরিষেবাতে রুট করার অনুমতি দেওয়ার জন্য একটি পাথ ম্যাচার তৈরি করুন।
gcloud compute url-maps add-path-matcher fancy-map \ --default-service fancy-fe-frontend \ --path-matcher-name orders \ --path-rules "/api/orders=fancy-be-orders,/api/products=fancy-be-products"
প্রক্সি তৈরি করুন যা তৈরি করা URL মানচিত্রের সাথে সম্পর্কযুক্ত।
gcloud compute target-http-proxies create fancy-proxy \ --url-map fancy-map
একটি বিশ্বব্যাপী ফরওয়ার্ডিং নিয়ম তৈরি করুন যা একটি সর্বজনীন আইপি ঠিকানা এবং পোর্টকে প্রক্সির সাথে সংযুক্ত করে।
gcloud compute forwarding-rules create fancy-http-rule \ --global \ --target-http-proxy fancy-proxy \ --ports 80
কনফিগারেশন আপডেট করুন
এখন আপনার কাছে একটি নতুন স্ট্যাটিক আইপি অ্যাড্রেস আছে, আপনাকে আগে ব্যাকএন্ড ইনস্ট্যান্সে নির্দেশিত ক্ষণস্থায়ী ঠিকানার পরিবর্তে নতুন ঠিকানায় নির্দেশ করতে ফ্রন্টএন্ডে কোডটি আপডেট করতে হবে।
ক্লাউড শেল-এ, প্রতিক্রিয়া-অ্যাপ ফোল্ডারে পরিবর্তন করুন, যেখানে কনফিগারেশন ধারণ করে .env ফাইল রয়েছে।
cd ~/monolith-to-microservices/react-app/
লোড ব্যালেন্সারের জন্য আইপি ঠিকানা খুঁজুন:
gcloud compute forwarding-rules list --global
উদাহরণ আউটপুট:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET fancy-http-rule 34.102.237.51 TCP fancy-proxy
লোড ব্যালেন্সারের সর্বজনীন আইপি ঠিকানা নির্দেশ করতে আপনার পছন্দের পাঠ্য সম্পাদক (যেমন GNU ন্যানো) দিয়ে .env ফাইলটি সম্পাদনা করুন। [LB_IP] ব্যাকএন্ড উদাহরণের বাহ্যিক IP ঠিকানা উপস্থাপন করে।
REACT_APP_ORDERS_URL=http://[LB_IP]/api/orders
REACT_APP_PRODUCTS_URL=http://[LB_IP]/api/products
রিঅ্যাক্ট-অ্যাপ পুনরায় তৈরি করুন, যা ফ্রন্টএন্ড কোড আপডেট করবে।
cd ~/monolith-to-microservices/react-app npm install && npm run-script build
GCS বালতিতে অ্যাপ্লিকেশন কোডটি অনুলিপি করুন।
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/
ফ্রন্টএন্ড দৃষ্টান্ত আপডেট করুন
এখন আপনি পরিচালিত উদাহরণ গ্রুপের ফ্রন্টএন্ড দৃষ্টান্তগুলি নতুন কোডটি টানতে চান। আপনার দৃষ্টান্তগুলি স্টার্টআপে কোডটি টেনে আনে, যাতে আপনি একটি রোলিং রিস্টার্ট কমান্ড ইস্যু করতে পারেন।
gcloud compute instance-groups managed rolling-action restart fancy-fe-mig \ --max-unavailable 100%
ওয়েবসাইট পরীক্ষা করুন
দৃষ্টান্তগুলি প্রক্রিয়া করার জন্য সময় দিতে রোলিং-অ্যাকশন রিস্টার্ট কমান্ড জারি করার পরে প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, তালিকায় দৃষ্টান্ত উপস্থিত না হওয়া পর্যন্ত পরিচালিত দৃষ্টান্ত গোষ্ঠীর স্থিতি পরীক্ষা করুন।
watch -n 5 gcloud compute instance-groups list-instances fancy-fe-mig
আইটেমগুলি তালিকায় উপস্থিত হওয়ার পরে, Control+C
( ম্যাকিনটোশে Command+C
) টিপে ঘড়ি কমান্ড থেকে প্রস্থান করুন।
নিশ্চিত করুন যে পরিষেবাটি স্বাস্থ্যকর হিসাবে তালিকাভুক্ত।
watch -n 5 gcloud compute backend-services get-health fancy-fe-frontend --global
উদাহরণ আউটপুট:
--- backend: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instances/fancy-fe-x151 ipAddress: 10.128.0.7 port: 8080 - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth
একবার আইটেমগুলি তালিকায় উপস্থিত হলে, Control+C
( ম্যাকিনটোশে Command+C
) টিপে watch
কমান্ড থেকে প্রস্থান করুন।
অ্যাপ্লিকেশনটি তখন http://[LB_IP] এর মাধ্যমে অ্যাক্সেসযোগ্য হবে, যেখানে [LB_IP] হল লোড ব্যালেন্সারের জন্য নির্দিষ্ট IP_ADDRESS, যা নিম্নলিখিত কমান্ডের সাথে পাওয়া যাবে:
gcloud compute forwarding-rules list --global
7. স্কেলিং কম্পিউট ইঞ্জিন
এখন পর্যন্ত, আপনি দুটি ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করেছেন, প্রতিটিতে দুটি উদাহরণ রয়েছে। কনফিগারেশন সম্পূর্ণরূপে কার্যকরী, কিন্তু লোড নির্বিশেষে একটি স্ট্যাটিক কনফিগারেশন। এখন, আপনি প্রতিটি পরিচালিত উদাহরণ গোষ্ঠীকে স্বয়ংক্রিয়ভাবে স্কেল করার জন্য ব্যবহারের উপর ভিত্তি করে একটি অটোস্কেলিং নীতি তৈরি করবেন।
স্বয়ংক্রিয়ভাবে ব্যবহার দ্বারা আকার পরিবর্তন
অটোস্কেলিং নীতি তৈরি করতে, ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান। তারা পরিচালিত দৃষ্টান্ত গোষ্ঠীতে একটি অটোস্কেলার তৈরি করবে যা স্বয়ংক্রিয়ভাবে লোড ব্যালেন্সার 60% ইউটিলাইজেশনের বেশি হলে দৃষ্টান্ত যোগ করে এবং লোড ব্যালেন্সার 60% ইউটিলাইজেশনের চেয়ে কম হলে দৃষ্টান্তগুলি সরিয়ে দেয়।
gcloud compute instance-groups managed set-autoscaling \ fancy-fe-mig \ --max-num-replicas 5 \ --target-load-balancing-utilization 0.60
gcloud compute instance-groups managed set-autoscaling \ fancy-be-mig \ --max-num-replicas 5 \ --target-load-balancing-utilization 0.60
কন্টেন্ট-ডেলিভারি নেটওয়ার্ক সক্রিয় করুন
আরেকটি বৈশিষ্ট্য যা স্কেলিংয়ে সাহায্য করতে পারে তা হল ক্লাউড সিডিএন সক্ষম করা - একটি বিষয়বস্তু-ডেলিভারি নেটওয়ার্ক পরিষেবা - ফ্রন্টএন্ড পরিষেবার জন্য ক্যাশিং প্রদান করতে। এটি করতে, আপনি আপনার ফ্রন্টএন্ড পরিষেবাতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:
gcloud compute backend-services update fancy-fe-frontend \ --enable-cdn --global
এখন, যখন একজন ব্যবহারকারী লোড ব্যালেন্সার থেকে বিষয়বস্তুর অনুরোধ করে, তখন অনুরোধটি Google ফ্রন্টএন্ডে আসে, যা ব্যবহারকারীর অনুরোধের প্রতিক্রিয়ার জন্য প্রথমে ক্লাউড CDN ক্যাশে দেখায়। যদি ফ্রন্টএন্ড একটি ক্যাশড প্রতিক্রিয়া খুঁজে পায়, তাহলে এটি ব্যবহারকারীকে ক্যাশে করা প্রতিক্রিয়া পাঠায়। যে একটি ক্যাশে আঘাত বলা হয়.
অন্যথায়, যদি ফ্রন্টএন্ড অনুরোধের জন্য একটি ক্যাশে করা প্রতিক্রিয়া খুঁজে না পায়, তাহলে এটি সরাসরি ব্যাকএন্ডে একটি অনুরোধ করে। যদি সেই অনুরোধের প্রতিক্রিয়া ক্যাশেযোগ্য হয়, তাহলে ফ্রন্টএন্ড প্রতিক্রিয়াটিকে ক্লাউড সিডিএন ক্যাশে সংরক্ষণ করে যাতে ক্যাশেটি পরবর্তী অনুরোধের জন্য ব্যবহার করা যায়।
8. ওয়েবসাইট আপডেট করুন
ইনস্ট্যান্স টেমপ্লেট আপডেট করা হচ্ছে
বিদ্যমান উদাহরণ টেমপ্লেট সম্পাদনাযোগ্য নয়। যাইহোক, আপনার দৃষ্টান্তগুলি স্টেটলেস এবং সমস্ত কনফিগারেশন স্টার্টআপ স্ক্রিপ্টের মাধ্যমে সম্পন্ন করা হয়েছে, যদি আপনি টেমপ্লেট সেটিংস মূল চিত্রটি নিজেই পরিবর্তন করতে চান তবে আপনাকে কেবলমাত্র ইনস্ট্যান্স টেমপ্লেটটি পরিবর্তন করতে হবে। এখন, আপনি একটি বৃহত্তর মেশিন টাইপ ব্যবহার করার জন্য একটি সাধারণ পরিবর্তন করবেন এবং এটিকে বাইরে ঠেলে দেবেন।
ফ্রন্টএন্ড ইনস্ট্যান্স আপডেট করুন, যা ইনস্ট্যান্স টেমপ্লেটের ভিত্তি হিসেবে কাজ করে। আপডেটের সময়, আপনি ইনস্ট্যান্স টেমপ্লেটের ইমেজের আপডেট হওয়া সংস্করণে একটি ফাইল রাখবেন, তারপর ইনস্ট্যান্স টেমপ্লেট আপডেট করবেন, নতুন টেমপ্লেটটি রোল আউট করবেন এবং নিশ্চিত করুন যে ফাইলটি পরিচালিত ইনস্ট্যান্স গ্রুপ ইনস্ট্যান্সে বিদ্যমান।
আপনি f1-মাইক্রো স্ট্যান্ডার্ড মেশিন টাইপ থেকে 4 vCPU এবং 3840MiB RAM সহ একটি কাস্টম মেশিন টাইপে স্যুইচ করে আপনার ইনস্ট্যান্স টেমপ্লেটের মেশিনের ধরন পরিবর্তন করবেন।
ক্লাউড শেলে, ফ্রন্টএন্ড ইনস্ট্যান্সের মেশিনের ধরন পরিবর্তন করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud compute instances set-machine-type frontend --machine-type custom-4-3840
নতুন উদাহরণ টেমপ্লেট তৈরি করুন:
gcloud compute instance-templates create fancy-fe-new \ --source-instance=frontend \ --source-instance-zone=us-central1-a
পরিচালিত দৃষ্টান্ত গোষ্ঠীতে আপডেট করা উদাহরণ টেমপ্লেটটি রোল আউট করুন:
gcloud compute instance-groups managed rolling-action start-update fancy-fe-mig \ --version template=fancy-fe-new
আপডেটের অবস্থা পর্যবেক্ষণ করুন:
watch -n 2 gcloud compute instance-groups managed list-instances fancy-fe-mig
একবার আপনার 1 টির বেশি ইন্সট্যান্স RUNNING স্ট্যাটাসে, অ্যাকশনটি None তে সেট করা হয়ে গেলে এবং INSTANCE_TEMPLATE-কে নতুন টেমপ্লেট নাম ( fancy-fe-new ) হিসাবে সেট করা হলে, পরবর্তী কমান্ডে ব্যবহারের জন্য তালিকাভুক্ত একটি মেশিনের নাম কপি করুন।
ঘড়ির প্রক্রিয়া থেকে বেরিয়ে আসতে Control+S
(ম্যাকিন্টোশে Command+S
)।
ভার্চুয়াল মেশিনটি নতুন মেশিনের ধরন (কাস্টম-4-3840) ব্যবহার করছে কিনা তা দেখতে নিম্নলিখিতটি চালান, যেখানে [VM_NAME] হল নতুন তৈরি উদাহরণ:
gcloud compute instances describe [VM_NAME] | grep machineType
প্রত্যাশিত উদাহরণ আউটপুট:
machineType: https://www.googleapis.com/compute/v1/projects/project-name/zones/us-central1-f/machineTypes/custom-4-3840
ওয়েবসাইট পরিবর্তন করুন
আপনার মার্কেটিং টিম আপনাকে আপনার সাইটের হোমপেজ পরিবর্তন করতে বলেছে। তারা মনে করে আপনার কোম্পানি কে এবং আপনি আসলে কী বিক্রি করেন সে সম্পর্কে আরও তথ্যপূর্ণ হওয়া উচিত। এই বিভাগে, আপনি বিপণন দলকে খুশি করতে হোমপেজে কিছু পাঠ্য যোগ করবেন! দেখে মনে হচ্ছে আপনার একজন ডেভেলপার ইতিমধ্যেই index.js.new ফাইলের নাম দিয়ে পরিবর্তনগুলি তৈরি করেছেন৷ আপনি ফাইলটিকে index.js-এ অনুলিপি করতে পারেন এবং আপনার পরিবর্তনগুলি প্রতিফলিত হওয়া উচিত। উপযুক্ত পরিবর্তন করতে নিচের নির্দেশাবলী অনুসরণ করুন।
নিম্নলিখিত কমান্ডগুলি চালান, আপডেট হওয়া ফাইলটিকে সঠিক ফাইলের নামে অনুলিপি করুন এবং তারপর পরিবর্তনগুলি যাচাই করতে এর বিষয়বস্তু মুদ্রণ করুন:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js
ফলাফল কোড এই মত হওয়া উচিত:
/*
Copyright 2019 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
root: {
flexGrow: 1
},
paper: {
width: "800px",
margin: "0 auto",
padding: theme.spacing(3, 2)
}
}));
export default function Home() {
const classes = useStyles();
return (
<div className={classes.root}>
<Paper className={classes.paper}>
<Typography variant="h5">
Fancy Fashion & Style Online
</Typography>
<br />
<Typography variant="body1">
Tired of mainstream fashion ideas, popular trends and societal norms?
This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
Start shopping Fancy items now!
</Typography>
</Paper>
</div>
);
}
আপনি প্রতিক্রিয়া উপাদানগুলি আপডেট করেছেন, তবে স্ট্যাটিক ফাইলগুলি তৈরি করতে আপনাকে প্রতিক্রিয়া অ্যাপ তৈরি করতে হবে। প্রতিক্রিয়া অ্যাপ্লিকেশন তৈরি করতে নিম্নলিখিত কমান্ডটি চালান এবং এটি মনোলিথ পাবলিক ডিরেক্টরিতে অনুলিপি করুন:
cd ~/monolith-to-microservices/react-app npm install && npm run-script build
তারপরে, কোডটি আবার আপনার ক্লাউড স্টোরেজ বালতিতে পুশ করুন।
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/
ঘূর্ণায়মান আপডেটের সাথে পরিবর্তনগুলি পুশ করুন৷
আপনি এখন আপডেট টানতে সমস্ত দৃষ্টান্ত পুনরায় চালু করতে বাধ্য করতে পারেন।
gcloud compute instance-groups managed rolling-action restart fancy-fe-mig \ --max-unavailable=100%
দৃষ্টান্তগুলি প্রক্রিয়া করার জন্য সময় দেওয়ার জন্য রোলিং-অ্যাকশন রিস্টার্ট কমান্ড ইস্যু করার পরে প্রায় 30 সেকেন্ড অপেক্ষা করুন এবং তারপর তালিকায় দৃষ্টান্তগুলি উপস্থিত না হওয়া পর্যন্ত পরিচালিত উদাহরণ গোষ্ঠীর স্থিতি পরীক্ষা করুন।
watch -n 5 gcloud compute instance-groups list-instances fancy-fe-mig
একবার আইটেমগুলি তালিকায় উপস্থিত হলে, Control+S
( ম্যাকিনটোশে Command+S
) টিপে ওয়াচ কমান্ড থেকে প্রস্থান করুন।
পরিষেবাটি স্বাস্থ্যকর হিসাবে তালিকাভুক্ত হয়েছে তা নিশ্চিত করতে নিম্নলিখিতটি চালান:
watch -n 5 gcloud compute backend-services get-health fancy-fe-frontend --global
উদাহরণ আউটপুট:
--- backend: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instances/fancy-fe-x151 ipAddress: 10.128.0.7 port: 8080 - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth
আইটেমগুলি তালিকায় উপস্থিত হওয়ার পরে, Control+S
( ম্যাকিনটোশে Command+S
) টিপে ঘড়ি কমান্ড থেকে প্রস্থান করুন।
কনটেন্ট-ডেলিভারি নেটওয়ার্কের মধ্যে ক্যাশ করা কন্টেন্ট বাতিল করতে এবং তাজা কন্টেন্ট দেখানো হয়েছে তা নিশ্চিত করতে, নিম্নলিখিতটি চালান:
gcloud compute url-maps invalidate-cdn-cache fancy-map \ --path "/*"
http://[LB_IP] এর মাধ্যমে ওয়েবসাইটটিতে ব্রাউজ করুন যেখানে [LB_IP] হল IP_ADDRESS লোড ব্যালেন্সারের জন্য নির্দিষ্ট করা, যা নিম্নলিখিত কমান্ডের সাথে পাওয়া যেতে পারে:
gcloud compute forwarding-rules list --global
নতুন ওয়েবসাইট পরিবর্তনগুলি এখন দৃশ্যমান হওয়া উচিত।
ব্যর্থতা অনুকরণ
স্বাস্থ্য পরীক্ষা কাজ করে তা নিশ্চিত করতে, একটি উদাহরণে লগ ইন করুন এবং পরিষেবাগুলি বন্ধ করুন৷ একটি উদাহরণের নাম খুঁজে পেতে, নিম্নলিখিতটি চালান:
gcloud compute instance-groups list-instances fancy-fe-mig
সেখান থেকে, একটি দৃষ্টান্তের মধ্যে শেলকে সুরক্ষিত করুন, যেখানে INSTANCE_NAME হল তালিকার অন্যতম উদাহরণ:
gcloud compute ssh [INSTANCE_NAME]
উদাহরণে, অ্যাপটি বন্ধ করতে সুপারভাইজারক্টল ব্যবহার করুন।
sudo supervisorctl stop nodeapp; sudo killall node
উদাহরণ থেকে প্রস্থান করুন।
exit
মেরামত কার্যক্রম নিরীক্ষণ.
watch -n 5 gcloud compute operations list \ --filter='operationType~compute.instances.repair.*'
নিম্নলিখিত উদাহরণ আউটপুট জন্য দেখুন:
NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP repair-1568314034627-5925f90ee238d-fe645bf0-7becce15 compute.instances.repair.recreateInstance us-central1-a/instances/fancy-fe-1vqq 200 DONE 2019-09-12T11:47:14.627-07:00
মেরামত লক্ষ্য করার পরে, ঘড়ির কমান্ড থেকে প্রস্থান করার জন্য Control+C
( ম্যাকিনটোশে Command+S
)। এই মুহুর্তে, পরিচালিত উদাহরণ গোষ্ঠী এটি মেরামত করার জন্য দৃষ্টান্তটি পুনরায় তৈরি করে।
9. পরিষ্কার করুন
একবার প্রস্তুত হয়ে গেলে, সম্পাদিত সমস্ত ক্রিয়াকলাপ পরিষ্কার করার সবচেয়ে সহজ উপায় হল প্রকল্পটি মুছে ফেলা। প্রজেক্টটি মুছে ফেলার ফলে কোডল্যাবের সময় তৈরি হওয়া লোড ব্যালেন্সার, দৃষ্টান্ত, টেমপ্লেট এবং আরও অনেক কিছু মুছে যায় যাতে কোনো অপ্রত্যাশিত পুনরাবৃত্ত চার্জ না হয়। ক্লাউড শেল-এ নিম্নলিখিতগুলি চালান, যেখানে PROJECT_ID সম্পূর্ণ প্রকল্প আইডি, শুধুমাত্র প্রকল্পের নাম নয়।
gcloud projects delete [PROJECT_ID]
অনুরোধ করা হলে "Y" লিখে মুছে ফেলা নিশ্চিত করুন।
10. অভিনন্দন!
আপনি Compute Engine-এ আপনার ওয়েবসাইট স্থাপন, স্কেল এবং আপডেট করেছেন। আপনি এখন কম্পিউট ইঞ্জিন, ম্যানেজড ইনস্ট্যান্স গ্রুপ, লোড ব্যালেন্সিং এবং স্বাস্থ্য পরীক্ষা নিয়ে অভিজ্ঞ!