সেশনগুলি আরও দক্ষতার সাথে ভাগ করে নেওয়ার জন্য মেমক্যাচ ডেমনগুলির একটি পুল ব্যবহার করা যেতে পারে?


25

আমরা 1 ওয়েবসারভার সেটআপ থেকে দুটি ওয়েবসার্ভার সেটআপে চলেছি এবং আমার দুটি ভারসাম্যপূর্ণ মেশিনের মধ্যে পিএইচপি সেশনগুলি ভাগ করে নেওয়া শুরু করা দরকার। আমরা ইতিমধ্যে ইনস্টল করা ( এবং শুরু ) মেমক্যাচ করেছি এবং তাই আমি খুব ভালভাবেই অগ্রসর হয়েছি যে আমি নতুন সার্ভারের মধ্যে ফাইলের ( সেশন.সভে_হ্যান্ডলার এবং সেশন.সভ_পথ ) মাত্র 3 টি লাইন পরিবর্তন করে নতুন সার্ভারের মধ্যে ভাগ করে নেওয়ার সময়গুলি অর্জন করতে পেরেছি :php.ini

আমি প্রতিস্থাপন করেছি:

session.save_handler = files

সঙ্গে:

session.save_handler = memcache

তারপরে মাস্টার ওয়েবসারভারে আমি session.save_pathলোকালহোস্টের দিকে নির্দেশ করলাম :

session.save_path="tcp://localhost:11211"

এবং স্লেভ ওয়েবসার্ভারে আমি session.save_pathমাস্টারের দিকে নির্দেশ করেছিলাম :

session.save_path="tcp://192.168.0.1:11211"

কাজ শেষ, আমি এটি পরীক্ষা করেছি এবং এটি কাজ করে। কিন্তু ...

স্পষ্টতই মেমক্যাচ ব্যবহার করা মানে সেশনগুলি র‌্যামে রয়েছে এবং কোনও মেশিন রিবুট করা থাকলে বা মেমক্যাচ ডেমন ক্র্যাশ হয়ে গেলে নষ্ট হয়ে যায় - আমি এ সম্পর্কে কিছুটা উদ্বিগ্ন তবে আমি দুটি ওয়েবসারকের মধ্যে নেটওয়ার্ক ট্র্যাফিক সম্পর্কে কিছুটা বেশি উদ্বিগ্ন (বিশেষত হিসাবে) আমরা স্কেল করেছি) কারণ যখনই কেউ ক্রীতদাস ওয়েবসভারের সাথে ভারসাম্যপূর্ণ হয় তখন তাদের সেশনগুলি মাস্টার ওয়েবসার্ভার থেকে নেটওয়ার্ক জুড়ে নিয়ে আসা হবে। আমি ভাবছিলাম যে আমি দুটি সংজ্ঞায়িত করতে পারি কিনা save_pathsতাই নেটওয়ার্কগুলি ব্যবহারের আগে মেশিনগুলি তাদের নিজস্ব সেশন স্টোরেজটি দেখবে। উদাহরণ স্বরূপ:

মাস্টার:

session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"

ক্রীতদাস:

session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"

এটি কি সার্ভারগুলিতে সফলভাবে সেশনগুলি ভাগ করে নেবে এবং পারফরম্যান্সে সহায়তা করবে? অর্থ্যাৎ 50% সময় নেটওয়ার্ক ট্র্যাফিক সংরক্ষণ করুন। অথবা এই কৌশলটি কেবল ব্যর্থ ব্যক্তিদের জন্য (উদাহরণস্বরূপ যখন একটি মেমকেচে ডিমনটি না পারা যায়)?

দ্রষ্টব্য : আমি সত্যিই বিশেষভাবে মেমক্যাচের প্রতিলিপি সম্পর্কে জিজ্ঞাসা করছি না - পিএইচপি মেমক্যাচ ক্লায়েন্ট একটি পুলের মধ্যে প্রতিটি মেমক্যাচ ডিমনের ভিতরে শিখতে পারে কিনা সে সম্পর্কে আরও জানতে, সেশনটি পাওয়া যায় এবং যদি এটি খুঁজে না পায় তবে কেবল একটি নতুন সেশন তৈরি করে whether সব দোকানে। আমি যখন এটি লিখছি তখন আমি ভাবছি যে আমি পিএইচপি থেকে কিছু জিজ্ঞাসা করছি, হ্যাঁ ...

