1. परिचय
Google Cloud लोड बैलेंसिंग को दुनिया भर में Google की मौजूदगी वाले स्थान (POP) पर Google के नेटवर्क के किनारे पर डिप्लॉय किया जाता है. टीसीपी प्रॉक्सी लोड बैलेंसर पर भेजा जाने वाला उपयोगकर्ता ट्रैफ़िक, उपयोगकर्ता के सबसे नज़दीकी पीओपी में जाता है. इसके बाद, इसे Google के ग्लोबल नेटवर्क पर सबसे नज़दीकी बैकएंड में लोड किया जाता है जिसमें ज़रूरत के मुताबिक क्षमता हो.
Cloud Armor, Google का डिस्ट्रिब्यूटेड डिनायल ऑफ़ सर्विस और वेब ऐप्लिकेशन फ़ायरवॉल (WAF) डिटेक्शन सिस्टम है. Cloud Armor में Google Cloud टीसीपी प्रॉक्सी लोड बैलेंसर की सुविधा है. इसकी मदद से, अनचाहे अनुरोधों का पता लगाने के लिए, आने वाले ट्रैफ़िक से पूछताछ की जा सकती है. इस सेवा की दर सीमित करने वाली सुविधा, अनुरोध की संख्या के आधार पर बैकएंड संसाधनों पर ट्रैफ़िक कम करने देती है. साथ ही, यह आपके वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क पर संसाधनों का इस्तेमाल करने वाले अनचाहे ट्रैफ़िक को रोकती है.
Google Cloud टीसीपी या एसएसएल प्रॉक्सी लोड बैलेंसर की मदद से, बैकएंड सेवाओं में टीसीपी/ एसएसएल टाइप के ट्रैफ़िक को प्रॉक्सी किया जा सकता है.
इस कोडलैब में, बैकएंड सेवा की मदद से टीसीपी/एसएसएल प्रॉक्सी लोड बैलेंसर बनाया जा सकता है. साथ ही, लोड बैलेंसर का ऐक्सेस सिर्फ़ कुछ उपयोगकर्ता क्लाइंट के लिए बनाया जा सकता है. इसके लिए, Cloud आर्मर का इस्तेमाल करें.
आप इन चीज़ों के बारे में जानेंगे
- टीसीपी/एसएसएल प्रॉक्सी लोड बैलेंसर बनाने का तरीका
- Cloud Armor की सुरक्षा नीति बनाने का तरीका
- Cloud Armor में टीसीपी/एसएसएल प्रॉक्सी लोड बैलेंसर के लिए, आईपी ब्लॉक करने की सूची का नियम कैसे बनाएं
- Cloud Armor में टीसीपी प्रॉक्सी लोड बैलेंसर के लिए, अनुरोध संख्या सीमित करने वाला नियम बनाने का तरीका
- टीसीपी/एसएसएल लोड बैलेंसिंग बैकएंड सेवा में सुरक्षा नीति जोड़ने का तरीका
आपको इनकी ज़रूरत होगी
- Google Compute Engine की बुनियादी जानकारी ( कोडलैब)
- बुनियादी नेटवर्किंग और टीसीपी/आईपी की जानकारी
- Unix/Linux कमांड लाइन के बारे में बुनियादी जानकारी
- Google Cloud में नेटवर्किंग की मदद से GCP में नेटवर्किंग के टूर को पूरा करने से मदद मिलती है
2. ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करें
- Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.
ध्यान दें: Cloud Console का यूआरएल याद रखकर उसे आसानी से ऐक्सेस किया जा सकता है, जो कि console.cloud.google.com है.
प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब में इसे PROJECT_ID के तौर पर दिखाया जाएगा.
ध्यान दें: अगर Gmail खाते का इस्तेमाल किया जा रहा है, तो डिफ़ॉल्ट जगह को 'कोई संगठन नहीं' पर सेट किया जा सकता है. अगर Google Workspace खाते का इस्तेमाल किया जा रहा है, तो अपने संगठन के लिए सही जगह चुनें.
- इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.
इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.
क्लाउड शेल शुरू करें
Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:
प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:
इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस लैब में आपका सारा काम बस एक ब्राउज़र से किया जा सकता है.
शुरू करने से पहले
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
एपीआई चालू करें
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. बैकएंड सेवाएं बनाना
दो इंस्टेंस इस तरह बनाएं - us-central1-b ज़ोन में इंस्टेंस1-b1 बनाएं
gcloud compute instances create vm-1-b1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b1 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
us-central1-b ज़ोन में इंस्टेंस 1-b2 बनाएं
gcloud compute instances create vm-1-b2 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b2 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
एक इंस्टेंस ग्रुप vm-ig1 बनाएं
gcloud compute instance-groups unmanaged create vm-ig1 --zone us-central1-b
इंस्टेंस ग्रुप के लिए, नाम वाला कोई पोर्ट बनाएं. इस लैब के लिए, हम पोर्ट 110 का इस्तेमाल करेंगे
gcloud compute instance-groups set-named-ports vm-ig1 \ --named-ports tcp 110:110 --zone us-central1-b
इंस्टेंस ग्रुप में इंस्टेंस जोड़ें
gcloud compute instance-groups unmanaged add-instances vm-ig1 \ --instances vm-1-b1,vm-1-b2 --zone us-central1-b
4. लोड बैलेंसर को कॉन्फ़िगर करना
इसके बाद, हम प्रॉडक्ट की परफ़ॉर्मेंस की जांच करेंगे.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
बैकएंड सेवा बनाना
gcloud compute backend-services create my-tcp-lb --global-health-checks --global \ --protocol TCP --health-checks my-tcp-health-check --timeout 5m --port-name tcp110
बैकएंड सेवा में इंस्टेंस ग्रुप जोड़ें
gcloud compute backend-services add-backend my-tcp-lb --global --instance-group \ vm-ig1 --instance-group-zone us-central1-b --balancing-mode UTILIZATION \ --max-utilization 0.8
टारगेट टीसीपी प्रॉक्सी कॉन्फ़िगर करना
gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy --backend-service \ my-tcp-lb --proxy-header NONE
ग्लोबल स्टैटिक आईपीवी4 पते रिज़र्व करें
इस आईपी पते का इस्तेमाल, लोड बैलेंस वाली सेवा तक पहुंचने के लिए किया जाएगा.
gcloud compute addresses create tcp-lb-static-ipv4 --ip-version=IPV4 --global
LB आईपी पते के लिए, ग्लोबल फ़ॉरवर्ड करने से जुड़े नियम कॉन्फ़िगर करें.
gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --global --target-tcp-proxy my-tcp-lb-target-proxy --address LB_STATIC_IPV4 \ --ports 110
5. टीसीपी प्रॉक्सी लोड बैलेंसर के लिए फ़ायरवॉल नियम बनाना
gcloud compute firewall-rules create allow-tcplb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
लोड बैलेंसर बनने के बाद, इसे नीचे दिए गए निर्देश की मदद से टेस्ट करें
Curl LB_IP:110
इसके बाद, LB को ऐक्सेस अस्वीकार किए जाने की पुष्टि के लिए वर्चुअल मशीन (वीएम) बनाएं
आपको दो इंस्टेंस बनाने चाहिए, जिनमें से हर एक का सार्वजनिक आईपी पता हो. साथ ही, हर इंस्टेंस का नाम test-server1 और test-server2 होना चाहिए
6. Cloud Armor में सुरक्षा नीति बनाएं
इस सेक्शन में आपको बैकएंड सुरक्षा नीति और Cloud Armor की नीति में दो नियम बनाने होंगे.
पहला नियम, कुछ आईपी पतों को टीसीपी लोड बैलेंसर ऐक्सेस करने से रोक देगा. दूसरा नियम, कुछ आईपी को ब्लॉक करने के लिए सुरक्षा नीति सेट करेगा. साथ ही, दूसरा नियम तय की गई दर को लागू करेगा.
- Cloud Shell में, Cloud Shell का इस्तेमाल करने के तरीके के बारे में निर्देश पाने के लिए, "सेटअप और ज़रूरी शर्तें" में "क्लाउड शेल शुरू करें" देखें, तो बैकएंड सेवा के लिए सुरक्षा की एक नीति बनाएं. इस नीति को, Rate-limit-and-deny-tcp कहते हैं
gcloud compute security-policies create rate-limit-and-deny-tcp \ --description "policy for tcp proxy rate limiting and IP deny"
सुरक्षा नीति में नियम जोड़ें
इसके बाद, Cloud Armor की नीति "rate-limit-and-deny-tcp" में, अस्वीकार करने की सूची का नियम जोड़ें.
gcloud compute security-policies rules create 1000 --action deny --security-policy \ rate-limit-and-deny-tcp --description "deny test-server1" --src-ip-ranges \ "enter-test-server-1ip-here"
Cloud Armor की सुरक्षा नीति "rate-limit-and-deny-tcp" के लिए, दर सीमित करने का नियम जोड़ें
gcloud compute security-policies rules create 3000 \ --security-policy=rate-limit-and-deny-tcp \ --expression="true" --action=rate-based-ban --rate-limit-threshold-count=5 \ --rate-limit-threshold-interval-sec=60 --ban-duration-sec=300 \ --conform-action=allow --exceed-action=deny-404 --enforce-on-key=IP
टीसीपी प्रॉक्सी बैकएंड सेवा में नीति अटैच करें:
यह पक्का करने के लिए कि सुरक्षा नीति टीसीपी प्रॉक्सी बैकएंड सेवा से अटैच है, यह पक्का करने के लिए नीचे दिया गया निर्देश चलाएं.
gcloud compute backend-services update my-tcp-lb --security-policy \ rate-limit-and-deny-tcp
टीसीपी प्रॉक्सी लोड बैलेंसर पर लॉग इन करने की सुविधा चालू करें
gcloud beta compute backend-services update my-tcp-lb \ --enable-logging --logging-sample-rate=1
7. अस्वीकार की गई सूची के नियम की पुष्टि करें
अस्वीकार करने की सूची के नियम की पुष्टि करने के लिए, उस टेस्ट-सर्वर में लॉग इन करें जिसका आईपी, अस्वीकार वाली सूची के नियम में दिया गया था. इसके बाद, यह निर्देश चलाएं
Curl LB_IP:110
तुरंत किए जाने वाले अनुरोध, एलबी से जवाब दे सकते हैं. हालांकि, कर्ल अनुरोध के अस्वीकार होने या खारिज होने तक इंतज़ार करें. इसके बाद, आईपी अस्वीकार करने वाले नियम के ट्रिगर होने की लॉग एंट्री की पुष्टि करने के लिए, क्लाउड लॉगिंग में लॉग देखें.
क्लाउड लॉगिंग पर जाएं और संसाधनों में, संसाधन प्रकार को "tcp_ssl_प्रॉक्सी_ दवा" के रूप में चुनें और बैकएंड टारगेट को "my-tcp-lb" के तौर पर सेट करें.
फ़िल्टर करने के लिए तय किए गए संसाधनों की मदद से, हम यह पुष्टि कर सकते हैं कि लॉग एंट्री में 1,000 की PRIORITY वैल्यू से आईपी अस्वीकार करने का नियम लागू है या नहीं. साथ ही, कॉन्फ़िगर की गई "DENY" कार्रवाई लागू है, क्योंकि दोनों को अस्वीकार करने के नियम से निर्देश दिया गया था. साथ ही, आईपी को अस्वीकार करने के निर्देश दिए गए थे, जैसा कि नीचे दिखाया गया है
8. दर सीमित करने के नियम की पुष्टि करें
तय की गई सीमा (हर मिनट के पांच अनुरोध) से ज़्यादा के अनुरोध भेजकर, तय की गई सीमा से ज़्यादा अनुरोध भेजकर पुष्टि करें कि दर की सीमा का नियम लागू है.
इसके बाद, क्लाउड आर्मर सेवा में 'लॉग देखें' पर क्लिक करें. इससे आपको क्लाउड लॉग में ले जाया जाएगा. यहां लोड बैलेंसर के हिसाब से लॉग फ़िल्टर किए जा सकते हैं, ताकि क्लाउड कवच के लॉग आने पर आपको उन्हें देखा जा सके.
नीचे दिए गए स्क्रीनशॉट के मुताबिक, अनुरोध संख्या सीमित करने की सुविधा दी जानी चाहिए. हम लॉग एंट्री में मौजूद 3,000 की PRIORITY वैल्यू से यह पुष्टि कर सकते हैं कि किराया तय करने की सीमा का नियम लागू हो. साथ ही, कॉन्फ़िगर की गई कार्रवाई से, "RATE BASED BAN" कार्रवाई, दर सीमित करने के नियम के निर्देशों के मुताबिक काम करती है.
9. एनवायरमेंट क्लीन अप
इस्तेमाल न की गई इन्फ़्रास्ट्रक्चर की लागत को होने से बचाने के लिए, बनाए गए इन्फ़्रास्ट्रक्चर को साफ़ करें.
GCP में मौजूद पूरे प्रोजेक्ट को तुरंत मिटाना होगा, ताकि यह पक्का किया जा सके कि कोई भी संसाधन खाली न हो.हालांकि, यहां दिए गए निर्देशों की मदद से, अलग-अलग रिसॉर्स को मिटाएं
टीसीपी प्रॉक्सी लोड बैलेंसर
gcloud compute target-tcp-proxies delete my-tcp-lb
इंस्टेंस ग्रुप
gcloud compute instance-groups unmanaged delete vm-ig1
टेस्ट के लिए दो वीएम इंस्टेंस बनाए गए
gcloud compute instances delete Instance_name --zone=instance_zone
बैकएंड सेवा
gcloud compute backend-services delete BACKEND_SERVICE_NAME
इस नीति में Cloud Armor के नियम शामिल हैं
gcloud compute security-policies rules delete 1000 \ --security-policy=rate-limit-and-deny-tcp && gcloud compute security-policies rules delete 3000 \ --security-policy=rate-limit-and-deny-tcp
क्लाउड कवच के लिए सुरक्षा नीति
gcloud compute security-policies delete rate-limit-and-deny-tcp