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

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

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

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

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

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

    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 पर मैसेज प्रोसेसर, हर Cassandra नोड से कनेक्ट कर पा रहा है या नहीं और 9160:
      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. अगर समस्या बनी रहती है, तो अपनी नेटवर्क ऑपरेशन टीम से संपर्क करें.

रिज़ॉल्यूशन

अपनी नेटवर्क ऑपरेशन टीम के साथ काम करें और मैसेज प्रोसेसर और कैसेंड्रा.

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

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

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

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

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

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

रिज़ॉल्यूशन

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

कैसंद्रा पर रीड रिक्वेस्ट के इंतज़ार का समय बढ़ाने में बढ़ोतरी

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

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

डायग्नोसिस

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

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

रिज़ॉल्यूशन

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

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

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

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

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

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

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

सलूशन #2: कैसंड्रा पर एपीआई प्रॉक्सी बंडल का साइज़ बढ़ाना

ध्यान दें: सिर्फ़ Edge प्राइवेट क्लाउड इस्तेमाल करने वाले लोग ही यह तरीका अपना सकते हैं. अगर आपको अगर उपयोगकर्ता Edge Public Cloud का इस्तेमाल करते हैं, तो Apigee 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 की सहायता टीम से संपर्क करें.