ধরে নিন : কোনও স্টিকি-সেশন নয়, রাউন্ড-রবিন লোড ব্যালেন্সিং, এলএএমপি সার্ভার নেই।


1
মেমক্যাস ডকুমেন্টেশন সেশন স্টোরেজের জন্য মেমক্যাচ ব্যবহার করার পরামর্শ দেয় না। কোড . google.com/p/memcached/wiki/… দেখুন !

উত্তর:


37

দাবি অস্বীকার: আপনি এক টন টেস্টিং না করে এবং যোগ্য কারও কাছ থেকে দ্বিতীয় মতামত না পেয়ে আমার কথা শুনতে পাগল হবেন - আমি এই গেমটিতে নতুন

এই প্রশ্নে প্রস্তাবিত দক্ষতা উন্নতির ধারণা কার্যকর করবে না। আমি যে প্রধান ভুলটি করেছিলাম তা ভেবেছিল যে মেমক্যাচ করা স্টোরগুলি পুলটিতে অর্ডার করা হয়েছে তা কোনও প্রকার অগ্রাধিকারের নির্দেশ দেয়। এই ক্ষেত্রে হয় না । আপনি যখন মেম্যাডড ডিমনগুলির একটি পুল নির্ধারণ করেন (উদাহরণস্বরূপ ব্যবহার করা session.save_path="tcp://192.168.0.1:11211, tcp://192.168.0.2:11211") আপনি কোন স্টোর ব্যবহার করবেন তা জানতে পারবেন না। ডেটা সমানভাবে বিতরণ করা হয়, যার অর্থ কোনও আইটেমটি প্রথমে সংরক্ষণ করা যেতে পারে, বা এটি সর্বশেষ হতে পারে (বা এটি উভয়ই হতে পারে যদি মেমক্যাস ক্লায়েন্টটি প্রতিলিপি তৈরি করতে কনফিগার করা থাকে - নোট এটি ক্লায়েন্ট যা প্রতিলিপি পরিচালনা করে, মেমক্যাচ সার্ভারটি করে এটি নিজেই করবেন না)। যে কোনও উপায়ে বলতে হবে যে পুলটিতে প্রথম হিসাবে লোকালহোস্ট ব্যবহার করা পারফরম্যান্সের উন্নতি করবে না - উভয় স্টোরকে হিট করার 50% সম্ভাবনা রয়েছে।

কিছুটা পরীক্ষা এবং গবেষণা করার পরে আমি এই সিদ্ধান্তে পৌঁছেছি যে আপনি মেমক্যাচ ব্যবহার করে সার্ভারগুলি জুড়ে সেশনগুলি ভাগ করতে পারেন তবে আপনি সম্ভবত এটি চান না - এটি জনপ্রিয় বলে মনে হয় না কারণ এটি ভাগ করে নেওয়ার পাশাপাশি ভাগ করে নেওয়া হয় না এটিতে ডাটাবেসটি শক্তিশালী নয়। আমি এই সম্পর্কে প্রতিক্রিয়া প্রশংসা করব তাই আমি আরও জানতে পারি ...

আপনার পিএইচপি অ্যাপ না থাকলে নিম্নলিখিতটি উপেক্ষা করুন:


টিপ 1: আপনি মেমক্যাচ ব্যবহার করে 2 টি সার্ভার জুড়ে সেশনগুলি ভাগ করতে চান:

আপনি যখন পিএইচপি মেমক্যাচ ক্লায়েন্ট ইনস্টল করেছেন এবং আপনার ফাইলে নিম্নলিখিতগুলি যুক্ত করেছেন তখন আপনি " হ্যাঁ মেমক্যাচ সেশন হ্যান্ডলার সমর্থন সক্ষম করুন " ?/etc/php.d/memcache.ini

session.save_handler = memcache

ওয়েবসভার 1 এ (আইপি: 192.168.0.1):

session.save_path="tcp://192.168.0.1:11211"

ওয়েবসভার 2 এ (আইপি: 192.168.0.2):

session.save_path="tcp://192.168.0.1:11211"

টিপ 2: আপনি মেমক্যাচ ব্যবহার করে 2 টি সার্ভার জুড়ে সেশনগুলি ভাগ করতে চান এবং ফেলওভার সমর্থন পেতে পারেন:

