1. परिचय
Google Cloud HTTP(S) लोड बैलेंसिंग को, दुनिया भर में Google के पॉइंट ऑफ़ प्रेज़ेंस (पीओपी) में, Google के नेटवर्क के किनारे पर डिप्लॉय किया जाता है. एचटीटीपी या एचटीटीपीएस लोड बैलेंसर पर रीडायरेक्ट किया गया उपयोगकर्ता ट्रैफ़िक, उपयोगकर्ता के सबसे नज़दीकी पीओपी में जाता है. इसके बाद, इसे Google के ग्लोबल नेटवर्क पर लोड बैलेंस किया जाता है. ऐसा सबसे नज़दीकी बैकएंड तक पहुंचने के लिए किया जाता है, जहां ज़रूरत के मुताबिक क्षमता उपलब्ध हो.
Cloud Armor, Google का डिस्ट्रिब्यूटेड डिनायल ऑफ़ सर्विस और वेब ऐप्लिकेशन फ़ायरवॉल (डब्ल्यूएएफ़) का पता लगाने वाला सिस्टम है. Cloud Armor, Google Cloud HTTP लोड बैलेंसर के साथ मिलकर काम करता है. इससे आपको अनचाहे अनुरोधों के लिए, इनकमिंग ट्रैफ़िक की जांच करने की सुविधा मिलती है. इस सेवा की दर सीमित करने की सुविधा की मदद से, अनुरोध की संख्या के आधार पर बैकएंड संसाधनों के ट्रैफ़िक को कम किया जा सकता है. साथ ही, अवांछित ट्रैफ़िक को आपके वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क पर संसाधनों का इस्तेमाल करने से रोका जा सकता है.
इस लैब में, आपको ग्लोबल बैकएंड के साथ एचटीटीपी लोड बैलेंसर को कॉन्फ़िगर करना है. इसे नीचे दिए गए डायग्राम में दिखाया गया है. इसके बाद, लोड बैलेंसर पर स्ट्रेस टेस्ट किया जाएगा. साथ ही, Cloud Armor की दर सीमित करने वाली नीति जोड़ी जाएगी, ताकि आपके बैकएंड संसाधनों पर आने वाले ट्रैफ़िक को सीमित किया जा सके.

आपको क्या सीखने को मिलेगा
- सही हेल्थ चेक के साथ एचटीटीपी लोड बैलेंसर को कैसे सेट अप करें.
- Cloud Armor की दर सीमित करने वाली नीति बनाने का तरीका.
- यह पुष्टि कैसे करें कि वीएम से स्ट्रेस टेस्ट चलाने पर, दर सीमित करने की नीति ट्रैफ़िक को ब्लॉक कर रही है.
आपको इन चीज़ों की ज़रूरत होगी
- नेटवर्किंग की बुनियादी जानकारी और एचटीटीपी के बारे में जानकारी
- Unix/Linux कमांड लाइन की बुनियादी जानकारी
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक कैरेक्टर स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे किसी भी समय अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर
PROJECT_IDके तौर पर पहचाना जाता है. इसलिए, अगर आपको यह पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट करें. इसके अलावा, अपने हिसाब से कोई आईडी बनाकर देखें कि वह उपलब्ध है या नहीं. इसके बाद, प्रोजेक्ट बनाने के बाद इसे "फ़्रीज़" कर दिया जाता है. - तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. संसाधन बंद करने के लिए, कोडलैब के आखिर में दिए गए "बंद करें" निर्देशों का पालन करें, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह 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. बैकएंड में एचटीटीपी ट्रैफ़िक की अनुमति देने के लिए, फ़ायरवॉल के नियमों को कॉन्फ़िगर करना
फ़ायरवॉल के नियमों को कॉन्फ़िगर करें, ताकि Google Cloud की हेल्थ चेक और लोड बैलेंसर से बैकएंड तक एचटीटीपी ट्रैफ़िक की अनुमति दी जा सके.
हम आपके प्रोजेक्ट में बनाए गए डिफ़ॉल्ट वीपीसी नेटवर्क का इस्तेमाल करेंगे. बैकएंड में एचटीटीपी ट्रैफ़िक की अनुमति देने के लिए, फ़ायरवॉल का नियम बनाएं. परफ़ॉर्मेंस की जांच से यह तय होता है कि लोड बैलेंसर के कौनसे इंस्टेंस, नए कनेक्शन स्वीकार कर सकते हैं. एचटीटीपी लोड बैलेंसिंग के लिए, लोड बैलेंस किए गए इंस्टेंस की हेल्थ जांच करने वाले जांचकर्ता, 130.211.0.0/22 और 35.191.0.0/16 रेंज के पतों से आते हैं. आपके वीपीसी फ़ायरवॉल के नियमों के तहत, इन कनेक्शन की अनुमति होनी चाहिए. साथ ही, लोड बैलेंसर एक ही आईपी रेंज पर बैकएंड से कम्यूनिकेट करते हैं.
- Cloud Console में, नेविगेशन मेन्यू (
) > वीपीसी नेटवर्क > फ़ायरवॉल पर जाएं.

