Cassandra rack की सहायता जोड़ें

इस सेक्शन में, Apigee Edge for Private Cloud पर Cassandra को रैक अवेयर बनाकर, Cassandra के ऑपरेशन को बढ़ाने के बारे में सामान्य दिशा-निर्देश दिए गए हैं.

कैसेंड्रा रिंग रैक को अवेयर बनाना क्यों ज़रूरी है, इस बारे में ज़्यादा जानने के लिए ये संसाधन देखें:

रैक क्या होता है?

Cassandra रैक, रिंग में Cassandra नोड का एक लॉजिकल ग्रुप होता है. Cassandra, रैक का इस्तेमाल करता है, ताकि यह पक्का किया जा सके कि रेप्लिका को अलग-अलग लॉजिकल ग्रुप में बांटा गया है. इस वजह से, कार्रवाइयां सिर्फ़ एक नोड पर नहीं, बल्कि कई नोड पर भेजी जाती हैं. हर नोड एक अलग रैक पर होता है. इससे गड़बड़ी को ठीक करने की क्षमता और उपलब्धता बढ़ती है.

इस सेक्शन में दिए गए उदाहरणों में, Cassandra के तीन रैक इस्तेमाल किए गए हैं. Apigee, प्रोडक्शन टोपोलॉजी में इतने ही रैक इस्तेमाल करने की अनुमति देता है.

Apigee Edge for Private Cloud में Cassandra के डिफ़ॉल्ट इंस्टॉलेशन में, एक लॉजिकल रैक माना जाता है. साथ ही, डेटा सेंटर के सभी नोड को इसमें रखा जाता है. हालांकि, इस कॉन्फ़िगरेशन को इंस्टॉल और मैनेज करना आसान है, लेकिन अगर इनमें से किसी एक नोड पर कोई कार्रवाई पूरी नहीं हो पाती है, तो हो सकता है कि यह कॉन्फ़िगरेशन काम न करे.

यहां दी गई इमेज में, Cassandra रिंग का डिफ़ॉल्ट कॉन्फ़िगरेशन दिखाया गया है:

तीन नोड वाला एक रैक
(इमेज 1) डिफ़ॉल्ट कॉन्फ़िगरेशन: एक ही रैक पर मौजूद सभी नोड

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

नीचे दी गई इमेज में, तीन नोड वाली रिंग दिखाई गई है. इस इमेज में, रिंग में कार्रवाइयों को दोहराने का क्रम (घड़ी की सुई की दिशा में) दिखाया गया है. साथ ही, यह हाइलाइट किया गया है कि कोई भी दो नोड एक ही रैक पर नहीं हैं:

तीन रैक, हर रैक में एक नोड
(दूसरी इमेज) रैक अवेयर कॉन्फ़िगरेशन: तीन नोड, हर रैक पर एक नोड

इस कॉन्फ़िगरेशन में, कार्रवाइयां किसी नोड पर भेजी जाती हैं. साथ ही, उन्हें अन्य रैक पर मौजूद उस नोड की प्रतिकृतियों पर भी भेजा जाता है. ये कार्रवाइयां, घड़ी की सुई की दिशा में भेजी जाती हैं.

रैक अवेयरनेस जोड़ना (तीन नोड के साथ)

Apigee Edge for Private Cloud के सभी प्रोडक्शन इंस्टॉलेशन टोपोलॉजी में कम से कम तीन Cassandra नोड होते हैं. इस सेक्शन में इन्हें "IP1", "IP2", और "IP3" कहा गया है. डिफ़ॉल्ट रूप से, इनमें से हर नोड एक ही रैक "ra-1" में होता है.

इस सेक्शन में, Cassandra नोड को अलग-अलग रैक में असाइन करने का तरीका बताया गया है. इससे सभी कार्रवाइयां, रिंग में मौजूद अलग-अलग लॉजिकल ग्रुप में मौजूद रेप्लिका नोड को भेजी जाती हैं.

