Datastore অ্যাক্সেস করতে সমস্যা হয়েছে

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

Edge UI বা Edge ম্যানেজমেন্ট API কলের মাধ্যমে API প্রক্সি রিভিশন ডেপ্লয়মেন্ট সমস্যা "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. কারণ বিবরণ এর জন্য
    মেসেজ প্রসেসর ও ক্যাসান্ড্রার মধ্যে নেটওয়ার্ক কানেক্টিভিটি সংক্রান্ত সমস্যা নেটওয়ার্ক কানেক্টিভিটি সংক্রান্ত সমস্যা বা ফায়ারওয়াল নিয়মের কারণে মেসেজ প্রসেসর ও ক্যাসান্ড্রার মধ্যে যোগাযোগে সমস্যা হয়েছে। Edge Private Cloud ব্যবহারকারী
    Cassandra রিস্টার্ট হওয়ার কারণে ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা Cassandra নোড উপলভ্য ছিল না কারণ রুটিন মেইনটেন্যান্সের অংশ হিসেবে এটি রিস্টার্ট করা হয়েছিল। Edge Private Cloud ব্যবহারকারী
    Cassandra-তে রিড অনুরোধ লেটেন্সি বেড়ে যাওয়া Cassandra নোড যদি একসাথে অনেক রিড অপারেশন পারফর্ম করে, তাহলে রিড রিকোয়েস্ট লেটেন্সি বেড়ে যাওয়ার কারণে সেটি ধীরে ধীরে উত্তর দিতে পারে। Edge Private Cloud ব্যবহারকারী
    API প্রক্সি বান্ডেল ১৫ এমবির চেয়ে বড় Cassandra-কে এমনভাবে কনফিগার করা হয়েছে যাতে ১৫ এমবির চেয়ে বড় API প্রক্সি বান্ডেল ব্যবহার করা না যায়। Edge Private Cloud ব্যবহারকারী

    Message Processor ও Cassandra-র মধ্যে নেটওয়ার্ক কানেক্টিভিটি সংক্রান্ত সমস্যা

    ডায়াগনসিস

    মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

    1. API প্রক্সি আনডিপ্লয় করে আবার ডিপ্লয় করুন। মেসেজ প্রসেসর ও ক্যাসান্ড্রার মধ্যে সাময়িক কানেক্টিভিটি সংক্রান্ত সমস্যা হয়ে থাকলে, সমস্যাটি সমাধান হয়ে যেতে পারে।

      সতর্কতা: প্রোডাকশন এনভায়রনমেন্টে সমস্যা দেখা গেলে আনডিপ্লয় করবেন না।

    2. সমস্যাটি চলতে থাকলে, নিচে উল্লেখ করা ম্যানেজমেন্ট AP কলটি এক্সিকিউট করে ডেপ্লয়মেন্ট স্ট্যাটাস চেক করুন এবং কোনও কম্পোনেন্টে কোনও সমস্যা আছে কিনা দেখুন:
      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. রিস্টার্ট করা মেসেজ প্রসেসরে ডেপ্লয়মেন্ট সফল হয়েছে কিনা তা দেখতে #২ ধাপটি আবার করুন। কোনও সমস্যা খুঁজে না পাওয়া গেলে, বুঝবেন যে সমস্যার সমাধান হয়ে গেছে।
    5. মেসেজ প্রসেসর পোর্ট 9042 এবং 9160-এ প্রতিটি Cassandra নোডের সাথে কানেক্ট করতে পারছে কিনা তা চেক করুন:
      1. Telnet উপলভ্য থাকলে, এটি ব্যবহার করুন:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
      2. Telnet উপলভ্য না থাকলে, নিম্নলিখিত উপায়ে কানেক্টিভিটি চেক করতে netcat ব্যবহার করুন:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
      3. আপনি যদি "কানেকশন প্রত্যাখ্যান করা হয়েছে" বা "কানেকশনের সময়সীমা শেষ হয়ে গেছে" উত্তর পান, তাহলে আপনার নেটওয়ার্ক অপারেশন টিমের সাথে যোগাযোগ করুন।
    6. সমস্যার সমাধান না হলে, Cassandra নোডের প্রতিটি পোর্ট ৯0৪২ এবং পোর্ট ৯১৬০-এ লিসেন করছে কিনা তা চেক করুন:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. Cassandra নোড পোর্ট ৯০৪২ বা ৯১৬০-এ লিসেন না করলে, নির্দিষ্ট Cassandra নোড রিস্টার্ট করুন:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. সমস্যার সমাধান না হলে, আপনার নেটওয়ার্ক অপারেশন টিমের সাথে যোগাযোগ করুন।