- मौजूदा ICMP, internal, RDP, और SSH फ़ायरवॉल नियमों पर ध्यान दें.हर Google Cloud प्रोजेक्ट, डिफ़ॉल्ट नेटवर्क और इन फ़ायरवॉल नियमों से शुरू होता है.
- फ़ायरवॉल का नियम बनाएं पर क्लिक करें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
नाम | default-allow-health-check |
नेटवर्क | डिफ़ॉल्ट |
टारगेट | टारगेट किए गए टैग |
टारगेट टैग | http-server |
सोर्स फ़िल्टर | आईपी रेंज |
सोर्स आईपी रेंज | 130.211.0.0/22, 35.191.0.0/16 |
प्रोटोकॉल और पोर्ट | प्रोटोकॉल और पोर्ट तय करें. इसके बाद, टीसीपी जांचें |
- बनाएं पर क्लिक करें.
इसके अलावा, अगर gcloud कमांड लाइन का इस्तेमाल किया जा रहा है. यहां निर्देश दिया गया है -
gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server
4. इंस्टेंस टेंप्लेट कॉन्फ़िगर करना और मैनेज किए गए इंस्टेंस ग्रुप बनाना
मैनेज किया गया इंस्टेंस ग्रुप, एक जैसे इंस्टेंस का ग्रुप बनाने के लिए इंस्टेंस टेंप्लेट का इस्तेमाल करता है. इनका इस्तेमाल करके, एचटीटीपी लोड बैलेंसर के बैकएंड बनाएं.
उदाहरण के लिए टेंप्लेट कॉन्फ़िगर करना
इंस्टेंस टेंप्लेट, एक एपीआई संसाधन है. इसका इस्तेमाल वीएम इंस्टेंस और मैनेज किए गए इंस्टेंस ग्रुप बनाने के लिए किया जाता है. इंस्टेंस टेंप्लेट, मशीन टाइप, बूट डिस्क इमेज, सबनेट, लेबल, और इंस्टेंस की अन्य प्रॉपर्टी तय करते हैं. us-east1 के लिए एक इंस्टेंस टेंप्लेट और europe-west1 के लिए एक इंस्टेंस टेंप्लेट बनाएं.
- Cloud Console में, नेविगेशन मेन्यू (
) > Compute Engine > इंस्टेंस टेंप्लेट पर जाएं. इसके बाद, इंस्टेंस टेंप्लेट बनाएं पर क्लिक करें. - नाम के लिए, us-east1-template टाइप करें.
- सीरीज़ के लिए, N1 चुनें.
- नेटवर्किंग, डिस्क, सुरक्षा, मैनेजमेंट , सोल-टेनेंसी पर क्लिक करें.

- मैनेजमेंट सेक्शन पर जाएं -

