গুগল কম্পিউট ইঞ্জিন

1. ভূমিকা

হ্যালো সবাই, আজ আসার জন্য ধন্যবাদ! গুগল কম্পিউট ইঞ্জিন শিখতে প্রস্তুত?

এই কোডল্যাবে, আমরা একটি উদাহরণ গেস্টবুক অ্যাপ্লিকেশনের মাধ্যমে কাজ করা কম্পিউট ইঞ্জিনকে অন্বেষণ করব।

আপনি কম্পিউট ইঞ্জিন দৃষ্টান্ত তৈরি করবেন, nginx স্থাপন করবেন এবং অবশেষে সামনে একটি নেটওয়ার্ক লোড ব্যালেন্সার রাখবেন। আপনি গ্রাফিকাল কনসোল বা কমান্ড লাইন থেকে একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করতে পারেন। এই ল্যাব কমান্ড-লাইন ব্যবহার করে আপনাকে নিয়ে যাবে।

ComputeEngine_128px.png

Google Compute Engine তার বিশ্বব্যাপী ফাইবার নেটওয়ার্কের সাথে সংযুক্ত Google-এর ডেটা সেন্টারে চলমান ভার্চুয়াল মেশিন অফার করে। অফার করা টুলিং এবং ওয়ার্কফ্লো একক দৃষ্টান্ত থেকে গ্লোবাল, লোড-ব্যালেন্সড ক্লাউড কম্পিউটিং পর্যন্ত স্কেলিং সক্ষম করে।

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

পরিশেষে, কম্পিউট ইঞ্জিন ভার্চুয়াল মেশিনগুলিও অন্যান্য Google ক্লাউড পণ্য দ্বারা ব্যবহৃত প্রযুক্তি (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow, ইত্যাদি...)।

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না এবং আপনি যে কোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রজেক্ট জুড়ে প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই আপনি যদি এটি পছন্দ না করেন তবে অন্য একটি এলোমেলো তৈরি করুন, অথবা, আপনি নিজের চেষ্টা করে দেখতে পারেন এটি উপলব্ধ কিনা। তারপর প্রকল্প তৈরি হওয়ার পরে এটি "হিমায়িত" হয়।
  • একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন, কোডল্যাবের শেষে পাওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

গুগল ক্লাউড শেল