আপনার /etc/php.d/memcache.iniফাইলে নিম্নলিখিতগুলি যুক্ত করুন:

memcache.hash_strategy = consistent
memcache.allow_failover = 1

ওয়েবসভার 1 এ (আইপি: 192.168.0.1):

session.save_path="tcp://192.168.0.1:11211, tcp://192.168.0.2:11211"

ওয়েবসভার 2 এ (আইপি: 192.168.0.2):

session.save_path="tcp://192.168.0.1:11211, tcp://192.168.0.2:11211"

নোট:

  • এটি মূল প্রশ্নে আমার করা অন্য একটি ভুল তুলে ধরে - আমি session.save_pathসমস্ত সার্ভারে অভিন্ন ব্যবহার করছিলাম না ।
  • এই ক্ষেত্রে "ফেলওভার" এর অর্থ হ'ল যদি কোনও মেমক্যাচ ডেমন ব্যর্থ হয় তবে পিএইচপি মেমক্যাচ ক্লায়েন্ট অন্যটিকে ব্যবহার করা শুরু করবে। উদাহরণস্বরূপ, যার যার দোকানে সেশন ছিল যে ব্যর্থ হয়েছে লগ আউট হবে। এটি স্বচ্ছ ব্যর্থতা নয়।

টিপ 3: আপনি যদি মেমক্যাস ব্যবহার করে সেশনগুলি ভাগ করতে চান এবং স্বচ্ছ ব্যর্থতা সমর্থন পান:

টিপ 2 হিসাবে একই আপনার আপনার /etc/php.d/memcache.iniফাইলে নিম্নলিখিতগুলি যুক্ত করতে হবে:

memcache.session_redundancy=2

নোট:

  • এটি পিএইচপি মেমক্যাচ ক্লায়েন্টকে 2 টি সার্ভারে সেশন লিখতে সক্ষম করে। আপনি রিডানডেন্সি পান (RAID-1 এর মতো) যাতে get'sলেখাগুলি এন মিররগুলিতে প্রেরণ করা হয় এবং ব্যর্থ হয়ে মিররগুলিতে আবার চেষ্টা করা হয়। এর অর্থ হ'ল কোনও মেমকেচে ডেমন ব্যর্থতার ক্ষেত্রে ব্যবহারকারীরা তাদের সেশনটি শিথিল করবেন না।
  • মিররড রাইটিংগুলি সমান্তরালভাবে করা হয় (নন-ব্লকিং-আইও ব্যবহার করে) সুতরাং গতির পারফরম্যান্স যতটা আয়না সংখ্যা বাড়বে তেমন কমবে না। তবে আপনার মেমকেচে মিরর বিভিন্ন মেশিনে বিতরণ করা হলে নেটওয়ার্ক ট্র্যাফিক বৃদ্ধি পাবে। উদাহরণস্বরূপ, লোকালহোস্ট ব্যবহার এবং নেটওয়ার্ক অ্যাক্সেস এড়ানোর কোনও আর 50% সুযোগ নেই।
    • স্পষ্টতই, লিখিত প্রতিলিপিতে বিলম্বের ফলে ক্যাশে মিসের পরিবর্তে পুরানো ডেটা পুনরুদ্ধার হতে পারে। প্রশ্নটি কি এটি আপনার আবেদনের জন্য গুরুত্বপূর্ণ? আপনি কতবার সেশন ডেটা লিখবেন?
  • memcache.session_redundancyঅধিবেশন রিডানডেন্সি এর জন্য তবে একটি memcache.redundancyআইএনআই বিকল্পও রয়েছে যা আপনার পিএইচপি অ্যাপ্লিকেশন কোডটি ব্যবহার করতে পারেন যদি আপনি এটির ভিন্ন মাত্রার অপ্রয়োজনীয়তা চান।
  • আপনার পিএইচপি মেমক্যাচ ক্লায়েন্টের সাম্প্রতিক সংস্করণ (এখনও বিটাতে রয়েছে) দরকার - পিইসিএল থেকে সংস্করণ 3.0.3 আমার জন্য কাজ করেছে।