- मेटाडेटा में जाकर, आइटम जोड़ें पर क्लिक करें और यह जानकारी डालें:
कुंजी | वैल्यू |
startup-script-url | gs://cloud-training/gcpnet/httplb/startup.sh |
- नेटवर्किंग पर क्लिक करें.
- ये वैल्यू सेट करें और अन्य सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें -
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
नेटवर्क (नेटवर्क इंटरफ़ेस में जाकर) | डिफ़ॉल्ट |
सबनेट (नेटवर्क इंटरफ़ेस में) | डिफ़ॉल्ट (us-east1) |
नेटवर्क टैग | http-server |
- बनाएं पर क्लिक करें.
- इंस्टेंस टेंप्लेट बनने तक इंतज़ार करें.
अब subnet-b के लिए एक और इंस्टेंस टेंप्लेट बनाएं. इसके लिए, us-east1-template को कॉपी करें:
- us-east1-template पर क्लिक करें. इसके बाद, सबसे ऊपर मौजूद कॉपी करें विकल्प पर क्लिक करें.
- नाम के लिए, europe-west1-template टाइप करें.
- नेटवर्किंग, डिस्क, सुरक्षा, मैनेजमेंट , सोल-टेनेंसी पर क्लिक करें.
- नेटवर्किंग पर क्लिक करें.
- नेटवर्क इंटरफ़ेस में जाकर,डिफ़ॉल्ट इंटरफ़ेस में बदलाव करें. सबनेट के लिए, डिफ़ॉल्ट (europe-west1) चुनें.
- बनाएं पर क्लिक करें.
मैनेज किए गए इंस्टेंस ग्रुप बनाना
us-east1 और europe-west1 में मैनेज किया गया इंस्टेंस ग्रुप बनाएं.
- Compute Engine में ही, बाईं ओर मौजूद मेन्यू में Instance groups पर क्लिक करें.

- इंस्टेंस ग्रुप बनाएं पर क्लिक करें. नया मैनेज किया गया इंस्टेंस ग्रुप (स्टेटलेस) चुनें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
नाम | us-east1-mig |
जगह | एक से ज़्यादा ज़ोन |
क्षेत्र | us-east1 |
इंस्टेंस टेंप्लेट | us-east1-template |
ऑटोस्केलिंग > ऑटोस्केलिंग की नीति > पेंसिल आइकॉन पर क्लिक करें > मेट्रिक टाइप | सीपीयू (CPU) का इस्तेमाल |
सीपीयू के इस्तेमाल का टारगेट | 80 पर क्लिक करें. |
कूल-डाउन पीरियड | 45 |
कम से कम इंस्टेंस की संख्या | 1 |
ज़्यादा से ज़्यादा इंस्टेंस | 5 |
- बनाएं पर क्लिक करें.
अब europe-west1 में europe-west1-mig के लिए दूसरा इंस्टेंस ग्रुप बनाने के लिए, यही तरीका दोहराएं:
- इंस्टेंस ग्रुप बनाएं पर क्लिक करें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
नाम | europe-west1-mig |
जगह | एक से ज़्यादा ज़ोन |
क्षेत्र | europe-west1 |
इंस्टेंस टेंप्लेट | europe-west1-template |
ऑटोस्केलिंग > ऑटोस्केलिंग की नीति > पेंसिल आइकॉन पर क्लिक करें > मेट्रिक टाइप | सीपीयू (CPU) का इस्तेमाल |
सीपीयू के इस्तेमाल का टारगेट | 80 पर क्लिक करें. |
कूल-डाउन पीरियड | 45 |
कम से कम इंस्टेंस की संख्या | 1 |
ज़्यादा से ज़्यादा इंस्टेंस | 5 |
- बनाएं पर क्लिक करें.
5. एचटीटीपी लोड बैलेंसर को कॉन्फ़िगर करना
नेटवर्क डायग्राम में दिखाए गए तरीके से, एचटीटीपी लोड बैलेंसर को कॉन्फ़िगर करें, ताकि वह दो बैकएंड (us-east1 में us-east1-mig और europe-west1 में europe-west1-mig) के बीच ट्रैफ़िक को बैलेंस कर सके:

कॉन्फ़िगरेशन शुरू करना
- Cloud Console में, नेविगेशन मेन्यू (
) > नेटवर्क सेवाएं > लोड बैलेंसिंग पर क्लिक करें. इसके बाद, लोड बैलेंसर बनाएं पर क्लिक करें. - एचटीटीपी या एचटीटीपीएस लोड बैलेंसिंग में जाकर, कॉन्फ़िगरेशन शुरू करें पर क्लिक करें.