इंस्टॉलेशन के दौरान, Cassandra नोड को अलग-अलग रैक में असाइन करने के लिए:

  1. इंस्टॉलर को चलाने से पहले, Cassandra नोड में लॉग इन करें. इसके बाद, बदलाव करने के लिए, यहां दी गई साइलेंट कॉन्फ़िगरेशन फ़ाइल खोलें:
    /opt/silent.conf

    अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं और "apigee" उपयोगकर्ता को उसका मालिक बनाएं.

  2. CASS_HOSTS प्रॉपर्टी में बदलाव करें. यह आईपी पतों की एक सूची होती है जिसमें आईपी पतों को स्पेस से अलग किया जाता है. इसमें डीएनएस या होस्टनेम की एंट्री नहीं होती. इसमें इस सिंटैक्स का इस्तेमाल किया जाता है:
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    डिफ़ॉल्ट वैल्यू, तीन नोड वाली Cassandra रिंग होती है. इसमें हर नोड को रैक 1 और डेटा सेंटर 1 को असाइन किया जाता है. इसके बारे में यहां दिए गए उदाहरण में बताया गया है:

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. रैक असाइनमेंट बदलें, ताकि नोड 2 को रैक 2 और नोड 3 को रैक 3 असाइन किया जा सके. इसके लिए, यहां दिया गया उदाहरण देखें:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    रैक असाइनमेंट में बदलाव करके, Cassandra को दो और लॉजिकल ग्रुपिंग (रैक) बनाने का निर्देश दिया जाता है. इसके बाद, ये ग्रुपिंग ऐसी प्रतिकृतियां उपलब्ध कराती हैं जिन्हें पहले नोड को मिलने वाले सभी ऑपरेशन मिलते हैं.

    CASS_HOSTS कॉन्फ़िगरेशन प्रॉपर्टी का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Edge कॉन्फ़िगरेशन फ़ाइल का रेफ़रंस देखें.

  4. कॉन्फ़िगरेशन फ़ाइल में किए गए बदलावों को सेव करें. इसके बाद, अपडेट किए गए कॉन्फ़िगरेशन के साथ Cassandra को इंस्टॉल करने के लिए, यह कमांड चलाएं:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    उदाहरण के लिए:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. रिंग में मौजूद हर Cassandra नोड के लिए, इस प्रोसेस को दोहराएं. इसके लिए, उसी क्रम का इस्तेमाल करें जिस क्रम में नोड को CASS_HOSTS प्रॉपर्टी में असाइन किया गया है. इस मामले में, आपको Cassandra को इस क्रम में इंस्टॉल करना होगा:
    1. नोड 1 (IP1)
    2. नोड 2 (IP2)
    3. नोड 3 (आईपी3)

इंस्टॉल करने के बाद, आपको Cassandra कॉन्फ़िगरेशन की जांच करनी चाहिए.

Cassandra कॉन्फ़िगरेशन की जांच करना

रैक-अवेयर Cassandra कॉन्फ़िगरेशन इंस्टॉल करने के बाद, यह जांच की जा सकती है कि नोड अलग-अलग रैक को असाइन किए गए हैं या नहीं. इसके लिए, nodetool status कमांड का इस्तेमाल करें. इसका उदाहरण यहां दिया गया है:

/opt/apigee/apigee-cassandra/bin/nodetool status

(इस निर्देश को Cassandra के किसी एक नोड पर चलाएं.)

नतीजे कुछ इस तरह दिखने चाहिए, जहां रैक कॉलम में हर नोड के लिए अलग-अलग रैक आईडी दिखते हैं:

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

अगर आपने Cassandra के लिए JMX ऑथेंटिकेशन चालू किया है, तो आपको nodetool को अपना उपयोगकर्ता नाम और पासवर्ड भी देना होगा. ज़्यादा जानकारी के लिए, क्लस्टर नोड मैनेज करने के लिए nodetool का इस्तेमाल करना लेख पढ़ें.

छह नोड वाली रिंग इंस्टॉल करना

अतिरिक्त रिडंडंसी के लिए, Cassandra रिंग को छह नोड तक बढ़ाया जा सकता है. इस मामले में, आपको तीन रैक में से हर एक को दो नोड असाइन करने होंगे. इस कॉन्फ़िगरेशन के लिए, तीन अतिरिक्त नोड की ज़रूरत होती है: नोड 4 (IP4), नोड 5 (IP5), और नोड 6 (IP6).