যদিও Google ক্লাউড এবং কম্পিউট ইঞ্জিন আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।

  1. ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন b125d9eb26a46cc5.png (পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।

1067942a9a93f70.png

স্ক্রীন শট 2017-06-14 10.13.43 PM.png এ

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার 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 খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:

cc3895eeac80db2c.png

ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।

echo $GOOGLE_CLOUD_PROJECT

কমান্ড আউটপুট

<PROJECT_ID>
  1. অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।

3. একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করুন

পূর্বে আলোচনা করা হয়েছে আমরা এই কোডল্যাবে gcloud কমান্ড লাইন ব্যবহার করব। এখানে করা সমস্ত কিছু কনসোল ব্যবহার করে অর্জন করা যেতে পারে ( console.cloud.google.com এ উপলব্ধ)৷

চলুন প্রথমে ডিফল্ট সেটিংস সহ একটি উদাহরণ তৈরি করি:

$ gcloud compute instances create myinstance
Created [...].
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

EXTERNAL_IP নোট করুন - এটি পরে গুরুত্বপূর্ণ।

উদাহরণটি বেশ কয়েকটি ডিফল্ট ব্যবহার করে তৈরি করা হয়েছে:

  • আপনি যে জোন নির্বাচন করেন। সমস্ত দৃষ্টান্ত একটি জোনে বাস করে। আপনি --zone পতাকা ব্যবহার করে উদাহরণ তৈরির সময় একটি অঞ্চল নির্বাচন করতে পারেন অথবা আপনি একটি ডিফল্ট অঞ্চল সেট করতে পারেন (যেমন আমরা প্রাথমিক সেটআপে করেছি) এবং --zone পতাকা বাদ দিতে পারেন।
  • সর্বশেষ ডেবিয়ান GNU/Linux 9 (প্রসারিত) চিত্র। আপনি যদি আপনার নিজস্ব কাস্টম ইমেজ ব্যবহার করেন, তাহলে এর পরিবর্তে এখানে ছবির নাম দিন। উদাহরণস্বরূপ, --image my-own-image
  • n1-standard-1 মেশিনের ধরন । আপনি অন্য মেশিনের ধরন নির্বাচন করতে পারেন যেমন n1-highmem-4 বা n1-highcpu-6 । যদি পূর্বনির্ধারিত মেশিনের কোনো প্রকার আপনার প্রয়োজনের সাথে মেলে না, তাহলে একটি কাস্টম মেশিনের ধরন ব্যবহার করুন।
  • উদাহরণের মতো একই নামের একটি রুট স্থায়ী ডিস্ক; ডিস্ক স্বয়ংক্রিয়ভাবে দৃষ্টান্ত সংযুক্ত করা হয়.

gcloud compute instances create --help চালান সমস্ত উপলব্ধ বিকল্পগুলি দেখতে।

4. পোর্ট 80 এর জন্য ফায়ারওয়াল সক্ষম করুন

ডিফল্টরূপে, Google ক্লাউড প্ল্যাটফর্ম শুধুমাত্র কয়েকটি পোর্ট অ্যাক্সেসের অনুমতি দেয়। যেহেতু আমরা শীঘ্রই Nginx ইনস্টল করব - আসুন প্রথমে ফায়ারওয়াল কনফিগারেশনে পোর্ট 80 সক্ষম করি।

$ gcloud compute firewall-rules create allow-80 --allow tcp:80
Created [...].
NAME: allow-80
NETWORK: default
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:80
DENY:
DISABLED: False

এটি allow-80 নামে একটি ফায়ারওয়াল নিয়ম তৈরি করবে যাতে আইপি অ্যাড্রেস ব্লকগুলির একটি ডিফল্ট তালিকা রয়েছে যা অন্তর্মুখী সংযোগগুলি ( --source-ranges ) 0.0.0.0/0 (সর্বত্র) সেট করা হয়।

চালান gcloud compute firewall-rules create --help সমস্ত ডিফল্ট এবং ট্যাগের উপর ভিত্তি করে ফায়ারওয়াল নিয়ম প্রয়োগ করার ক্ষমতা সহ উপলব্ধ সমস্ত বিকল্প দেখতে।

5. ইনস্ট্যান্সে SSH

কমান্ড লাইন থেকে (এখনও ক্লাউড শেল থেকে) উদাহরণে SSH-এ

$ gcloud compute ssh myinstance
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts.
...

yourusername@myinstance:~#

তাই তো! বেশ সহজ (উৎপাদনে, নিশ্চিত করুন যে আপনি একটি পাসফ্রেজ লিখছেন :)

বিকল্পভাবে, আপনি কম্পিউট ইঞ্জিন > VM ইনস্ট্যান্সে নেভিগেট করে এবং SSH- এ ক্লিক করে সরাসরি কনসোল ( console.cloud.google.com ) থেকে ইন্সট্যান্সে SSH করতে পারেন।

bfbc03997a41946e.png

6. Nginx ইনস্টল করুন

myinstance , সদ্য নির্মিত উদাহরণে লগ ইন করুন এবং nginx ইনস্টল করুন:

$ sudo su - 
# apt update
# apt install -y nginx
# service nginx start
# exit

পরীক্ষা করুন যে সার্ভারটি myinst থেকে curl ব্যবহার করে চলছে:

$ curl -s localhost | grep nginx
<title>Welcome to nginx!</title>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
<a href="http://nginx.org/">nginx.org</a>.<br/>
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>

ওয়েব UI এর মাধ্যমে আপনার উদাহরণ তালিকাভুক্ত করে আপনার উদাহরণের জন্য বাহ্যিক আইপি খুঁজুন:

dcc4e56e82ba2603.png

নিশ্চিত করুন যে আপনি SSH থেকে প্রস্থান করেছেন এবং ক্লাউড শেল থেকে এই কমান্ডটি চালান:

$ gcloud compute instances list
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

তারপরে নেভিগেট করুন http://EXTERNAL_IP/ যেখানে EXTERNAL_IP হল myinstance এর সর্বজনীন IP এবং আপনি nginx পৃষ্ঠাটি দেখতে সক্ষম হবেন:

49b52b9354041f3b.png

7. স্টার্টআপ স্ক্রিপ্ট

প্রতিবার ইনস্ট্যান্স সেট আপ করার পরিবর্তে, আপনি স্টার্টআপের সময় ইনস্ট্যান্স শুরু করতে একটি স্টার্টআপ স্ক্রিপ্ট ব্যবহার করতে পারেন।

নিম্নলিখিত সামগ্রী সহ startup.sh নামে একটি ফাইল তৈরি করুন (আপনি আপনার প্রিয় পাঠ্য সম্পাদক ব্যবহার করতে পারেন: vim , nano , বা emacs ):

#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html

এই স্টার্টআপ স্ক্রিপ্টের সাথে একটি নতুন VM উদাহরণ তৈরি করতে কেবল টাইপ করুন:

$ gcloud compute instances create nginx \
         --metadata-from-file startup-script=startup.sh 
Created [...].
NAME: nginx
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

http://EXTERNAL_IP/ এ ব্রাউজ করুন এবং আপনাকে আপডেট করা হোম পেজ দেখতে হবে। কয়েক সেকেন্ড পরে যদি পৃষ্ঠাটি অবিলম্বে পুনরায় চেষ্টা না করে, হোস্ট এখনও nginx শুরু করতে পারে।

8. সার্ভারের একটি ক্লাস্টার তৈরি করুন

সার্ভারের একটি ক্লাস্টার তৈরি করতে, আপনাকে প্রথমে একটি ইনস্ট্যান্স টেমপ্লেট তৈরি করতে হবে। একবার একটি ইনস্ট্যান্স টেমপ্লেট তৈরি হয়ে গেলে, আপনি তৈরি করার জন্য দৃষ্টান্তগুলির সংখ্যা পরিচালনা করতে একটি উদাহরণ গ্রুপ তৈরি করতে পারেন।

প্রথমে, স্টার্টআপ স্ক্রিপ্ট ব্যবহার করে একটি উদাহরণ টেমপ্লেট তৈরি করুন:

$ gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh
Created [...].
NAME: nginx-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00

দ্বিতীয়ত, এর একটি লক্ষ্য পুল তৈরি করা যাক. একটি টার্গেট পুল আমাদের একটি গ্রুপের সমস্ত দৃষ্টান্তে একটি একক অ্যাক্সেস পয়েন্ট থাকতে দেয় এবং ভবিষ্যতের ধাপে লোড ব্যালেন্সিংয়ের জন্য প্রয়োজনীয়।

$ gcloud compute target-pools create nginx-pool
Created [...].
NAME: nginx-pool
REGION: us-central1
SESSION_AFFINITY: NONE
BACKUP:
HEALTH_CHECKS:

অবশেষে, টেমপ্লেট ব্যবহার করে একটি উদাহরণ গ্রুপ তৈরি করুন:

$ gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool
Created [...].
NAME: nginx-group
LOCATION: us-central1-f
SCOPE: zone
BASE_INSTANCE_NAME: nginx
SIZE: 0
TARGET_SIZE: 2
INSTANCE_TEMPLATE: nginx-template
AUTOSCALED: no

এটি nginx- এর সাথে উপসর্গযুক্ত নামের সাথে দুটি অতিরিক্ত VM দৃষ্টান্ত তৈরি করবে।

আপনি এখন তৈরি করা সমস্ত দৃষ্টান্ত দেখতে সক্ষম হবেন!

$ gcloud compute instances list
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx-frpl
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx-ztg4
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

9. একটি নেটওয়ার্ক লোড ব্যালেন্সার তৈরি করুন

Google ক্লাউড প্ল্যাটফর্মে বিভিন্ন ধরনের লোড ব্যালেন্সার রয়েছে যার মধ্যে রয়েছে:

আসুন আমাদের উদাহরণ গোষ্ঠীকে লক্ষ্য করে একটি আঞ্চলিক নেটওয়ার্ক লোড ব্যালেন্সার তৈরি করি:

$ gcloud compute forwarding-rules create nginx-lb \
         --ports 80 \
         --target-pool nginx-pool
Created [...].

$ gcloud compute forwarding-rules list
NAME: nginx-lb
REGION: us-central1
IP_ADDRESS: X.X.X.X
IP_PROTOCOL: TCP
TARGET: us-central1/targetPools/nginx-pool

তারপর আপনি ব্রাউজার থেকে লোড ব্যালেন্সার দেখতে পারেন http://IP_ADDRESS/ যেখানে IP_ADDRESS হল আগের কমান্ড চালানোর ফলাফল হিসাবে দেখানো ঠিকানা।

সময়ের কারণে, আমরা আজ একটি HTTP লোড ব্যালেন্সার তৈরি করব না।

10. ক্লাস্টার পরিষ্কার করুন

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

$ gcloud compute forwarding-rules delete nginx-lb

$ gcloud compute instance-groups managed delete nginx-group

$ gcloud compute target-pools delete nginx-pool

$ gcloud compute instance-templates delete nginx-template

$ gcloud compute instances delete nginx

$ gcloud compute instances delete myinstance

$ gcloud compute firewall-rules delete allow-80

উপরের প্রতিটি কমান্ড আপনাকে সম্পদ মুছে ফেলার বিষয়টি নিশ্চিত করতে বলবে।

11. পরবর্তী কি?

অভিনন্দন, আপনি এই কম্পিউট ইঞ্জিন কোডল্যাবটি সম্পূর্ণ করেছেন!

আরও কম্পিউট ইঞ্জিন বৈশিষ্ট্য

Google Compute Engine-এর বৈশিষ্ট্যগুলির একটি সমৃদ্ধ সেট রয়েছে৷ আপনি এর মধ্যে কয়েকটিতে ডুব দিতে চাইতে পারেন:

গুগল কুবারনেটস ইঞ্জিন

Google Kubernetes Engine (GKE) হল Google ক্লাউডের হোস্ট করা এবং সম্পূর্ণরূপে পরিচালিত Kubernetes অফার। GKE দিয়ে শুরু করতে আপনাকে সাহায্য করার জন্য বেশ কিছু কোডল্যাব উপলব্ধ রয়েছে। এখানে শুরু করার জন্য একটি ভাল:

আমাদের আপনার মতামত দিন

  • আমাদের খুব সংক্ষিপ্ত সমীক্ষা সম্পূর্ণ করার জন্য একটু সময় নিন