আপনি "ভাগ করে নেওয়া ডাটাবেস ব্যবহারের পাশাপাশি এটি স্কেল করে না" এ বিষয়ে মন্তব্য করতে পারেন? আমি দেখতে পাই না যে এটি একটি সাধারণ মাস্টার-স্লেভ ডিবি সেটআপ থেকে কীভাবে আলাদা। ধন্যবাদ!
ছেলে বউকেমা

এটি একটি দুর্দান্ত শীতল ব্রেকডাউন, যদিও গুজব রয়েছে (ওরফে বাগ রিপোর্টগুলি) যে আপনি যখন ext/memcacheসংস্করণ 3.x ব্যবহার করবেন তখন এটি প্রত্যাশা অনুযায়ী কাজ করে না। আমরা সেই বিকল্পটিও খেলছি এবং আমি সার্ভারের তালিকাটি লুপ করে নিজে নিজে লিখে দেওয়ার সিদ্ধান্ত নিয়েছি।
পর্যন্ত

টিপ 3 এর ক্ষেত্রে: যদি কোনও মেমচেড হোস্ট নীচে যায় এবং তারপরে এটি আসে, তবে সেকেন্ডের হোস্টটি নীচে যায়। আমি যেমন বুঝতে পেরেছি - কোনও সেশন ডেটা পুনরুদ্ধার করা হবে না এবং এর কিছু হারিয়ে যাবে, তাই না?
GioMac

28

পুনরায়: 3 টিপ টিপুন (গুগলের মাধ্যমে এটির যে কেউই ঘটতে পারে তার পক্ষে) মনে হচ্ছে কমপক্ষে বর্তমানে এটি কাজ করার জন্য memcache.session_redundancy = N+1আপনার পুলে এন সার্ভারের জন্য অবশ্যই ব্যবহার করতে হবে , কমপক্ষে এটি ন্যূনতম প্রান্তিক বলে মনে হচ্ছে মান যে কাজ করে। (ডিবিয়ান স্ট্যাবিলে পিএইচপি 5.3.3 দিয়ে পরীক্ষা করা, পেকল মেমক্যাশ 3.0.০..6, দুটি মেমক্যাচ করা সার্ভার। session_redundancy=2আমি প্রথম সার্ভারটি বন্ধ করার সাথে সাথে ব্যর্থ হয়ে যাবে save_path, ভাল session_redundancy=3কাজ করে))

এই বাগ রিপোর্টগুলিতে এটি ধরা পড়েছে বলে মনে হচ্ছে:


1
আপনাকে যথেষ্ট উত্সাহিত করতে পারে না
ফেস্ট

1
আমি খুশি আমি স্ক্রোল ডাউন। এই সমস্যা ছিল।
ডেরেন শ্বেঙ্ক

এটি আমার কাছে পরিষ্কার নয়, এই বৈশিষ্ট্যটি কি কেবল পিসিএল মেমক্যাস ৩.x সিরিজে উপলব্ধ? এগুলির সবগুলিই pecl.php.net/package/memcache এ বিটা সফ্টওয়্যারটিতে তালিকাভুক্ত রয়েছে , যেখানে ২.২..7 এ আমি যদি সার্ভারটি মেরে থাকি যেটিতে আমি নেতাটি দেখি, সমস্ত কিছু মারা যায়।
জো

সত্যি বলতে সত্য, সত্যিই আমি এই দিকে তাকিয়ে বছর পেরিয়েছি। আমার মনে আছে, এটি ছিল একটি 3.x বৈশিষ্ট্য (আইসিবিডাব্লু)। আমরা সেই প্লাগইনটির "বিটা" সংস্করণগুলি ব্যবহার করে অনেকগুলি সিস্টেম মোতায়েন করেছি (এর মধ্যে কয়েকটি বেশ উচ্চ ট্র্যাফিক) এবং এর সাথে সম্পর্কিত বলে মনে হচ্ছে এমন কোনও সমস্যা হয়নি। ওয়াইএমএমভি, জিনিসগুলি লাইভ হওয়ার আগে পরীক্ষা করুন ইত্যাদি :) :) আমি এখন কয়েক বছর ধরে পিএইচপি-তে কাজ করি না তাই ট্রিভিয়ার কিছু সূক্ষ্ম বিন্দু বিবর্ণ হতে শুরু করে।
মাইকেল জ্যাকসন

3