यहां दी गई इमेज में, रिंग में ऑपरेशन को रेप्लिकेट करने का क्रम (घड़ी की सुई की दिशा में) दिखाया गया है. साथ ही, इस बात को हाइलाइट किया गया है कि रेप्लिकेशन के दौरान, आस-पास के दो नोड एक ही रैक पर नहीं होते:

तीन रैक, हर रैक में दो नोड
(तीसरी इमेज) छह नोड वाली Cassandra रिंग: तीन रैक में से हर एक पर दो नोड

इस कॉन्फ़िगरेशन में, हर नोड की दो और प्रतिकृतियां होती हैं: अन्य दो रैक में से हर एक में एक. उदाहरण के लिए, रैक 1 में मौजूद नोड 1 की एक कॉपी, रैक 2 और रैक 3 में मौजूद है. नोड 1 को भेजे गए ऑपरेशन, घड़ी की सुई की दिशा में अन्य रैक में मौजूद रेप्लिका को भी भेजे जाते हैं.

तीन नोड वाली Cassandra रिंग को छह नोड वाली Cassandra रिंग में बदलने के लिए, अपनी साइलेंट कॉन्फ़िगरेशन फ़ाइल में नोड को इस तरह कॉन्फ़िगर करें:

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

तीन नोड वाली रिंग की तरह ही, आपको Cassandra को उसी क्रम में इंस्टॉल करना होगा जिस क्रम में नोड, CASS_HOSTS प्रॉपर्टी में दिखते हैं:

  1. नोड 1 (IP1)
  2. नोड 4 (IP4)*
  3. नोड 2 (IP2)
  4. नोड 5 (IP5)
  5. नोड 3 (आईपी3)
  6. Node 6 (IP6)

* चौथे नोड (Cassandra इंस्टॉलेशन ऑर्डर में दूसरी मशीन) पर सेटअप यूटिलिटी चलाने से पहले, साइलेंट कॉन्फ़िगरेशन फ़ाइल में बदलाव करें.

12 नोड तक बड़ा करें

फ़ॉल्ट टॉलरेंस और उपलब्धता को और बढ़ाने के लिए, रिंग में Cassandra नोड की संख्या को 6 से बढ़ाकर 12 किया जा सकता है. इस कॉन्फ़िगरेशन के लिए, छह अतिरिक्त नोड (IP7 से IP12 तक) की ज़रूरत होती है.

यहां दी गई इमेज में, रिंग में ऑपरेशन को रेप्लिकेट करने का क्रम (घड़ी की सुई की दिशा में) दिखाया गया है. साथ ही, इस बात को हाइलाइट किया गया है कि रेप्लिकेशन के दौरान, आस-पास के दो नोड एक ही रैक पर नहीं होते:

तीन रैक, हर रैक में चार नोड
(चौथी इमेज) 12 नोड वाली Cassandra रिंग: तीन रैक में से हर एक पर चार नोड

12-नोड वाली रिंग इंस्टॉल करने की प्रोसेस, तीन या छह नोड वाली रिंग इंस्टॉल करने की प्रोसेस जैसी ही है: CASS_HOSTS को दी गई वैल्यू पर सेट करें और इंस्टॉलर को बताए गए क्रम में चलाएं.

12-नोड वाली Cassandra रिंग में बड़ा करने के लिए, अपनी साइलेंट कॉन्फ़िगरेशन फ़ाइल में नोड को इस तरह कॉन्फ़िगर करें:

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

तीन और छह नोड वाली रिंग की तरह ही, आपको नोड पर इंस्टॉलर को उसी क्रम में चलाना होगा जिस क्रम में नोड, कॉन्फ़िगरेशन फ़ाइल में दिखते हैं:

  1. नोड 1 (IP1)
  2. Node 7 (IP7)*
  3. नोड 4 (IP4)
  4. Node 8 (IP8)
  5. नोड 2 (IP2)
  6. Node 9 (IP9)
  7. नोड 5 (IP5)
  8. Node 10 (IP10)
  9. नोड 3 (आईपी3)
  10. Node 11 (IP11)
  11. Node 6 (IP6)
  12. Node 12 (IP12)

* आपको सातवें नोड (Cassandra इंस्टॉलेशन ऑर्डर में दूसरी मशीन) पर, Apigee Edge for Private Cloud को इंस्टॉल करने से पहले ये बदलाव करने होंगे.