- इंटरनेट से मेरे वीएम तक, क्लासिक एचटीटीपी या एचटीटीपीएस लोड बैलेंसर को चुनें. इसके बाद, जारी रखें पर क्लिक करें.
- नाम को http-lb पर सेट करें.
बैकएंड को कॉन्फ़िगर करना
बैकएंड सेवाएं, आने वाले ट्रैफ़िक को अटैच किए गए एक या उससे ज़्यादा बैकएंड पर भेजती हैं. हर बैकएंड में एक इंस्टेंस ग्रुप और अतिरिक्त सर्वर क्षमता का मेटाडेटा होता है.
- बैकएंड कॉन्फ़िगरेशन पर क्लिक करें.
- बैकएंड सेवाएं और बैकएंड बकेट के लिए, बैकएंड सेवा बनाएं पर क्लिक करें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (बताए गए तरीके से विकल्प चुनें) |
नाम | http-backend |
इंस्टेंस ग्रुप | us-east1-mig |
नंबर पोर्ट करें | 80 |
बैलेंसिंग मोड | दर |
ज़्यादा से ज़्यादा आरपीएस | 50 (हर इंस्टेंस के लिए) |
क्षमता | 100 |
- हो गया पर क्लिक करें.
- बैकएंड जोड़ें पर क्लिक करें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (बताए गए तरीके से विकल्प चुनें) |
इंस्टेंस ग्रुप | europe-west1-mig |
नंबर पोर्ट करें | 80 |
बैलेंसिंग मोड | इस्तेमाल |
बैकएंड का ज़्यादा से ज़्यादा इस्तेमाल | 80 |
क्षमता | 100 |
- हो गया पर क्लिक करें.
- हेल्थ चेक के लिए, हेल्थ चेक बनाएं को चुनें.

- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (बताए गए तरीके से विकल्प चुनें) |
नाम | http-health-check |
प्रोटोकॉल | टीसीपी |
पोर्ट | 80 |

- सेव करें पर क्लिक करें.
- लॉगिंग चालू करें बॉक्स को चुनें.
- सैंपल रेट को 1 पर सेट करें:

- बैकएंड सेवा बनाने के लिए, बनाएं पर क्लिक करें.

फ़्रंटएंड को कॉन्फ़िगर करना
होस्ट और पाथ के नियमों से यह तय होता है कि आपके ट्रैफ़िक को कैसे डायरेक्ट किया जाएगा. उदाहरण के लिए, वीडियो ट्रैफ़िक को एक बैकएंड पर और स्टैटिक ट्रैफ़िक को दूसरे बैकएंड पर भेजा जा सकता है. हालांकि, इस लैब में होस्ट और पाथ के नियमों को कॉन्फ़िगर नहीं किया जा रहा है.
- फ़्रंटएंड कॉन्फ़िगरेशन पर क्लिक करें.
- यहां दी गई वैल्यू तय करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर सेट रहने दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
प्रोटोकॉल | HTTP |
आईपी वर्शन | IPv4 |
आईपी पता | कुछ समय के लिए |
पोर्ट | 80 |
- हो गया पर क्लिक करें.
- फ़्रंटएंड आईपी और पोर्ट जोड़ें पर क्लिक करें.
- यहां दी गई वैल्यू तय करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर सेट रहने दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
प्रोटोकॉल | HTTP |
आईपी वर्शन | IPv6 |
आईपी पता | कुछ समय के लिए |
पोर्ट | 80 |
- हो गया पर क्लिक करें.
एचटीटीपी लोड बैलेंसर की समीक्षा करना और उसे बनाना
- समीक्षा करें और फ़ाइनल करें पर क्लिक करें.

- बैकएंड सेवाओं और फ़्रंटएंड की समीक्षा करें.

- बनाएं पर क्लिक करें.
- लोड बैलेंसर बनने तक इंतज़ार करें.
- लोड बैलेंसर (http-lb) के नाम पर क्लिक करें.
- अगले टास्क के लिए, लोड बैलेंसर के IPv4 और IPv6 पते नोट करें. इन्हें क्रमशः [LB_IP_v4] और [LB_IP_v6] के तौर पर दिखाया जाएगा.
6. एचटीटीपी लोड बैलेंसर की जांच करना
बैकएंड के लिए एचटीटीपी लोड बैलेंसर बनाने के बाद, पुष्टि करें कि ट्रैफ़िक को बैकएंड सेवा पर फ़ॉरवर्ड किया गया है.
एचटीटीपी लोड बैलेंसर को ऐक्सेस करना
HTTP लोड बैलेंसर के लिए IPv4 ऐक्सेस की जांच करने के लिए, अपने ब्राउज़र में नया टैब खोलें और http://[LB_IP_v4] पर जाएं. [LB_IP_v4] को लोड बैलेंसर के IPv4 पते से बदलना न भूलें.
अगर आपके पास कोई लोकल IPv6 पता है, तो http://[LB_IP_v6] पर जाकर, एचटीटीपी लोड बैलेंसर का IPv6 पता आज़माएं. [LB_IP_v6] को लोड बैलेंसर के IPv6 पते से बदलना न भूलें.

