Datastore को ऐक्सेस करने में गड़बड़ी हुई

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

समस्या का ब्यौरा

EDGE यूज़र इंटरफ़ेस (यूआई) या Edge मैनेजमेंट एपीआई कॉल के ज़रिए, एपीआई प्रॉक्सी में बदलाव लागू नहीं किए जा सके और "Error while accessing datastore" गड़बड़ी हुई.

गड़बड़ी के मैसेज

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

संभावित वजहें

इस समस्या की सामान्य वजहें ये हैं:

  1. Cause जानकारी इसके लिए
    मैसेज प्रोसेसर और कैसेंड्रा के बीच नेटवर्क कनेक्टिविटी की समस्या नेटवर्क कनेक्टिविटी से जुड़ी समस्याओं या फ़ायरवॉल के नियमों की वजह से, मैसेज प्रोसेसर और Cassandra के बीच कम्यूनिकेशन नहीं हो सका. Edge Private Cloud के उपयोगकर्ता
    कैसांड्रा के रीस्टार्ट होने की वजह से, डिप्लॉयमेंट से जुड़ी गड़बड़ियां कैसंद्रा नोड उपलब्ध नहीं था, क्योंकि इसे रूटीन के रखरखाव के दौरान फिर से शुरू किया गया था. Edge Private Cloud के उपयोगकर्ता
    कैसांद्रा पर कॉन्टेंट पढ़े जाने के अनुरोध में लगने वाले समय में बढ़ोतरी अगर कैसेंड्रा नोड बड़ी संख्या में एक साथ पढ़ रहा है, तो पढ़े जाने के अनुरोध में बढ़ोतरी की वजह से, यह धीमी रफ़्तार से जवाब दे सकता है. Edge Private Cloud के उपयोगकर्ता
    एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी से ज़्यादा है Cassandra को 15 एमबी से बड़े एपीआई प्रॉक्सी बंडल को अनुमति न देने के लिए कॉन्फ़िगर किया गया है. Edge Private Cloud के उपयोगकर्ता

    मैसेज प्रोसेसर और कैसेंड्रा के बीच नेटवर्क कनेक्टिविटी की समस्या

    संक्रमण की जांच

    ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

    1. एपीआई प्रॉक्सी को डिप्लॉय और फिर से डिप्लॉय न करें. अगर Message प्रोसेसर और कैसेंड्रा के बीच अस्थायी कनेक्टिविटी की समस्या थी, तो गड़बड़ी शायद ठीक हो जाए.

      चेतावनी: अगर प्रोडक्शन एनवायरमेंट में गड़बड़ियां दिखती हैं, तो डिप्लॉय न करें.

    2. अगर समस्या बनी रहती है, तो डिप्लॉयमेंट का स्टेटस देखने के लिए नीचे दिए गए मैनेजमेंट एपी कॉल को लागू करें और देखें कि क्या किसी कॉम्पोनेंट में कोई गड़बड़ी है या नहीं:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      किसी एक मैसेज प्रोसेसर पर डेटास्टोर ऐक्सेस करते समय गड़बड़ी दिखाने वाले डिप्लॉयमेंट स्टेटस आउटपुट का सैंपल

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
      
    3. डिप्लॉयमेंट की गड़बड़ी दिखाने वाले मैसेज प्रोसेसर को रीस्टार्ट करें. अगर नेटवर्क में कोई अस्थायी समस्या थी, तो गड़बड़ी ठीक हो जानी चाहिए:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. यह देखने के लिए चरण #2 को दोहराएं कि क्या रीस्टार्ट किए गए मैसेज प्रोसेसर पर डिप्लॉयमेंट सफल हुआ है या नहीं. अगर कोई गड़बड़ी नहीं मिलती है, तो इसका मतलब है कि समस्या हल हो गई है.
    5. देखें कि मैसेज प्रोसेसर, पोर्ट 9042 और 9160 पर हर Cassandra नोड से कनेक्ट कर पा रहा है या नहीं:
      1. अगर टेलनेट उपलब्ध है, तो टेलनेट का इस्तेमाल करें:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
        
      2. अगर टेलनेट उपलब्ध नहीं है, तो कनेक्टिविटी की जांच करने के लिए, netcat का इस्तेमाल इस तरह करें:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
        
      3. अगर आपको "कनेक्शन से इनकार किया गया" या "कनेक्शन का समय खत्म हो गया" जवाब मिलता है, तो अपनी नेटवर्क ऑपरेशंस टीम से संपर्क करें.
    6. अगर समस्या बनी रहती है, तो देखें कि क्या हर कैसंड्रा नोड, पोर्ट 9042 और पोर्ट 9160 पर सुन रहा है:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. अगर कैसेंड्रा नोड पोर्ट 9042 या 9160 पर नहीं सुन रहे हैं, तो खास कैसंड्रा नोड रीस्टार्ट करें:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
      
    8. अगर समस्या हल न हो, तो नेटवर्क ऑपरेशन की टीम से संपर्क करें.