উপরের php.ini সেটিংসের সাথে নীচেরগুলিও সেট করা আছে তা নিশ্চিত করুন:

memcache.allow_failover = 1  
memcache.hash_strategy = 'consistent'

তারপরে আপনি সম্পূর্ণ ব্যর্থতা এবং ক্লায়েন্ট-সাইড রিডানডেন্সি পাবেন। এই পদ্ধতির সহিত সতর্কতাটি হ'ল লোকালহোস্টে যদি মেমক্যাচ বন্ধ থাকে তবে পিএইচপি মেমক্যাচ ক্লায়েন্টটি সেশনে উল্লিখিত পুলে পরবর্তী সার্ভারটি চেষ্টা করার আগে একটি পঠন মিস থাকবে ave

কেবল মনে রাখবেন যে এটি আপনার ওয়েব সার্ভারে চলমান পিএইচপি মেমক্যাচ ক্লায়েন্টের জন্য বিশ্বব্যাপী সেটিংসকে প্রভাবিত করে।


একটি consistentহ্যাশিং কৌশল ব্যবহার করে কি session.save_pathপ্রতিটি ওয়েবসারভারের ক্ষেত্রে ভিন্নতা তা বিবেচনা করে বোঝায়?
টম

1

মেমক্যাচড সেভাবে কাজ করে না (দয়া করে আমি ভুল হলে আমাকে সংশোধন করুন!)

আপনি যদি আপনার অ্যাপ্লিকেশনটির রিডানডেন্ট সেশন স্টোরেজ রাখতে চান তবে আপনাকে এমন কিছু তৈরি করতে হবে যা মেমক্যাচ করা দৃষ্টান্তগুলিতে দু'টি প্রবেশদ্বারে পরিবর্তন / যুক্ত / মুছে ফেলবে। মেমক্যাচড এটি হ্যান্ডেল করে না, এটি কেবলমাত্র হ্যাশ স্টোরেজ হিসাবে সরবরাহ করে। সুতরাং কোন প্রতিলিপি, সমন্বয়, কিছুই না, না।

আমি আশা করি আমি এই বিষয়ে ভুল নই, তবে এটি আমি মেমকেচ করা সম্পর্কে জানি, এটি স্পর্শ করার কয়েক বছর পরে।


আপনি ভুল হলে এটি আমার পক্ষে সুবিধাজনক হবে। :-) phpslacker.com এ একটি নিবন্ধ রয়েছে ( phpslacker.com/2009/03/02/php-session-clustering-with-memcache ) যা মেমক্যাশড প্রশ্নের মধ্যে বর্ণিত হিসাবে কাজ করতে পারে তা বোঝায়। সম্ভবত এটি নির্ভর করে যে কীভাবে মেমকেচে ক্লায়েন্ট হ্যাশিং কৌশল প্রয়োগ করে?
টম

1
মেমক্যাচ সেভাবে কাজ করে না, তবে মনে হয় যে পিএইচপি আপনার ইচ্ছা মতো কাজ করতে পারে। আপনাকে php.ini পরিবর্তন করতে হবে বা বর্ণিত মত আপনার অ্যাপ পরিবর্তন করতে হবে। ব্লগ থেকে: গুচ্ছ কোথায় আপনি জিজ্ঞাসা ভাল, সত্য বলা হবে যে কিছুই নেই। আমাদের এখন পর্যন্ত যা আছে তা হ'ল একটি সার্ভারের সমন্বয়ে একটি মেমক্যাস পুল। পুলটিতে লেখার জন্য পিএইচপি কনফিগার করা হয়েছে। পিএইচপি "সেশন.সেভ_পাথ" ইনআই নির্দেশাবলী দ্বারা নির্দিষ্ট করে ক্রমটি সার্ভার পুলে পড়ে / লিখেন। পড়ার জন্য পিএইচপি পুল থেকে কী দ্বারা কোনও ক্যাশে অবজেক্টের জন্য অনুরোধ করবে। যেহেতু "ব্যর্থতা" সক্ষম হয়েছে পিএইচপি
মেমচে ক্যাভার সার্ভারগুলির পুলটিকে

1