एचटीटीपी लोड बैलेंसर पर लोड का टेस्ट करना
siege का इस्तेमाल करके, HTTP लोड बैलेंसर पर लोड को सिम्युलेट करने के लिए नई वीएम बनाएं. इसके बाद, यह पता लगाएं कि लोड ज़्यादा होने पर, दोनों बैकएंड में ट्रैफ़िक बराबर है या नहीं.
- Console में, नेविगेशन मेन्यू (
) > Compute Engine > वीएम इंस्टेंस पर जाएं. - Create instance पर क्लिक करें.
- ये वैल्यू सेट करें. बाकी सभी वैल्यू को डिफ़ॉल्ट पर छोड़ दें:
प्रॉपर्टी | वैल्यू (वैल्यू टाइप करें या बताए गए तरीके से विकल्प चुनें) |
नाम | siege-vm |
क्षेत्र | us-west1 |
ज़ोन | us-west1-c |
सीरीज़ | N1 |
- बनाएं पर क्लिक करें.
- siege-vm इंस्टेंस बनने तक इंतज़ार करें.
- टर्मिनल लॉन्च करने और कनेक्ट करने के लिए, siege-vm के लिए SSH पर क्लिक करें.
- siege को इंस्टॉल करने के लिए, यह कमांड चलाएं:
sudo apt-get -y install siege
- एचटीटीपी लोड बैलेंसर के IPv4 पते को एनवायरमेंट वैरिएबल में सेव करने के लिए, यहां दी गई कमांड चलाएं. साथ ही, [LB_IP_v4] को IPv4 पते से बदलें:
export LB_IP=[LB_IP_v4]
- लोड का सिम्युलेशन करने के लिए, यह कमांड चलाएं:
siege -c 250 http://$LB_IP
आउटपुट ऐसा दिखना चाहिए (कॉपी न करें; यह आउटपुट का उदाहरण है):
New configuration template added to /home/student/.siege Run siege -C to view the current settings in that file ** SIEGE 4.0.4 ** Preparing 250 concurrent users for battle. The server is now under siege...
- Cloud Console में, नेविगेशन मेन्यू (
) पर क्लिक करें. इसके बाद, नेटवर्क सेवाएं > लोड बैलेंसिंग पर क्लिक करें. - http-lb पर क्लिक करें.
- निगरानी टैब पर क्लिक करें. उत्तरी अमेरिका और दोनों बैकएंड के बीच के ट्रैफ़िक पर दो से तीन मिनट तक नज़र रखें.
शुरुआत में, ट्रैफ़िक को सिर्फ़ us-east1-mig पर रीडायरेक्ट किया जाना चाहिए. हालांकि, आरपीएस बढ़ने पर ट्रैफ़िक को europe-west1-mig पर भी रीडायरेक्ट किया जाता है.

इससे पता चलता है कि डिफ़ॉल्ट रूप से, ट्रैफ़िक को सबसे नज़दीकी बैकएंड पर फ़ॉरवर्ड किया जाता है. हालांकि, अगर लोड बहुत ज़्यादा है, तो ट्रैफ़िक को सभी बैकएंड पर डिस्ट्रिब्यूट किया जा सकता है.

- siege-vm के एसएसएच टर्मिनल पर वापस जाएं.
- हमले को रोकने के लिए, CTRL+C दबाएं.
7. Cloud Armor की दर सीमित करने की नीति बनाना
इस सेक्शन में, दर सीमित करने से जुड़ी नीति सेट करके, siege-vm को एचटीटीपी लोड बैलेंसर ऐक्सेस करने से रोकने के लिए, Cloud Armor का इस्तेमाल किया जाएगा.
- Cloud Shell में, gcloud का इस्तेमाल करके सुरक्षा नीति बनाएं. Cloud Shell इस्तेमाल करने के तरीके के बारे में जानने के लिए, "सेटअप और ज़रूरी शर्तें" में जाकर "Cloud Shell शुरू करें" लेख पढ़ें:
gcloud compute security-policies create rate-limit-siege \
--description "policy for rate limiting"
- इसके बाद, दर सीमित करने का नियम जोड़ें:
gcloud beta compute security-policies rules create 100 \
--security-policy=rate-limit-siege \
--expression="true" \
--action=rate-based-ban \
--rate-limit-threshold-count=50 \
--rate-limit-threshold-interval-sec=120 \
--ban-duration-sec=300 \
--conform-action=allow \
--exceed-action=deny-404 \
--enforce-on-key=IP
- बैकएंड सेवा http-backend से सुरक्षा नीति अटैच करें:
gcloud compute backend-services update http-backend \
--security-policy rate-limit-siege –-global
- Console में, नेविगेशन मेन्यू > नेटवर्क सुरक्षा > Cloud Armor पर जाएं.
- Click rate-limit-siege. आपकी नीति कुछ इस तरह दिखनी चाहिए:

सुरक्षा नीति की पुष्टि करना
- siege-vm के एसएसएच टर्मिनल पर वापस जाएं.
- एलबी आईपी के ख़िलाफ़ कर्ल चलाएं, ताकि यह पुष्टि की जा सके कि अब भी इससे कनेक्ट किया जा सकता है. आपको 200 का जवाब मिलेगा.
curl http://$LB_IP
- लोड को सिम्युलेट करने के लिए, siege-vm के एसएसएच टर्मिनल में यह कमांड चलाएं:
siege -c 250 http://$LB_IP
आउटपुट ऐसा दिखना चाहिए (इसे कॉपी न करें; यह आउटपुट का उदाहरण है):
** SIEGE 4.0.4 ** Preparing 250 concurrent users for battle. The server is now under siege...
- सुरक्षा नीति के लॉग एक्सप्लोर करके पता लगाएं कि यह ट्रैफ़िक भी ब्लॉक किया गया है या नहीं.
- Console में, नेविगेशन मेन्यू > नेटवर्क सुरक्षा > Cloud Armor पर जाएं.
- rate-limit-siege पर क्लिक करें.
- लॉग पर क्लिक करें.

- नीति के लॉग देखें पर क्लिक करें.
- लॉगिंग पेज पर, पक्का करें कि आपने क्वेरी की झलक में मौजूद सभी टेक्स्ट को मिटा दिया हो.
- Cloud HTTP Load Balancer > http-lb-forwarding-rule > http-lb के तौर पर संसाधन चुनें. इसके बाद, जोड़ें पर क्लिक करें. इसके अलावा, यहां एमक्यूएल(मॉनिटरिंग क्वेरी लैंग्वेज) क्वेरी दी गई है. इसे कॉपी करके क्वेरी एडिटर में चिपकाया जा सकता है -
resource.type="http_load_balancer" resource.labels.forwarding_rule_name="http-lb-forwarding-rule" resource.labels.url_map_name="http-lb"
- अब क्वेरी चलाएं पर क्लिक करें.
- क्वेरी के नतीजों में, किसी लॉग एंट्री को बड़ा करें.
- httpRequest को बड़ा करें. अनुरोध, siege-vm आईपी पते से किया जाना चाहिए. अगर ऐसा नहीं है, तो किसी दूसरी लॉग एंट्री को बड़ा करें.
- jsonPayload को बड़ा करें.
- लागू की गई सुरक्षा नीति को बड़ा करें.

ध्यान दें कि configuredAction को rate-limit-siege नाम के साथ RATE_BASED_BAN पर सेट किया गया है.
- एक और जांच के तौर पर, नेविगेशन मेन्यू (
) पर जाएं. इसके बाद, नेटवर्क सेवाएं > लोड बैलेंसिंग पर क्लिक करें. http-lb पर क्लिक करें. Monitoring टैब पर क्लिक करें.

ग्राफ़ में, आपको सीज़ ट्रैफ़िक दिखेगा. आपको यह भी पता चलेगा कि दर सीमित करने वाले ट्रैफ़िक को बैकएंड तक नहीं पहुंचने दिया जाता है. साथ ही, इसे Cloud Armor की नीति के तहत ब्लॉक कर दिया जाता है.
बधाई हो! आपने Cloud Armor की मदद से, अनुरोधों की संख्या सीमित करने वाला यह लैब पूरा कर लिया है
©2020 Google LLC सभी अधिकार सुरक्षित हैं. Google और Google का लोगो, Google LLC के ट्रेडमार्क हैं. दूसरी सभी कंपनियां और प्रॉडक्ट के नाम, उन कंपनियों के ट्रेडमार्क हो सकते हैं जिनसे वे जुड़े हुए हैं.
8. लैब में बिना अनुमति के की गई गतिविधियों को मिटाना
- नेटवर्क सुरक्षा >> Cloud Armor >> %POLICY NAME% पर जाएं और मिटाएं चुनें -