রেজোলিউশন

আপনার নেটওয়ার্ক অপারেশন টিমের সাথে কাজ করুন এবং মেসেজ প্রসেসর ও ক্যাসান্ড্রার মধ্যে নেটওয়ার্ক কানেক্টিভিটি সংক্রান্ত সমস্যা সমাধান করুন।

Cassandra রিস্টার্ট হওয়ার কারণে ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

রুটিন রক্ষণাবেক্ষণের অংশ হিসেবে Cassandra নোড সাধারণত নির্দিষ্ট সময় অন্তর রিস্টার্ট করা হয়। Cassandra রক্ষণাবেক্ষণের সময় API প্রক্সি ডেপ্লয় করা হলে, Cassandra ডেটা স্টোরে অ্যাক্সেস না থাকার কারণে ডেপ্লয়মেন্ট ব্যর্থ হয়।

মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

ডায়াগনসিস

  1. ডিপ্লয়মেন্টের সময় Cassandra নোড রিস্টার্ট করা হয়েছিল কিনা তা চেক করুন। এটি Cassandra লগ বা Cassandra নোডের সবচেয়ে সাম্প্রতিক স্টার্ট-আপ টাইম লগ চেক করে করা যেতে পারে:

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

রেজোলিউশন

  1. Cassandra চালু আছে কিনা তা নিশ্চিত করুন।
  2. মেসেজ প্রসেসররা পোর্ট ৯০৪২ এবং ৯১৬০-এ Cassandra ডেটা স্টোরের সাথে কানেক্ট করতে পারছেন কিনা তা চেক করুন।

Cassandra-তে রিড অনুরোধের লেটেন্সি বেড়ে যাওয়া

Cassandra-তে রিডের সংখ্যা বেশি হওয়া নির্ভর করে স্বতন্ত্র ব্যবহারের উদাহরণ ও ট্রাফিক প্যাটার্নের উপর। এগুলি এমন প্রক্সি সার্ভারে থাকে যেগুলিতে এমন নীতি থাকে যেগুলির জন্য Cassandra থেকে রিড অ্যাক্সেস প্রয়োজন।

যেমন, OAuth নীতির জন্য refresh_token গ্রান্ট টাইপ রিফ্রেশ করার জন্য কোনও GET কল করা হলে এবং রিফ্রেশ টোকেনটি অনেক অ্যাক্সেস টোকেনের সাথে যুক্ত থাকলে, এর ফলে Cassandra থেকে প্রচুর পরিমাণে রিড হতে পারে। এর ফলে Cassandra-তে রিড অনুরোধের লেটেন্সি বেড়ে যেতে পারে।

রোগ নির্ণয়

মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

  1. আপনি যদি বিটা মনিটরিং ড্যাশবোর্ড ইনস্টল করে থাকেন, তাহলে Cassandra ড্যাশবোর্ড দেখুন এবং সমস্যার সময়কালের জন্য "রিড অনুরোধ" চার্ট পর্যালোচনা করুন। এছাড়াও, "রিড অনুরোধ লেটেন্সি" চার্ট পর্যালোচনা করুন।
  2. রিড অনুরোধ ও রিড লেটেন্সি চেক করার বিকল্প টুল হল nodetool cfstats কমান্ড। এই কমান্ড ব্যবহার করার ব্যাপারে আরও বিবরণ পেতে Cassandra ডকুমেন্টেশন দেখুন।

রেজোলিউশন

মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

  1. Cassandra-র পারফর্ম্যান্স স্বাভাবিক হয়ে গেলে আবার ডেপ্লয়মেন্ট করার চেষ্টা করুন। সম্পূর্ণ Cassandra রিং স্বাভাবিক আছে কিনা তা নিশ্চিত করুন।
  2. (ঐচ্ছিক) কানেক্টিভিটি যে প্রতিষ্ঠিত হয়েছে তা নিশ্চিত করতে মেসেজ প্রসেসরে রোলিং রিস্টার্ট করুন।
  3. দীর্ঘমেয়াদী সমাধানের জন্য, API ট্রাফিক প্যাটার্ন পর্যালোচনা করুন যা সম্ভবত Cassandra ডেটা স্টোরে উচ্চতর রিড করার ক্ষেত্রে অবদান রাখবে। এই সমস্যার সমাধান করতে Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।
  4. আগত ট্রাফিক ম্যানেজ করার জন্য আগে থেকে থাকা Cassandra নোড পর্যাপ্ত না হলে, তাহলে হার্ডওয়্যার ক্যাপাসিটি বা Cassandra ডেটা স্টোর নোডের সংখ্যা উপযুক্তভাবে বাড়ান।

API প্রক্সি বান্ডেল ১৫ এমবির চেয়ে বড়

Cassandra-তে API প্রক্সি বান্ডেলের সাইজ ১৫ এমবিতে সীমাবদ্ধ। API প্রক্সি বান্ডেলের সাইজ ১৫ এমবির বেশি হলে, আপনি API প্রক্সি ডেপ্লয় করার চেষ্টা করলে "Datastore অ্যাক্সেস করার সময় সমস্যা হয়েছে" মেসেজ দেখতে পাবেন।

ডায়াগনসিস

মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

  1. মেসেজ প্রসেসর লগ চেক করুন (/opt/apigee/var/log/edge-message-processor/logs/system.log) এবং দেখুন যে নির্দিষ্ট API প্রক্সি ডেপ্লয় করার সময় কোনও সমস্যা হয়েছে কিনা।
  2. আপনি যদি নিচের ছবিতে দেখানো সমস্যার মতো কোনও সমস্যা দেখতে পান, তাহলে ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা হওয়ার কারণ হল API প্রক্সি বান্ডেলের সাইজ > ১৫ এমবি।
    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>

রেজোলিউশন

অনেক বেশি রিসোর্স ফাইল থাকলে API প্রক্সি বান্ডেল অনেক বড় হবে। এই সমস্যার সমাধান করতে, নিম্নলিখিত সমাধানগুলি ব্যবহার করুন:

সমাধান #১: রিসোর্স ফাইলকে এনভায়রনমেন্ট বা অর্গানাইজেশন লেভেলে সরানো

  1. NodeJS স্ক্রিপ্ট ফাইল ও মডিউল, জাভাস্ক্রিপ্ট ফাইল, JAR ফাইলের মতো যেকোনও রিসোর্স ফাইল এনভায়রনমেন্ট বা অর্গানাইজেশন লেভেলে সরিয়ে দিন। রিসোর্স ফাইল সম্পর্কে আরও জানতে, Edge ডকুমেন্টেশন দেখুন।
  2. API প্রক্সি ডেপ্লয় করুন এবং দেখুন যে সমস্যাটি চলে গেছে কিনা।

সমস্যাটি যদি থেকে যায় বা আপনি যদি কোনও কারণে রিসোর্স ফাইলগুলিকে এনভায়রনমেন্ট বা অর্গানাইজেশন লেভেলে সরাতে না পারেন, তাহলে সমাধান #২ প্রয়োগ করুন।

সমাধান #২: Cassandra-তে API প্রক্সি বান্ডেলের সাইজ বাড়ানো

মনে রাখবেন: শুধুমাত্র Edge Private Cloud ব্যবহারকারীরাই নিম্নলিখিত ধাপগুলি সম্পূর্ণ করতে পারবেন। আপনি Edge পাবলিক ক্লাউডে থাকলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

Edge-এ অনুমোদিত API প্রক্সি বান্ডেলের সর্বাধিক সাইজ নিয়ন্ত্রণকারী Cassandra প্রপার্টির থ্রিফ্ট ফ্রেম ট্রান্সপোর্ট সাইজ বাড়াতে এইসব ধাপ ফলো করুন:

  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 নোডে #১ থেকে #৩ ধাপগুলি আবার করুন।

সমস্যার সমাধান না হলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।