रिज़ॉल्यूशन

अपनी नेटवर्क ऑपरेशंस टीम के साथ काम करें और Message प्रोसेसर और Cassandra के बीच नेटवर्क कनेक्टिविटी की समस्या ठीक करें.

Cassandra के रीस्टार्ट होने की वजह से डिप्लॉयमेंट से जुड़ी गड़बड़ियां

कैसंड्रा नोड को सामान्य रखरखाव के दौरान समय-समय पर रीस्टार्ट किया जाता है. अगर Cassandra के रखरखाव के काम के दौरान एपीआई प्रॉक्सी डिप्लॉय हो जाती हैं, तो कैसंड्रा डेटास्टोर में ऐक्सेस न होने की वजह से डिप्लॉयमेंट नहीं हो पाते.

ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

संक्रमण की जांच

  1. देखें कि डिप्लॉयमेंट के दौरान कैसंड्रा नोड रीस्टार्ट हुए हैं या नहीं.इसके लिए, Cassandra के लॉग या कैसंड्रा नोड के हाल ही के स्टार्टअप टाइम लॉग देखकर ऐसा किया जा सकता है:

    grep "shutdown" /opt/apigee/var/log/apigee-cassandra/system.log

रिज़ॉल्यूशन

  1. पक्का करें कि कैसांड्रा तैयार है और चालू है.
  2. देखें कि क्या Message प्रोसेसर, पोर्ट 9042 और 9160 पर Cassandra डेटास्टोर से कनेक्ट कर पा रहे हैं या नहीं.

कैसांड्रा पर, पढ़े जाने के अनुरोध में लगने वाले समय में बढ़ोतरी

कैसंड्रा के कॉन्टेंट की ज़्यादातर किताबें, इस्तेमाल के उदाहरण और प्रॉक्सी के ट्रैफ़िक पैटर्न पर निर्भर करती हैं. इन प्रॉक्सी में ऐसी नीतियां होती हैं जिनके लिए कैसंड्रा से पढ़ने का ऐक्सेस ज़रूरी होता है.

उदाहरण के लिए, अगर रिफ़्रेश_token अनुदान टाइप के लिए GET कॉल को OAuth नीतियों के लिए कॉल किया जाता है और रीफ़्रेश टोकन कई ऐक्सेस टोकन से जुड़ा हुआ है, तो इस वजह से Cassandra से ज़्यादा कॉन्टेंट पढ़े जा सकते हैं. इसकी वजह से, Cassandra पर पढ़ने के अनुरोध में लगने वाला समय बढ़ सकता है.

विश्लेषण

ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

  1. अगर आपने बीटा मॉनिटरिंग डैशबोर्ड इंस्टॉल किया है, तो कैसंड्रा डैशबोर्ड देखें. साथ ही, समस्या का पता लगाने के लिए "अनुरोध पढ़ें" चार्ट देखें. "अनुरोध के इंतज़ार के समय का पता लगाने के लिए बने चार्ट को भी देखें".
  2. यह nodetool cfstats कमांड है. यह पढ़े जाने के अनुरोधों और रीड के इंतज़ार के समय की जांच करने का एक और टूल है. इस निर्देश का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, कैसांड्रा का दस्तावेज़ देखें.