মেমক্যাচড বাক্সের বাইরে প্রতিলিপি তৈরি করে না, তবে পুনরায় ক্যাচড (একটি প্যাচড মেমক্যাচড ) করে। তবে আপনি যদি ইতিমধ্যে mysql ব্যবহার করছেন তবে কেন কেবল তার অনুলিপি কার্যকারিতা মাস্টার-মাস্টার প্রতিরূপে ব্যবহার করবেন না এবং সম্পূর্ণ ডেটা প্রতিরূপের সুবিধা পাবেন?

সি


তথ্যের জন্য ধন্যবাদ। এটি সত্যিকারের প্রতিরূপ নয় যা আমি পরে করছি। অধিবেশনটি সন্ধান না হওয়া পর্যন্ত এটি প্রতিটি ম্যাকচেডের মধ্যে চূড়ান্তভাবে উঠতে ইচ্ছুক more অর্থাৎ লোকালহোস্টটি প্রথমে পরীক্ষা করা কারণ এটি দ্রুত এবং তারপরে অন্য সার্ভারটি পরীক্ষা করে।
টম

1
সমস্ত দেবতার নামে কেন ???? এটি সম্পূর্ণরূপে ভুল সমাধান .... ঠিক যে কোনও সমস্যা সম্পর্কে আমি ভাবতে পারি about এমনকি মাত্র ২ টি সার্ভারের পারফরম্যান্সের সাথে খুব অদক্ষ হওয়ার পাশাপাশি আপনি যদি আরও বেশি সার্ভার যুক্ত করেন তবে খুব দ্রুত ক্রমশ খারাপ হয়ে উঠবে। এবং এটি সত্য যে বিবেচনা করে না যে আপনার সমাধান দ্বিগুণ হয়ে যাওয়ার সম্ভাবনা রয়েছে যতক্ষণ না তারা যখন কোনও একক সার্ভারের সাথে ছিল যখন অনুশীলন করে একটি ক্লাস্টারে সার্ভার যুক্ত করার ফলে আউটেজের সম্ভাবনা হ্রাস করা উচিত। (বিটিডাব্লু যদি আপনি ডিএনএস ভিত্তিক রাউন্ড-রবিন বলতে চান তবে সেশনের
সম্পর্কটি

প্রতিক্রিয়াটির জন্য ধন্যবাদ, হ্যাঁ, আমি নির্দ্বিধায় স্বীকার করছি যে আমি সেশন ভাগ করে নেওয়ার জন্য এক নূতন! :-) তবে আমার প্রস্তাবটি কেন এত কুৎসিত তা আমি এখনও বুঝতে পারি নি। আমি ভেবেছিলাম ভাগ করা ডিবি ব্যবহারের চেয়ে এটি আরও দক্ষ হবে এবং আমিও ভেবেছিলাম যে এটি কমিয়ে আনা সম্ভব হবে।
টম

না, এটি তাদের আরও সম্ভাবনা তৈরি করে। এই জাতীয় ডেটা ফেডারেট করা যখন আপনার খুব বেশি সংখ্যক নোড পেয়েছে তখন আপনি তা বোঝাতে পারেন কারণ আপনি প্রতিরূপের পরিমাণ হ্রাস করেছেন তবে সহজলভ্যতা রক্ষার জন্য একটি সংজ্ঞায়িত সংখ্যক পুলের সাথে সাধারণত কিছু প্রতিলিপি তৈরি করা হবে। পুনরায় প্রচারিত প্রতিলিপি এবং মাইএসকিএলডি প্রতিরূপের মধ্যে পার্থক্য দেখতে আপনার পারফরম্যান্স সম্পর্কে খুব পিক হওয়া দরকার।
সিমকিবিয়ান

আমি পরীক্ষা করে দেখেছি এবং নিশ্চিত করেছি যে যতক্ষণ আমি অনুমতি_ফয়েলওভার = 1 ব্যবহার করছি, একাধিক আয়না কমিয়ে যাওয়ার সম্ভাবনা কমিয়ে দেয়। আমি একটি আয়না শাটডাউন করতে পারি, এটি পুনরায় চালু করতে এবং অন্যটিকে শাটডাউন করতে, পুনরায় চালু করতে এবং প্রথমটি আবার বন্ধ করতে পারি - লগ আউট না করেই all আমার ধারণা পিএইচপি মেমক্যাচ ক্লায়েন্ট পর্দার আড়ালে অনেক কৌশল করে চলেছে।
টম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.