- नेटवर्किंग >> नेटवर्क सेवाएं >> लोड बैलेंसिंग पर जाएं. आपने जो लोड बैलेंसर बनाया है उसे चुनें और मिटाएं पर क्लिक करें.

मिटाने के लिए, बैकएंड सेवा और हेल्थ चेक को अतिरिक्त संसाधन के तौर पर चुनें -

- नेविगेशन मेन्यू (
) > Compute Engine > इंस्टेंस ग्रुप पर जाएं. मैनेज किए जा रहे इंस्टेंस के दोनों ग्रुप चुनें और मिटाएं पर क्लिक करें -

टेक्स्ट बॉक्स में "मिटाएं" टाइप करके, मिटाने की पुष्टि करें.
मैनेज किए गए इंस्टेंस ग्रुप के मिटने का इंतज़ार करें. इससे ग्रुप में मौजूद इंस्टेंस भी मिट जाते हैं. इंस्टेंस ग्रुप को मिटाने के बाद ही, टेंप्लेट मिटाए जा सकते हैं.
- बाईं ओर मौजूद पैनल में, इंस्टेंस टेंप्लेट पर जाएं**.** दोनों इंस्टेंस टेंप्लेट चुनें और मिटाएं पर क्लिक करें -

- बाईं ओर मौजूद पैनल में, VM इंस्टेंस पर जाएं**.** सीज-वीएम इंस्टेंस के बगल में मौजूद तीन बिंदु वाले आइकॉन को चुनें और मिटाएं पर क्लिक करें.

- नेविगेशन मेन्यू (
) > वीपीसी नेटवर्क > फ़ायरवॉल पर जाएं. डिफ़ॉल्ट रूप से अनुमति देने वाली हेल्थ चेक की सुविधा चुनें और मिटाएं पर क्लिक करें -

9. बधाई हो!
आपने Cloud Armor की मदद से, रेट लिमिटिंग को लागू कर लिया है. आपने us-east1 और europe-west1 में बैकएंड के साथ एक एचटीटीपी लोड बैलेंसर कॉन्फ़िगर किया है. इसके बाद, आपने वीएम की मदद से लोड बैलेंसर की स्ट्रेस टेस्टिंग की. साथ ही, Cloud Armor की दर सीमित करने की सुविधा का इस्तेमाल करके, आईपी पते को अस्वीकार की गई सूची से हटा दिया. आपने सुरक्षा नीति के लॉग देखे और यह पता लगाया कि ट्रैफ़िक को क्यों ब्लॉक किया गया था.
हमने क्या-क्या बताया
- इंस्टेंस टेंप्लेट सेट अप करने और मैनेज किए गए इंस्टेंस ग्रुप बनाने का तरीका.
- एचटीटीपी लोड बैलेंसर सेट अप करने का तरीका.
- Cloud Armor की दर सीमित करने वाली नीति बनाने का तरीका.
- यह पुष्टि कैसे करें कि दर सीमित करने की नीति उम्मीद के मुताबिक काम कर रही है.
अगले चरण
- सोर्स आईपी रेंज के आधार पर, दर सीमित करने की नीति सेट अप करने की कोशिश करें. यहां निर्देश का उदाहरण दिया गया है -
gcloud alpha compute security-policies rules create 105 \
--security-policy sec-policy \
--src-ip-ranges "1.2.3.0/24" \
--action throttle \
--rate-limit-threshold-count 100 \
--rate-limit-threshold-interval-sec 60 \
--conform-action allow \
--exceed-action deny-429 \
--enforce-on-key IP
- क्षेत्र के कोड के आधार पर, दर सीमित करने की नीति सेट अप करने की कोशिश करें. यहां निर्देश का उदाहरण दिया गया है -
gcloud alpha compute security-policies rules create 101 \
--security-policy sec-policy \
--expression "origin.region_code == 'US'" \
--action rate-based-ban \
--rate-limit-threshold-count 10 \
--rate-limit-threshold-interval-sec 60 \
--ban-duration-sec 300 \
--ban-threshold-count 1000 \
--ban-threshold-interval-sec 600 \
--conform-action allow \
--exceed-action deny-403 \
--enforce-on-key IP