रिज़ॉल्यूशन

ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

  1. जब Cassandra की परफ़ॉर्मेंस सामान्य हो जाए, तो डिप्लॉयमेंट को फिर से लागू करने की कोशिश करें. पक्का करें कि पूरा कैसंड्रा रिंग नॉर्मल हो.
  2. (ज़रूरी नहीं) यह पक्का करने के लिए कि कनेक्टिविटी कनेक्ट हो गई है, मैसेज प्रोसेसर को रोल करके रीस्टार्ट करें.
  3. लंबे समय तक समस्या को हल करने के लिए, एपीआई ट्रैफ़िक पैटर्न की समीक्षा करें. इससे Cassandra डेटास्टोर को ज़्यादा लोग पढ़ने में मदद मिल सकती है. इस समस्या को हल करने में मदद पाने के लिए, Apigee Edge की सहायता टीम से संपर्क करें.
  4. अगर मौजूदा Cassandra नोड आने वाले ट्रैफ़िक को मैनेज करने के लिए काफ़ी नहीं हैं, तो या तो हार्डवेयर की क्षमता बढ़ाएं या सही तरीके से Cassandra डेटास्टोर नोड की संख्या बढ़ाएं.

एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी से ज़्यादा है

Cassandra पर एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी तक सीमित है. अगर एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी से ज़्यादा है, तो एपीआई प्रॉक्सी को डिप्लॉय करते समय, आपको "डेटास्टोर को ऐक्सेस करते समय गड़बड़ी" दिखेगी.

संक्रमण की जांच

ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

  1. मैसेज प्रोसेसर के लॉग (/opt/apigee/var/log/edge-message-processor/logs/system.log) की जांच करें और देखें कि किसी खास एपीआई प्रॉक्सी के डिप्लॉयमेंट के दौरान कोई गड़बड़ी तो नहीं हुई है.
  2. अगर आपको नीचे दी गई इमेज में दिखाई गई गड़बड़ी से मिलती-जुलती कोई गड़बड़ी दिखती है, तो डिप्लॉयमेंट में गड़बड़ी इसलिए होती है, क्योंकि एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी से ज़्यादा है.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>
    

रिज़ॉल्यूशन

बहुत ज़्यादा संसाधन फ़ाइलें होने पर, एपीआई प्रॉक्सी बंडल बड़ा होगा. इस समस्या को हल करने के लिए, ये तरीके अपनाएं:

समाधान #1: संसाधन फ़ाइलों को एनवायरमेंट या संगठन के लेवल पर ले जाना

  1. एनवायरमेंट या संगठन के लेवल पर NodeJS स्क्रिप्ट फ़ाइल और मॉड्यूल, JavaScript फ़ाइल, JAR फ़ाइल जैसी किसी भी रिसॉर्स फ़ाइल को ले जाएं. संसाधन फ़ाइलों के बारे में ज़्यादा जानकारी के लिए, Edge का दस्तावेज़ देखें.
  2. एपीआई प्रॉक्सी को डिप्लॉय करें और देखें कि गड़बड़ी ठीक हुई या नहीं.

अगर समस्या बनी रहती है या किसी वजह से संसाधन फ़ाइलों को एनवायरमेंट या संगठन के लेवल पर नहीं ले जाया जा सकता, तो समाधान #2 लागू करें.

समाधान #2: Cassandra पर एपीआई प्रॉक्सी बंडल का साइज़ बढ़ाना

ध्यान दें: Edge Private Cloud का इस्तेमाल करने वाले लोग ही ये चरण पूरे कर सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge सहायता से संपर्क करें.

Cassandra प्रॉपर्टी के थरिफ़्ट फ़्रेम के ट्रांसपोर्ट साइज़ का साइज़ बढ़ाने के लिए, यह तरीका अपनाएं. इससे, Edge में अनुमति वाले एपीआई प्रॉक्सी बंडल के ज़्यादा से ज़्यादा साइज़ को कंट्रोल किया जा सकता है:

  1. अगर यह फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    /opt/apigee/customer/application/cassandra.properties
    
  2. <size> की जगह, बड़े बंडल के लिए ज़रूरी साइज़ सेटिंग का इस्तेमाल करके, फ़ाइल में यह लाइन जोड़ें:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. कैसंड्रा को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. क्लस्टर में सभी कैसंड्रा नोड पर #1 से #3 तक के चरण दोहराएं.

अगर समस्या बनी रहती है, तो Apigee Edge की सहायता टीम से संपर्क करें.