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

यह Apigee Edge से जुड़े दस्तावेज़ हैं.
Apigee X से जुड़े दस्तावेज़ पर जाएं.
info

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

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. वजह जानकारी के लिए
    नेटवर्क कनेक्टिविटी की समस्या मैसेज प्रोसेसर और Cassandra के बीच नेटवर्क कनेक्टिविटी की समस्याओं या फ़ायरवॉल के नियमों की वजह से, मैसेज प्रोसेसर और Cassandra के बीच कम्यूनिकेशन में गड़बड़ी. Edge Private Cloud के उपयोगकर्ता
    Cassandra को रीस्टार्ट करने की वजह से, डिप्लॉयमेंट में गड़बड़ियां Cassandra नोड(नोड) उपलब्ध नहीं था, क्योंकि इसे रूटीन रखरखाव के तहत रीस्टार्ट किया गया था. Edge Private Cloud के उपयोगकर्ता
    Cassandra पर, रीड अनुरोध की लेटेन्सी में बढ़ोतरी अगर Cassandra नोड(नोड) एक साथ कई रीड ऑपरेशन कर रहा है, तो यह रीड अनुरोध की लेटेन्सी में बढ़ोतरी की वजह से, धीरे-धीरे जवाब दे सकता है. Edge Private Cloud के उपयोगकर्ता
    एपीआई प्रॉक्सी बंडल का साइज़ 15 एमबी से ज़्यादा होना Cassandra को इस तरह कॉन्फ़िगर किया गया है कि वह 15 एमबी से ज़्यादा साइज़ वाले एपीआई प्रॉक्सी बंडल को स्वीकार नहीं करेगा. Edge Private Cloud के उपयोगकर्ता

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

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

    ध्यान दें: सिर्फ़ Edge Private Cloud के उपयोगकर्ता ही यह तरीका अपना सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge की सहायता टीम से संपर्क करें.

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

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

    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. अगर समस्या बनी रहती है, तो देखें कि Cassandra के हर नोड, पोर्ट 9042 और पोर्ट 9160 पर सुन रहे हैं या नहीं:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. अगर Cassandra नोड, पोर्ट 9042 या 9160 पर नहीं सुन रहे हैं, तो Cassandra के उन नोड को रीस्टार्ट करें:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. अगर समस्या बनी रहती है, तो अपनी नेटवर्क ऑपरेशंस टीम से संपर्क करें.

रिज़ॉल्यूशन

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

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

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

ध्यान दें: सिर्फ़ Edge Private Cloud के उपयोगकर्ता ही यह तरीका अपना सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge की सहायता टीम से संपर्क करें.

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

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

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

रिज़ॉल्यूशन

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

Cassandra पर, रीड अनुरोध की लेटेन्सी में बढ़ोतरी

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

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

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

ध्यान दें: सिर्फ़ Edge Private Cloud के उपयोगकर्ता ही यह तरीका अपना सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge की सहायता टीम से संपर्क करें.

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

रिज़ॉल्यूशन

ध्यान दें: सिर्फ़ Edge Private Cloud के उपयोगकर्ता ही यह तरीका अपना सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge की सहायता टीम से संपर्क करें.

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

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

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

ध्यान दें: सिर्फ़ Edge Private Cloud के उपयोगकर्ता ही यह तरीका अपना सकते हैं. अगर आप Edge Public Cloud का इस्तेमाल कर रहे हैं, तो Apigee Edge की सहायता टीम से संपर्क करें.

Edge में, एपीआई प्रॉक्सी बंडल के ज़्यादा से ज़्यादा साइज़ को कंट्रोल करने वाली Cassandra प्रॉपर्टी thrift frame transport size का साइज़ बढ़ाने के लिए, यह तरीका अपनाएं:

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

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