1. ভূমিকা
একটি প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেস হল একটি রিসোর্স যা একটি প্রযোজক ভার্চুয়াল প্রাইভেট ক্লাউড (ভিপিসি) নেটওয়ার্ককে একটি ভোক্তা ভিপিসি নেটওয়ার্কের বিভিন্ন গন্তব্যে সংযোগ শুরু করতে দেয়। প্রযোজক এবং ভোক্তা নেটওয়ার্ক বিভিন্ন প্রকল্প এবং সংস্থায় হতে পারে।
যদি একটি নেটওয়ার্ক সংযুক্তি একটি ব্যক্তিগত পরিষেবা সংযোগ ইন্টারফেস থেকে একটি সংযোগ গ্রহণ করে, Google ক্লাউড ইন্টারফেসটিকে একটি ভোক্তা সাবনেট থেকে একটি IP ঠিকানা বরাদ্দ করে যা নেটওয়ার্ক সংযুক্তি দ্বারা নির্দিষ্ট করা হয়েছে৷ ভোক্তা এবং প্রযোজক নেটওয়ার্ক সংযুক্ত এবং অভ্যন্তরীণ আইপি ঠিকানা ব্যবহার করে যোগাযোগ করতে পারে।
একটি নেটওয়ার্ক সংযুক্তি এবং একটি প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেসের মধ্যে একটি সংযোগ একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট এবং একটি পরিষেবা সংযুক্তির মধ্যে সংযোগের অনুরূপ, তবে এর দুটি মূল পার্থক্য রয়েছে:
- একটি নেটওয়ার্ক সংযুক্তি একটি প্রযোজক নেটওয়ার্ককে একটি ভোক্তা নেটওয়ার্কের সাথে সংযোগ শুরু করতে দেয় (পরিচালিত পরিষেবা বহির্গমন), যখন একটি এন্ডপয়েন্ট একটি ভোক্তা নেটওয়ার্ককে একটি প্রযোজক নেটওয়ার্কের সাথে সংযোগ শুরু করতে দেয় (পরিচালিত পরিষেবা প্রবেশ)।
- একটি ব্যক্তিগত পরিষেবা সংযোগ ইন্টারফেস সংযোগ ট্রানজিটিভ। এর মানে হল যে একটি প্রযোজক নেটওয়ার্ক ভোক্তা নেটওয়ার্কের সাথে সংযুক্ত অন্যান্য নেটওয়ার্কগুলির সাথে যোগাযোগ করতে পারে।
ভার্টেক্স এআই পিএসসি-ইন্টারফেস পৌঁছানোর যোগ্যতা বিবেচনা
- PSC-ইন্টারফেস RFC1918 ঠিকানা ব্লকের মধ্যে VPC বা অন-প্রিমেসিস ভিত্তিক গন্তব্যে ট্র্যাফিক রুট করতে সক্ষম।
- PSC-ইন্টারফেস লক্ষ্য করে নন rfc-1918 অ্যাড্রেস ব্লকের জন্য ভোক্তার ভিপিসিতে rfc-1918 অ্যাড্রেস সহ একটি সুস্পষ্ট প্রক্সি মোতায়েন করা প্রয়োজন। ভার্টেক্স এআই ডিপ্লয়মেন্টের মধ্যে, প্রক্সিকে অবশ্যই টার্গেট এন্ডপয়েন্টের একটি FQDN সহ সংজ্ঞায়িত করতে হবে।
- আপনি যখন শুধুমাত্র একটি PSC ইন্টারফেস দিয়ে আপনার স্থাপনা কনফিগার করেন, তখন এটি তার ডিফল্ট ইন্টারনেট অ্যাক্সেস বজায় রাখে। এই আউটবাউন্ড ট্রাফিক নিরাপদ, Google-পরিচালিত ভাড়াটে নেটওয়ার্ক থেকে সরাসরি প্রস্থান করে।
ভার্টেক্স এআই পিএসসি-ইন্টারফেস ভিপিসি-এসসি বিবেচনা
- যখন আপনার প্রোজেক্ট একটি VPC সার্ভিস কন্ট্রোলস পরিধির অংশ হয়, তখন Google-পরিচালিত ভাড়াটেদের ডিফল্ট ইন্টারনেট অ্যাক্সেস পেরিমিটার দ্বারা ব্লক করা হয় যাতে ডেটা অপসারণ রোধ করা যায়।
- এই পরিস্থিতিতে সর্বজনীন ইন্টারনেটে স্থাপনার অ্যাক্সেসের অনুমতি দেওয়ার জন্য, আপনাকে অবশ্যই একটি নিরাপদ প্রস্থান পথ কনফিগার করতে হবে যা আপনার VPC এর মাধ্যমে ট্র্যাফিককে রুট করে।
- এটি অর্জনের প্রস্তাবিত উপায় হল আপনার VPC পরিধির ভিতরে একটি RFC1918 ঠিকানা সহ একটি প্রক্সি সার্ভার সেট আপ করা এবং প্রক্সি VM-কে ইন্টারনেট অ্যাক্সেস করার অনুমতি দেওয়ার জন্য একটি Cloud NAT গেটওয়ে তৈরি করা৷
অতিরিক্ত তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি পড়ুন:
একটি এজেন্ট স্থাপন | Vertex AI-তে জেনারেটিভ AI | গুগল ক্লাউড
Vertex AI সংস্থানগুলির জন্য একটি ব্যক্তিগত পরিষেবা সংযোগ ইন্টারফেস সেট আপ করুন | গুগল ক্লাউড
আপনি কি নির্মাণ করবেন
এই টিউটোরিয়ালে, আপনি প্রাইভেট সার্ভিস কানেক্ট (PSC) ইন্টারফেসের সাথে একটি বিস্তৃত এজেন্ট ইঞ্জিন তৈরি করতে যাচ্ছেন যাতে একটি RFC1918 ঠিকানা সহ ভোক্তার ভিপিসিতে স্থাপন করা একটি প্রক্সি VM এর মাধ্যমে একটি পাবলিক সাইটে (https://api.frankfurter.app/) সংযোগের অনুমতি দেওয়া হয়। উদাহরণ স্থাপন একটি VPC-SC সক্ষম প্রকল্পে বা প্রশাসকদের জন্য প্রযোজ্য যাদের জন্য ভাড়াটে ভিপিসির পরিবর্তে গ্রাহকদের নেটওয়ার্কের মাধ্যমে ইন্টারনেট প্রস্থান প্রয়োজন৷
চিত্র 1
আপনি টেন্যান্ট প্রোজেক্ট হোস্টিং এজেন্ট ইঞ্জিনে কনজিউমার নেটওয়ার্ক প্রক্সি-ভিএম সমাধান করতে কনজিউমার ভিপিসি লিভারেজিং ডিএনএস পিয়ারিং-এ একটি একক psc-নেটওয়ার্ক-অ্যাটাচমেন্ট তৈরি করবেন যার ফলে নিম্নলিখিত ব্যবহারের ক্ষেত্রে হবে:
এজেন্ট ইঞ্জিন স্থাপন করুন এবং একটি স্পষ্ট প্রক্সি হিসাবে কাজ করার জন্য একটি প্রক্সি VM কনফিগার করুন, এটি একটি সর্বজনীন URL https://api.frankfurter.app-এ পৌঁছানোর অনুমতি দেয়
আপনি কি শিখবেন
- কিভাবে একটি নেটওয়ার্ক সংযুক্তি তৈরি করতে হয়
- কিভাবে একজন প্রযোজক একটি PSC ইন্টারফেস তৈরি করতে একটি নেটওয়ার্ক সংযুক্তি ব্যবহার করতে পারেন
- ডিএনএস পিয়ারিং ব্যবহার করে কীভাবে প্রযোজক থেকে ভোক্তার সাথে যোগাযোগ স্থাপন করবেন
- ইন্টারনেট এগ্রেসের জন্য কীভাবে একটি প্রক্সি ভিএম স্থাপন এবং ব্যবহার করবেন
আপনি কি প্রয়োজন হবে
গুগল ক্লাউড প্রকল্প
আইএএম অনুমতি
- কম্পিউট নেটওয়ার্ক অ্যাডমিন (roles/compute.networkAdmin)
- কম্পিউট ইনস্ট্যান্স অ্যাডমিন (roles/compute.instanceAdmin)
- কম্পিউট সিকিউরিটি অ্যাডমিন (roles/compute.securityAdmin)
- DNS প্রশাসক (roles/dns.admin)
- IAP-সুরক্ষিত টানেল ব্যবহারকারী (roles/iap.tunnelResourceAccessor)
- লগিং অ্যাডমিন (roles/logging.admin)
- নোটবুক অ্যাডমিন (roles/notebooks.admin)
- প্রজেক্ট IAM অ্যাডমিন (roles/resourcemanager.projectIamAdmin)
- সার্ভিস অ্যাকাউন্ট অ্যাডমিন (roles/iam.serviceAccountAdmin)
- পরিষেবা ব্যবহার অ্যাডমিন (roles/serviceusage.serviceUsageAdmin)
2. আপনি শুরু করার আগে
টিউটোরিয়াল সমর্থন করার জন্য প্রকল্পটি আপডেট করুন
এই টিউটোরিয়ালটি ক্লাউড শেল-এ gcloud কনফিগারেশন বাস্তবায়নে সহায়তা করার জন্য $variables ব্যবহার করে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
API সক্ষমতা
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "dns.googleapis.com"
gcloud services enable "notebooks.googleapis.com"
gcloud services enable "storage.googleapis.com"
gcloud services enable "iap.googleapis.com"
যাচাই করুন যে API গুলি সফলভাবে সক্ষম হয়েছে৷
gcloud services list --enabled
3. ভোক্তা সেটআপ
কনজিউমার ভিপিসি তৈরি করুন
এই ভিপিসি একটি গ্রাহক প্রকল্পে থাকে। এই ভিপিসিতে নিম্নলিখিত সংস্থানগুলি তৈরি করা হবে
- ভোক্তা সাবনেট
- নেটওয়ার্ক সংযুক্তি সাবনেট
- ক্লাউড রাউটার (ক্লাউড NAT এর জন্য প্রয়োজনীয়)
- মেঘ NAT
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
ভোক্তা সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, প্রক্সি ভিএম-এর জন্য সাবনেট তৈরি করুন:
gcloud compute networks subnets create rfc1918-subnet1 --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1
প্রাইভেট সার্ভিস কানেক্ট নেটওয়ার্ক অ্যাটাচমেন্ট সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, PSC নেটওয়ার্ক সংযুক্তির জন্য সাবনেট তৈরি করুন:
gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1
ক্লাউড রাউটার এবং NAT কনফিগারেশন
এই টিউটোরিয়ালে, ক্লাউড NAT প্রক্সি VM-এর জন্য ইন্টারনেট অ্যাক্সেস প্রদান করতে ব্যবহৃত হয়, যার কোনো পাবলিক আইপি ঠিকানা নেই। ক্লাউড NAT শুধুমাত্র ব্যক্তিগত আইপি ঠিকানা সহ VM-এর জন্য ইন্টারনেটের সাথে সংযোগ করা সম্ভব করে তোলে, তাদের সফ্টওয়্যার প্যাকেজ ইনস্টল করার মতো কাজগুলি সম্পাদন করার অনুমতি দেয়।
ক্লাউড শেলের ভিতরে, ক্লাউড রাউটার তৈরি করুন।
gcloud compute routers create cloud-router-for-nat --network consumer-vpc --region us-central1
ক্লাউড শেলের ভিতরে, লগিং সক্ষম করে NAT গেটওয়ে তৈরি করুন। ফ্রাঙ্কফুর্টার API (https://api.frankfurter.app/) এর জন্য পাবলিক আইপি-তে অ্যাক্সেস যাচাই করতে আমরা লগিং ব্যবহার করব।
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1 --enable-logging --log-filter=ALL
4. IAP সক্ষম করুন৷
IAP কে আপনার VM দৃষ্টান্তের সাথে সংযোগ করার অনুমতি দিতে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:
- আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য হতে চান এমন সমস্ত VM দৃষ্টান্তগুলিতে প্রযোজ্য।
- IP পরিসর 35.235.240.0/20 থেকে ট্র্যাফিক প্রবেশের অনুমতি দেয়। এই পরিসরে সমস্ত আইপি ঠিকানা রয়েছে যা IAP TCP ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।
ক্লাউড শেলের ভিতরে, IAP ফায়ারওয়াল নিয়ম তৈরি করুন।
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
5. ভোক্তা VM দৃষ্টান্ত তৈরি করুন
ক্লাউড শেলের মধ্যে, ভোক্তা VM দৃষ্টান্ত তৈরি করুন, proxy-vm, যা এজেন্ট ইঞ্জিনের জন্য স্পষ্ট প্রক্সি হিসাবে কাজ করবে। আমরা HTTP ট্র্যাফিক প্রক্সি করার জন্য অ্যাপ্লিকেশন হিসাবে tinyproxy ব্যবহার করব।
gcloud compute instances create proxy-vm \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--can-ip-forward \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=rfc1918-subnet1 \
--shielded-secure-boot \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump
sudo apt-get install tinyproxy -y
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'proxy server !!' | tee /var/www/html/index.html
EOF"
6. ব্যক্তিগত পরিষেবা সংযোগ নেটওয়ার্ক সংযুক্তি
নেটওয়ার্ক সংযুক্তিগুলি হল আঞ্চলিক সংস্থান যা একটি প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেসের ভোক্তাদের প্রতিনিধিত্ব করে। আপনি একটি নেটওয়ার্ক সংযুক্তির সাথে একটি একক সাবনেট সংযুক্ত করেন এবং প্রযোজক সেই সাবনেট থেকে প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেসে আইপি বরাদ্দ করেন। সাবনেটটি অবশ্যই নেটওয়ার্ক সংযুক্তির মতো একই অঞ্চলে হতে হবে৷ একটি নেটওয়ার্ক সংযুক্তি অবশ্যই প্রযোজক পরিষেবার মতো একই অঞ্চলে হতে হবে৷
নেটওয়ার্ক সংযুক্তি তৈরি করুন
ক্লাউড শেলের ভিতরে, নেটওয়ার্ক সংযুক্তি তৈরি করুন।
gcloud compute network-attachments create psc-network-attachment \
--region=us-central1 \
--connection-preference=ACCEPT_AUTOMATIC \
--subnets=intf-subnet
নেটওয়ার্ক সংযুক্তি তালিকা
ক্লাউড শেলের ভিতরে, নেটওয়ার্ক সংযুক্তি তালিকাভুক্ত করুন।
gcloud compute network-attachments list
নেটওয়ার্ক সংযুক্তি বর্ণনা করুন
ক্লাউড শেলের ভিতরে, নেটওয়ার্ক সংযুক্তি বর্ণনা করুন।
gcloud compute network-attachments describe psc-network-attachment --region=us-central1
PSC নেটওয়ার্ক সংযুক্তির নাম, psc-network-attachment
নোট করুন, যেটি প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেস তৈরি করার সময় প্রযোজক ব্যবহার করবেন।
ক্লাউড কনসোলে পিএসসি নেটওয়ার্ক সংযুক্তি URL দেখতে, নিম্নলিখিতটিতে নেভিগেট করুন:
নেটওয়ার্ক পরিষেবা → ব্যক্তিগত পরিষেবা সংযোগ → নেটওয়ার্ক সংযুক্তি → psc-নেটওয়ার্ক-সংযুক্তি
7. ব্যক্তিগত DNS জোন
আপনি demo.com
জন্য একটি ক্লাউড ডিএনএস জোন তৈরি করবেন এবং এটিকে একটি A রেকর্ড দিয়ে তৈরি করবেন যা আপনার প্রক্সি-ভিএম-এর আইপি ঠিকানাগুলি নির্দেশ করে৷ পরে, এজেন্ট ইঞ্জিনে ডিএনএস পিয়ারিং স্থাপন করা হবে, যা ভোক্তার ডিএনএস রেকর্ডে অ্যাক্সেসের অনুমতি দেবে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতটি সম্পাদন করুন যা একটি DNS নাম demo.com তৈরি করে।
gcloud dns --project=$projectid managed-zones create private-dns-codelab --description="" --dns-name="demo.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc"
DNS A রেকর্ডের জন্য ব্যবহৃত উদাহরণগুলির IP ঠিকানাগুলি প্রাপ্ত করুন এবং সংরক্ষণ করুন৷
ক্লাউড শেলের ভিতরে, VM দৃষ্টান্তগুলির বিরুদ্ধে একটি বর্ণনা সম্পাদন করুন।
gcloud compute instances describe proxy-vm --zone=us-central1-a | grep networkIP:
ক্লাউড শেলের ভিতরে, VM, proxy-vm.demo.com-এর জন্য সেট করা রেকর্ড তৈরি করুন, আপনার পরিবেশের আউটপুটের উপর ভিত্তি করে IP ঠিকানা আপডেট করা নিশ্চিত করুন।
gcloud dns --project=$projectid record-sets create proxy-vm.demo.com. --zone="private-dns-codelab" --type="A" --ttl="300" --rrdatas="10.10.10.2"
PSC ইন্টারফেস থেকে অ্যাক্সেসের অনুমতি দিতে একটি ক্লাউড ফায়ারওয়াল নিয়ম তৈরি করুন
নিম্নলিখিত বিভাগে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা PSC নেটওয়ার্ক সংযুক্তি থেকে উদ্ভূত ট্রাফিককে কনজিউমার ভিপিসি-তে প্রক্সি-ভিএম অ্যাক্সেস করার অনুমতি দেয়।
ক্লাউড শেলে, ইনগ্রেস ফায়ারওয়াল নিয়ম তৈরি করুন।
gcloud compute firewall-rules create allow-access-to-compute \
--network=consumer-vpc \
--action=ALLOW \
--rules=ALL \
--direction=INGRESS \
--priority=1000 \
--source-ranges="192.168.10.0/28" \
--destination-ranges="10.10.10.0/28" \
--enable-logging
8. একটি জুপিটার নোটবুক তৈরি করুন
নিম্নলিখিত বিভাগটি জুপিটার নোটবুক তৈরির মাধ্যমে আপনাকে গাইড করে। এই নোটবুকটি ইন্টারনেট এগ্রেসের জন্য একটি সুস্পষ্ট প্রক্সি লক্ষ্য করে এজেন্ট ইঞ্জিন স্থাপন করতে ব্যবহার করা হবে।
একটি ব্যবহারকারী পরিচালিত পরিষেবা অ্যাকাউন্ট তৈরি করুন
নিম্নলিখিত বিভাগে, আপনি একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন যা টিউটোরিয়ালে ব্যবহৃত Vertex AI Workbench উদাহরণের সাথে যুক্ত হবে।
টিউটোরিয়ালে, পরিষেবা অ্যাকাউন্টে নিম্নলিখিত ভূমিকাগুলি প্রয়োগ করা হবে:
- স্টোরেজ অ্যাডমিন
- ভার্টেক্স এআই ব্যবহারকারী
- আর্টিফ্যাক্ট রেজিস্ট্রি অ্যাডমিনিস্ট্রেটর
- IAM পরিষেবা অ্যাকাউন্ট ব্যবহারকারী
ক্লাউড শেলের ভিতরে, পরিষেবা অ্যাকাউন্ট তৈরি করুন।
gcloud iam service-accounts create notebook-sa \
--display-name="notebook-sa"
ক্লাউড শেলের ভিতরে, স্টোরেজ অ্যাডমিনের ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
ক্লাউড শেলের ভিতরে, Vertex AI ব্যবহারকারীর ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
ক্লাউড শেলের ভিতরে, আর্টিফ্যাক্ট রেজিস্ট্রি অ্যাডমিনের ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
ক্লাউড শেলের ভিতরে, নোটবুক পরিষেবা অ্যাকাউন্টটিকে কম্পিউট ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করার অনুমতি দিন।
gcloud iam service-accounts add-iam-policy-binding \
$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')-compute@developer.gserviceaccount.com \
--member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
9. স্পষ্ট প্রক্সি আপডেট করুন৷
নিম্নলিখিত বিভাগে, আপনাকে স্পষ্ট প্রক্সিতে ssh করতে হবে এবং tinyproxy.conf কনফিগারেশন ফাইল আপডেট করতে হবে এবং তারপরে একটি রিসেট সম্পাদন করতে হবে।
ক্লাউড শেল থেকে
gcloud compute ssh --zone us-central1-a "proxy-vm" --tunnel-through-iap --project $projectid
tinyproxy কনফিগারেশন ফাইল খুলুন, একটি সম্পাদক বা আপনার পছন্দ ব্যবহার করে আপডেট করুন। নীচে ভিআইএম ব্যবহার করে একটি উদাহরণ দেওয়া হল।
sudo vim /etc/tinyproxy/tinyproxy.conf
# Locate the "Listen" configuration line to restrict listening to only its private IP address of the Proxy-VM, rather than all interfaces.
Listen 10.10.10.2
# Locate the "Allow" configuration line to allow requests ONLY from the PSC Network Attachment Subnet
Allow 192.168.10.0/24
Save the configs by the following steps:
1. Press the `ESC` key to enter Command Mode.
2. Type `:wq` to save (w) and quit (q).
3. Press `Enter`
Restart the tinyproxy service to apply the changes:
sudo systemctl restart tinyproxy
Validate the tinyproxy service is running:
sudo systemctl status tinyproxy
Perform an exit returning to cloud shell
exit
10. একটি ভার্টেক্স এআই ওয়ার্কবেঞ্চ ইনস্ট্যান্স তৈরি করুন
নিম্নলিখিত বিভাগে, একটি Vertex AI ওয়ার্কবেঞ্চ উদাহরণ তৈরি করুন যা পূর্বে তৈরি পরিষেবা অ্যাকাউন্ট, নোটবুক-সা অন্তর্ভুক্ত করে।
ক্লাউড শেলের ভিতরে ব্যক্তিগত-ক্লায়েন্ট উদাহরণ তৈরি করুন।
gcloud workbench instances create workbench-tutorial --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --machine-type=n1-standard-4 --location=us-central1-a --subnet-region=us-central1 --subnet=rfc1918-subnet1 --disable-public-ip --shielded-secure-boot=true --shielded-integrity-monitoring=true --shielded-vtpm=true --service-account-email=notebook-sa@$projectid.iam.gserviceaccount.com
11. ভার্টেক্স এআই সার্ভিস এজেন্ট আপডেট
Vertex AI আপনার পক্ষে কাজ করে যেমন PSC ইন্টারফেস তৈরি করতে ব্যবহৃত PSC নেটওয়ার্ক সংযুক্তি সাবনেট থেকে একটি IP ঠিকানা প্রাপ্ত করার মতো ক্রিয়াকলাপগুলি সম্পাদন করতে। এটি করার জন্য, Vertex AI একটি পরিষেবা এজেন্ট ব্যবহার করে (নীচে তালিকাভুক্ত) যার জন্য নেটওয়ার্ক অ্যাডমিনের অনুমতি প্রয়োজন:
service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com
ক্লাউড শেলের ভিতরে, আপনার প্রকল্প নম্বর পান।
gcloud projects describe $projectid | grep projectNumber
ক্লাউড শেলের ভিতরে, আপনার প্রকল্প নম্বর সেট করুন।
projectnumber=YOUR-PROJECT-Number
ক্লাউড শেলের ভিতরে, এআই প্ল্যাটফর্মের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন। আপনার প্রকল্পে একটি বিদ্যমান পরিষেবা অ্যাকাউন্ট থাকলে এই পদক্ষেপটি এড়িয়ে যান।
gcloud beta services identity create --service=aiplatform.googleapis.com --project=$projectnumber
ক্লাউড শেলের ভিতরে, compute.networkAdmin ভূমিকা সহ পরিষেবা এজেন্ট অ্যাকাউন্ট আপডেট করুন।
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com" --role="roles/compute.networkAdmin"
ক্লাউড শেলের ভিতরে, dns.peer ভূমিকা সহ পরিষেবা এজেন্ট অ্যাকাউন্ট আপডেট করুন
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com" --role="roles/dns.peer"
ডিফল্ট পরিষেবা অ্যাকাউন্ট আপডেট
Vertex AI-তে আপনার ডিফল্ট পরিষেবা অ্যাকাউন্ট অ্যাক্সেস মঞ্জুর করুন । নোট করুন যে অ্যাক্সেস পরিবর্তনটি প্রচার হতে কিছুটা সময় লাগতে পারে৷
ক্লাউড শেলের ভিতরে, ভূমিকা aiplatform.user দিয়ে ডিফল্ট পরিষেবা অ্যাকাউন্ট আপডেট করুন
gcloud projects add-iam-policy-binding $projectid \
--member="serviceAccount:$projectnumber-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"
12. প্রক্সি VM Tcpdump
এজেন্ট ইঞ্জিন থেকে আইপি সংযোগ যাচাই করতে, আমরা TCPDUMP ব্যবহার করতে পারি। এটি আমাদের PSC নেটওয়ার্ক সংযুক্তি সাবনেট, 192.168.10.0/28 থেকে উদ্ভূত যোগাযোগ পর্যবেক্ষণ করার অনুমতি দেবে যখন এজেন্ট ইঞ্জিন থেকে পাবলিক ইউআরএলে পাওয়ার অনুরোধ জানানো হবে।
ক্লাউড শেল ssh থেকে প্রক্সি ভিএম-এ।
gcloud compute ssh --zone us-central1-a "proxy-vm" --tunnel-through-iap --project $projectid
proxy-vm OS থেকে tcpdump চালান।
sudo tcpdump -i any net 192.168.10.0/28 -nn
13. এজেন্ট ইঞ্জিন স্থাপন করুন
দ্রষ্টব্য: এই বিভাগে কাজগুলি সম্পূর্ণ করতে আমরা GCP কনসোল এবং JupyterLab নোটবুক ব্যবহার করব
নিম্নলিখিত বিভাগে, আপনি একটি নোটবুক তৈরি করবেন যা নিম্নলিখিত কাজগুলি সম্পাদন করে:
- বিনিময় হার ডেটা পেতে ফ্রাঙ্কফুর্টার API (https://api.frankfurter.app/) ব্যবহার করে
- FQDN proxy-vm.demo.com ব্যবহার করে ভোক্তাদের ভিপিসিতে প্রক্সি-ভিএম লক্ষ্য করে একটি স্পষ্ট প্রক্সি (প্রক্সি_সার্ভার) উল্লেখ করে
- dnsPeeringConfigs "domain" সংজ্ঞায়িত করুন: "demo.com।"
ভার্টেক্স এআই ওয়ার্কবেঞ্চ উদাহরণে প্রশিক্ষণের কাজটি চালান।
- Google ক্লাউড কনসোলে, Vertex AI → Workbench-এ নেভিগেট করুন
- আপনার Vertex AI ওয়ার্কবেঞ্চ ইনস্ট্যান্সের নামের পাশে (ওয়ার্কবেঞ্চ-টিউটোরিয়াল), JupyterLab খুলুন ক্লিক করুন। আপনার ভার্টেক্স এআই ওয়ার্কবেঞ্চের উদাহরণ জুপিটারল্যাবে খোলে।
- ফাইল > নতুন > নোটবুক নির্বাচন করুন
- কার্নেল > পাইথন 3 নির্বাচন করুন
প্রয়োজনীয় পাইথন লাইব্রেরি ইনস্টল করুন: এজেন্ট ইঞ্জিনের জন্য প্রয়োজনীয় লাইব্রেরি ইনস্টল করুন, যার মধ্যে রয়েছে pyyaml, google-cloud-aiplatform, cloudpickle, google-cloud-api-keys এবং langchain-google-vertexai।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
!pip install pyyaml
!pip install google-cloud-aiplatform[agent_engines,langchain]==1.96.0
!pip install cloudpickle==3.1.1
!pip install google-cloud-api-keys
!pip install langchain-google-vertexai==2.0.24
জুপিটার নোটবুক কার্নেল পুনরায় চালু করুন: নিশ্চিত করুন যে নতুন ইনস্টল করা লাইব্রেরিগুলি সঠিকভাবে লোড হয়েছে।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
# Restart the notebook kernel after install, so you can run langchain successfully.
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
প্রকল্প এবং বালতি ভেরিয়েবল সেট করুন: আপনার Google ক্লাউড প্রকল্প আইডি, প্রকল্প নম্বর, পরিষেবার নাম, GCS ডিরেক্টরি, শেষ পয়েন্ট, বালতির নাম এবং অবস্থান নির্ধারণ করুন।
আপনি সেল চালানোর আগে নিম্নলিখিত ক্ষেত্র আপডেট করুন
- PROJECT_ID = "এন্টার-ইওর-প্রজেক্টিড"
- PROJECT_NUMBER = "আপনার-প্রকল্প নম্বর লিখুন"
- BUCKET = "এন্টার-একটি-অনন্য-বালতি-নাম"
দ্রষ্টব্য: আমরা পরবর্তী ধাপে একটি ক্লাউড স্টোরেজ বাকেট তৈরি করতে BUCKET ভেরিয়েবল ব্যবহার করব।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন, আপডেট করুন এবং নিম্নলিখিতগুলি চালান৷
PROJECT_ID = "enter-your-projectid" #@param {type:"string"}
PROJECT_NUMBER = "enter-your-projectnumber" #@param {type:"string"}
SERVICE_NAME = "aiplatform" #@param ["autopush-aiplatform", "staging-aiplatform", "aiplatform"]
# @markdown Specify where your agent code should be written in GCS:
GCS_DIR = "reasoning-engine-test" #@param {type:"string"}
ENDPOINT = "https://us-central1-aiplatform.googleapis.com" # @param ["https://us-central1-aiplatform.googleapis.com", "https://us-central1-autopush-aiplatform.sandbox.googleapis.com", "https://us-central1-staging-aiplatform.sandbox.googleapis.com"]
BUCKET= "enter-a-unique-bucket-name" #@param {type:"string"}
LOCATION="us-central1" #@param {type:"string"}
একটি GCS বালতি তৈরি করুন: এজেন্ট কোড সংরক্ষণের জন্য একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
!gcloud storage buckets create gs://{BUCKET}
নেটওয়ার্ক সংযুক্তির নাম নির্ধারণ করুন: আপনার ব্যক্তিগত পরিষেবা সংযোগ নেটওয়ার্ক সংযুক্তির নাম উল্লেখ করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
NETWORK_ATTACHMENT_NAME = 'psc-network-attachment' #@param {type:"string"}
পাইথন ক্লায়েন্ট লাইব্রেরি শুরু করুন: Google ক্লাউড পরিষেবাগুলির জন্য প্রয়োজনীয় ক্লায়েন্ট লাইব্রেরি সেট আপ করুন৷
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
import json
import pprint
import cloudpickle
from google import auth as google_auth
from google.auth.transport import requests as google_requests
from google.cloud import storage
import yaml
def get_identity_token():
"""Gets ID token for calling Cloud Run."""
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.id_token
if not GCS_DIR or "your_ldap" in GCS_DIR:
raise ValueError("GCS_DIR must be set or you must set your ldap.")
if not PROJECT_ID:
raise ValueError("PROJECT_ID must be set.")
client = storage.Client(project=PROJECT_ID)
bucket = client.get_bucket(BUCKET)
এজেন্ট এবং টুল কনফিগার করুন: স্পষ্ট প্রক্সির মাধ্যমে Frankfurter API ব্যবহার করে মুদ্রা বিনিময় হার আনতে StreamingAgent ক্লাস এবং get_exchange_rate ফাংশন সংজ্ঞায়িত করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নীচের কনফিগারেশনটি চালান, নিম্নলিখিত হাইলাইটগুলি নোট করুন:
- def get_exchange_rate ফাংশন বিনিময় হার ডেটা পেতে ফ্রাঙ্কফুর্টার API (https://api.frankfurter.app/) ব্যবহার করবে।
- proxy_server = "http://proxy-vm.demo.com:8888" FQDN ভোক্তা VPC-তে স্থাপন করা প্রক্সি vm-এর সাথে যুক্ত। আমরা পরবর্তী ধাপে FQDN সমাধান করতে DNS পিয়ারিং ব্যবহার করছি।
from langchain_google_vertexai import ChatVertexAI
from langchain.agents import AgentExecutor
from langchain.agents.format_scratchpad.tools import format_to_tool_messages
from langchain.agents.output_parsers.tools import ToolsAgentOutputParser
from langchain.tools.base import StructuredTool
from langchain_core import prompts
from re import S
from typing import Callable, Sequence
import google.auth
import vertexai
class StreamingAgent:
def __init__(
self,
model: str,
tools: Sequence[Callable],
project_id: str,
):
self.model_name = model
self.tools = tools
self.project_id = project_id
def set_up(self):
"""All unpickle-able logic should go here.
The .set_up() method should not be called for an object that is being
prepared for deployment.
"""
creds, _ = google.auth.default(quota_project_id=self.project_id)
vertexai.init(project=self.project_id, location="us-central1", credentials=creds)
prompt = {
"input": lambda x: x["input"],
"agent_scratchpad": (
lambda x: format_to_tool_messages(x["intermediate_steps"])
),
} | prompts.ChatPromptTemplate.from_messages([
("user", "{input}"),
prompts.MessagesPlaceholder(variable_name="agent_scratchpad"),
])
llm = ChatVertexAI(model_name=self.model_name)
if self.tools:
llm = llm.bind_tools(tools=self.tools)
self.agent_executor = AgentExecutor(
agent=prompt | llm | ToolsAgentOutputParser(),
tools=[StructuredTool.from_function(tool) for tool in self.tools],
)
def query(self, input: str):
"""Query the application.
Args:
input: The user prompt.
Returns:
The output of querying the application with the given input.
"""
return self.agent_executor.invoke(input={"input": input})
def stream_query(self, input: str):
"""Query the application and stream the output.
Args:
input: The user prompt.
Yields:
Chunks of the response as they become available.
"""
for chunk in self.agent_executor.stream(input={"input": input}):
yield chunk
def get_exchange_rate(
currency_from: str = "USD",
currency_to: str = "EUR",
currency_date: str = "latest",
):
"""Retrieves the exchange rate between two currencies on a specified date.
Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
exchange rate data.
Args:
currency_from: The base currency (3-letter currency code).
Defaults to "USD" (US Dollar).
currency_to: The target currency (3-letter currency code).
Defaults to "EUR" (Euro).
currency_date: The date for which to retrieve the exchange rate.
Defaults to "latest" for the most recent exchange rate data.
Can be specified in YYYY-MM-DD format for historical rates.
Returns:
dict: A dictionary containing the exchange rate information.
Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
"rates": {"EUR": 0.95534}}
"""
import requests
proxy_server = "http://proxy-vm.demo.com:8888" # This is the VM's FQDN to reach the proxy vm in the consumers network
proxies = {
"http": proxy_server,
"https": proxy_server,
}
response = requests.get(
f"https://api.frankfurter.app/{currency_date}",
params={"from": currency_from, "to": currency_to},
proxies=proxies,
)
return response.json()
ক্লাউড স্টোরেজে এজেন্ট ফাইল আপলোড করুন: আপনার মনোনীত GCS বালতিতে ক্রমিক এজেন্ট এবং এর প্রয়োজনীয়তা আপলোড করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতগুলি চালান:
# Upload files to Cloud Storage.
if not GCS_DIR:
raise ValueError("GCS_DIR must be set.")
FILE = "streaming_agent.pkl"
blob = bucket.blob(f"{GCS_DIR}/{FILE}")
with blob.open("wb") as f:
cloudpickle.dump(
StreamingAgent(
model="gemini-2.0-flash-001", # Required.
tools=[get_exchange_rate], # Optional.
project_id=PROJECT_ID
), f)
requirements = """
google-cloud-aiplatform[agent_engines,langchain]==1.96.0
cloudpickle==3.1.1
"""
blob = bucket.blob(f"{GCS_DIR}/requirements-streaming.txt")
blob.upload_from_string(requirements)
!gsutil ls gs://{BUCKET}/{GCS_DIR}
এজেন্ট ইঞ্জিন স্থাপন করুন: এজেন্ট ইঞ্জিনটি স্থাপন করুন, এটিকে PSC ইন্টারফেস এবং DNS পিয়ারিংয়ের সাথে কনফিগার করে ভোক্তা VPC-তে প্রক্সি VM-এর FQDN সমাধান করুন৷
আপনার JupyterLab নোটবুকে, নীচের সেলটি তৈরি করুন এবং চালান, নিম্নলিখিত হাইলাইটগুলি নোট করুন:
- ডিএনএস পিয়ারিং টু কনজিউমার ভিপিসি ডোমেন নামের demo.com এর জন্য dnsPeeringConfigs (dnsPeeringConfigs) ব্যবহার করে কনফিগার করা হয়েছে।
import requests
token = !gcloud auth application-default print-access-token
response = requests.post(
f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {token[0]}"
},
data=json.dumps({
"displayName": "PSC-I Explicit Proxy",
"description": "test psc-i agent + proxy vm",
"spec": {
"packageSpec": {
"pickleObjectGcsUri": f"gs://{BUCKET}/{GCS_DIR}/streaming_agent.pkl",
"requirementsGcsUri": f"gs://{BUCKET}/{GCS_DIR}/requirements-streaming.txt",
"pythonVersion": "3.10"
},
"deploymentSpec": {
"pscInterfaceConfig": {
"networkAttachment": NETWORK_ATTACHMENT_NAME,
"dnsPeeringConfigs": [
{
"domain": "demo.com.",
"targetProject": PROJECT_ID,
"targetNetwork": "consumer-vpc", #Consumer VPC
},
],
}
}
},
})
)
pprint.pprint(json.loads(response.content))
reasoning_engine_id = json.loads(response.content)["name"].split("/")[5]
pprint.pprint(reasoning_engine_id)
নিরীক্ষণের স্থিতি: এজেন্ট ইঞ্জিন স্থাপনা অপারেশনের অবস্থা পরীক্ষা করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
operation_id = json.loads(response.content)["name"].split("/")[7]
pprint.pprint(operation_id)
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
দ্রষ্টব্য: এই অপারেশনটি সম্পূর্ণ হতে প্রায় 5 মিনিট সময় নিতে পারে। অগ্রগতি পরীক্ষা করতে সেলটি পুনরায় চালান। আপনি নীচের স্ক্রিনশট অনুরূপ একটি আউটপুট দেখতে না হওয়া পর্যন্ত অনুগ্রহ করে পরবর্তী বিভাগে এগিয়ে যাবেন না.
# You can run this multiple times to check the status of the deployment operation, operation takes approx 5 min.
token = !gcloud auth application-default print-access-token
response = requests.get(
f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/operations/{operation_id} ",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {token[0]}"
}
)
pprint.pprint(json.loads(response.content))
একটি সফল রানের উদাহরণ:
নিয়োজিত এজেন্টকে জিজ্ঞাসা করুন: নিয়োজিত এজেন্ট ইঞ্জিনের কার্যকারিতা পরীক্ষা করতে একটি প্রশ্ন পাঠান।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান।
response = requests.post(
f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{reasoning_engine_id}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {token[0]}"
},
data=json.dumps({ "input": {"input": "What is the exchange rate from US dollars to Euro?"} })
)
print(response.text)
স্ট্রীম কোয়েরি ফলাফল: এজেন্ট ইঞ্জিন কোয়েরি থেকে আউটপুট স্ট্রীম করুন।
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান যা গ্রাহকদের VPC-তে স্পষ্ট প্রক্সি ব্যবহার করে সর্বজনীন URL-এ API কল ট্রিগার করবে৷
token = !gcloud auth application-default print-access-token
print(f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/us-central1/reasoningEngines/{reasoning_engine_id}:streamQuery")
response = requests.post(
f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/us-central1/reasoningEngines/{reasoning_engine_id}:streamQuery",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {token[0]}"
},
data=json.dumps({ "input": {"input": "What is the exchange rate from US dollars to Euro?"} })
)
for chunk in response.iter_lines():
print(chunk.decode('utf-8'))
# pprint.pprint(json.loads(response.content))
একটি সফল রানের উদাহরণ:
14. Tcpdump বৈধতা
tcpdump আউটপুট দেখুন যা অনুরোধ পোস্টে এজেন্ট ইঞ্জিন এবং Prox-VM দ্বারা ব্যবহৃত PSC নেটওয়ার্ক সংযুক্তি IP ঠিকানার মধ্যে যোগাযোগের বিবরণ দেয়।
user@proxy-vm:~$ sudo tcpdump -i any net 192.168.10.0/28 -nn tcpdump: data link type LINUX_SLL2 tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes 22:17:53.983212 ens4 In IP 192.168.10.2.22261 > 10.10.10.2.8888: Flags [S], seq 3841740961, win 28800, options [mss 1440,sackOK,TS val 4245243253 ecr 0,nop,wscale 7], length 0 22:17:53.983252 ens4 Out IP 10.10.10.2.8888 > 192.168.10.2.22261: Flags [S.], seq 2232973833, ack 3841740962, win 64768, options [mss 1420,sackOK,TS val 2251247643 ecr 4245243253,nop,wscale 7], length 0 22:17:53.985167 ens4 In IP 192.168.10.2.22261 > 10.10.10.2.8888: Flags [.], ack 1, win 225, options [nop,nop,TS val 4245243256 ecr 2251247643], length 0 22:17:53.986476 ens4 In IP 192.168.10.2.22261 > 10.10.10.2.8888: Flags [P.], seq 1:45, ack 1, win 16384, options [nop,nop,TS val 4245243256 ecr 2251247643], length 44 22:17:53.986485 ens4 Out IP 10.10.10.2.8888 > 192.168.10.2.22261: Flags [.], ack 45, win 506, options [nop,nop,TS val 2251247646 ecr 4245243256], length 0 22:17:54.043347 ens4 Out IP 10.10.10.2.8888 > 192.168.10.2.22261: Flags [P.], seq 1:71, ack 45, win 506, options [nop,nop,TS val 2251247703 ecr 4245243256], length 70
15. PSC ইন্টারফেস বৈধতা
এছাড়াও আপনি নিম্নলিখিতগুলিতে নেভিগেট করে এজেন্ট ইঞ্জিন দ্বারা ব্যবহৃত নেটওয়ার্ক সংযুক্তি আইপিগুলি দেখতে পারেন:
নেটওয়ার্ক পরিষেবা → ব্যক্তিগত পরিষেবা সংযোগ → নেটওয়ার্ক সংযুক্তি → psc-নেটওয়ার্ক-সংযুক্তি
ভাড়াটে প্রকল্প নির্বাচন করুন (প্রকল্পের নাম -tp-এ শেষ)
হাইলাইট করা ক্ষেত্রটি PSC নেটওয়ার্ক সংযুক্তি থেকে এজেন্ট ইঞ্জিন দ্বারা ব্যবহৃত IP ঠিকানা নির্দেশ করে।
16. ক্লাউড লগিং বৈধতা
proxy-vm TCPDump সেশন থেকে প্রস্থান করুন এবং সংশ্লিষ্ট সর্বজনীন IP ঠিকানা পেতে Frankfurter api.frankfurter.app-এ একটি PING করুন৷
ping -c4 api.frankfurter.app
উদাহরণ api.frankfurter.app এর জন্য 104.26.1.198 কে সর্বজনীন আইপি হিসাবে চিহ্নিত করে
user@proxy-vm:~$ ping -c4 api.frankfurter.app
PING api.frankfurter.app (104.26.1.198) 56(84) bytes of data.
64 bytes from 104.26.1.198 (104.26.1.198): icmp_seq=1 ttl=61 time=10.9 ms
64 bytes from 104.26.1.198 (104.26.1.198): icmp_seq=2 ttl=61 time=10.9 ms
64 bytes from 104.26.1.198 (104.26.1.198): icmp_seq=3 ttl=61 time=10.9 ms
64 bytes from 104.26.1.198 (104.26.1.198): icmp_seq=4 ttl=61 time=10.9 ms
104.26.1.198-এর জন্য ট্র্যাফিক পরিলক্ষিত হয় কিনা তা দেখতে NAT লগিং-এ একবার নজর দেওয়া যাক।
নিম্নলিখিত নেভিগেট করুন:
মনিটরিং → লগ এক্সপ্লোরার
নিম্নলিখিত ফিল্টার ব্যবহার করুন:
resource.type="nat_gateway"
সময়কাল নির্বাচন করুন, তারপর কোয়েরি চালান
লগ এন্ট্রিটি প্রসারিত করুন যা api.frankfurter.app-এর (গন্তব্য) পাবলিক আইপি (104.26.1.198) সনাক্ত করে এবং উত্স আইপি ঠিকানা এবং প্রক্সি-ভিএম-এর নাম যা ইন্টারনেট বহির্গমনের জন্য সুস্পষ্ট প্রক্সি ব্যবহারকে বৈধ করে।
17. পরিষ্কার করুন
আপনার JupyterLab নোটবুকে, একটি নতুন সেল তৈরি করুন এবং নিম্নলিখিতটি চালান যা এজেন্ট ইঞ্জিন স্থাপনার মুছে ফেলার ট্রিগার করবে।
token = !gcloud auth application-default print-access-token
response = requests.delete(
f"{ENDPOINT}/v1beta1/projects/{PROJECT_ID}/locations/us-central1/reasoningEngines/{reasoning_engine_id}",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {token[0]}"
},
)
print(response.text)
ক্লাউড শেল থেকে, টিউটোরিয়াল উপাদানগুলি মুছুন।
gcloud dns record-sets delete proxy-vm.demo.com --zone=private-dns-codelab --type=A
gcloud dns managed-zones delete private-dns-codelab
gcloud compute instances delete proxy-vm --zone=us-central1-a --quiet
gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet
gcloud compute networks subnets delete intf-subnet rfc1918-subnet1 --region=us-central1 --quiet
gcloud compute networks delete consumer-vpc --quiet
18. অভিনন্দন
অভিনন্দন, আপনি একটি সুস্পষ্ট প্রক্সির মাধ্যমে সম্পাদিত ইন্টারনেট এগ্রেস সহ প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেসের সাথে স্থাপন করা এজেন্ট ইঞ্জিন সফলভাবে কনফিগার এবং যাচাই করেছেন।
আপনি ভোক্তা পরিকাঠামো তৈরি করেছেন, এবং আপনি একটি নেটওয়ার্ক সংযুক্তি যোগ করেছেন যা প্রযোজককে ভোক্তা এবং প্রযোজকের যোগাযোগ সেতু করার জন্য একটি মাল্টি nic vm তৈরি করার অনুমতি দেয়৷ আপনি শিখেছেন কিভাবে একটি সুস্পষ্ট প্রক্সি এবং DNS পিয়ারিং তৈরি করতে হয় যা ইন্টারনেট সংযোগের অনুমতি দেয়।
কসমোপআপ মনে করে টিউটোরিয়ালগুলি দুর্দান্ত!!
এরপর কি?
আরও পড়া এবং ভিডিও
রেফারেন্স ডক্স
- ভার্টেক্স এআই নেটওয়ার্কিং অ্যাক্সেস ওভারভিউ | গুগল ক্লাউড
- প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেসের মাধ্যমে Vertex AI পরিষেবাগুলি অ্যাক্সেস করার বিষয়ে | গুগল ক্লাউড
- ভার্টেক্স এআই এজেন্ট ইঞ্জিনের সাথে প্রাইভেট সার্ভিস কানেক্ট ইন্টারফেস ব্যবহার করা
- Vertex AI সংস্থানগুলির জন্য একটি ব্যক্তিগত পরিষেবা সংযোগ ইন্টারফেস সেট আপ করুন | গুগল ক্লাউড