Workstation Logo
مصنوعات
AI لیبزOpenAI ایجنٹسClaude ایجنٹسGrok BotWorkstation CRM (WSL CRM)مارکیٹنگتمام مصنوعات
AI حل
AI ورک سٹیشنزAI SME Packagesپرائیویٹ AIGPU کلسٹرزایج AIانٹرپرائز AI لیبصنعت کے مطابق AI
خدمات
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous OperationsAI مشاورتDevOps آٹومیشنسائبر سیکیورٹیسافٹ ویئر ڈیولپمنٹایجنٹ بلڈنگMLOps سیٹ اپ
ہمارے بارے میں
شراکت دارگاہکوں کی کہانیاں
مضامین
دستاویزات
WSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7
بلاگ
ہم سے رابطہ کریںLogin
Workstation

جدید کاروبار کے لیے AI ورک اسٹیشنز، AI ملٹی ایجنٹک سافٹ ویئر، GPU انفراسٹرکچر اور ذہین ایجنٹ حل۔

ہم سے رابطہ کریں

AI حل

AI ورک سٹیشنزAI SME Packagesپرائیویٹ AIGPU کلسٹرزایج AIانٹرپرائز AI لیبصنعت کے مطابق AI

مصنوعات

تمام مصنوعاتWSL CRM اور ERPمارکیٹنگOpenAI ایجنٹسWSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7

کمپنی

ہمارے بارے میںWorkstation کیوںشراکت دارگاہکوں کی کہانیاںقیمتیںرابطہ

وسائل

مضامیندستاویزاتبلاگتلاشسائٹ میپ
برطانیہ آفس
77-79 Marlowes, Hemel Hempstead HP1 1LFراستہ - M25 آؤٹر لندن سے جنکشن 20 لیںکمپنی نمبر: 11641870پیر - جمعہ: صبح 9:00 - شام 6:00 GMT
+44 7515 356 146
بیلجیم آفس
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683پیر - جمعہ: صبح 9:00 - شام 6:00 CET
+32 492 45 67 46
بھارت آفس
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

© 2026 Workstation AI۔ جملہ حقوق محفوظ ہیں۔

رازداریکوکیزسروس کی شرائطویب سائٹ سائٹ میپ

Loading blog...

Home / Blog
DatabaseKubernetesDevOpsBackend

پیداوار میں Couchbase اعلی دستیابی: XDCR، Kubernetes آپریٹر، اور ملٹی ریجن تعیناتی

XDCR، خود مختار آپریٹر، اور ملٹی کلاؤڈ تعیناتی کے ساتھ انٹرپرائز Couchbase HA

Balinder Walia12 اپریل، 202639 min read

کا تعارف: کیوں Couchbase اعلی دستیابی پروڈکشن ورک بوجھ کے لیے

Couchbase سرور ایک تقسیم شدہ، ملٹی ماڈل NoSQL ڈیٹا بیس ہے جو انٹرایکٹو ایپلی کیشنز کے لیے بنایا گیا ہے جو کسی بھی پیمانے پر مسلسل کم تاخیر کی کارکردگی کا مطالبہ کرتا ہے۔ ڈیٹا بیس کے برعکس جو تقسیم شدہ خصوصیات کو بعد میں سوچتے ہیں، Couchbase کو اپنے آغاز سے ہی مشترکہ کچھ بھی نہیں، ہم مرتبہ ٹوپولوجی کے ارد گرد تعمیر کیا گیا تھا جہاں ہر نوڈ برابر ہوتا ہے اورvBucketsنامی ڈیٹرمنسٹک ہیشنگ میکانزم کا استعمال کرتے ہوئے ڈیٹا کو کلسٹر میں خود بخود شارڈ کیا جاتا ہے۔ یہ آرکیٹیکچرل انتخاب ڈیٹا لیئر میں ناکامی کے ایک پوائنٹ کو ختم کرتا ہے اور ایپلیکیشن تبدیلیوں کے بغیر افقی اسکیلنگ کو قابل بناتا ہے۔

جو چیز Couchbase کو اعلی دستیابی کے منظر نامے میں الگ کرتی ہے وہ ہے اس کاکراس ڈیٹا سینٹر ریپلیکیشن (XDCR)— ایک بلٹ ان، غیر مطابقت پذیر ریپلیکیشن انجن جو جغرافیائی طور پر تقسیم شدہ کلسٹرز کے درمیان تغیرات کو مسلسل جاری رکھتا ہے۔ خودکار فیل اوور، ریک/زون بیداری، اور مربوط خدمات (ڈیٹا، انڈیکس، سوال، تلاش، تجزیات، اور ایونٹنگ) کے بھرپور سیٹ کے ساتھ مل کر، Couchbase ایک متحد پلیٹ فارم فراہم کرتا ہے جو جدید ایپلی کیشنز کے لیے آپریشنل ڈیٹا بیس اور تجزیاتی انجن دونوں کے طور پر کام کر سکتا ہے۔

اس جامع گائیڈ میں، ہم اعلیٰ دستیابی پروڈکشن ماحول میں Couchbase سرور کو چلانے کے ہر پہلو کو تلاش کریں گے: اندرونی فن تعمیر جو HA کو ممکن بناتا ہے، کثیر خطوں کی تعیناتیوں کے لیے XDCR کنفیگریشن، Kubernetes کے لیے Couchbase خود مختار آپریٹر، کلاؤڈ-مخصوص تعیناتی، XPRX5 پیٹرن، XPRX5 کے لیے کلاؤڈ مخصوص GCP GKE، رینچر اور لانگ ہارن کے ساتھ ننگی دھاتی k3s تعیناتیاں، بیک اپ اور بحالی کی حکمت عملی، N1QL استفسار کی ٹیوننگ، سیکیورٹی سخت، نگرانی، اور Couchbase موبائل کناروں کی تعیناتیوں کے لیے Sync Gateway کے ساتھ۔ آخر تک، آپ کو کسی بھی انفراسٹرکچر پر پروڈکشن گریڈ Couchbase کلسٹرز کو تعینات اور چلانے کے لیے قابل عمل معلومات حاصل ہوں گی۔

Couchbase سرور آرکیٹیکچر: سروسز، vBuckets، اور خودکار شارڈنگ

اعلی دستیابی کے لیے تعینات کرنے سے پہلے Couchbase کے اندرونی فن تعمیر کو سمجھنا بہت ضروری ہے۔ Couchbase ایکملٹی ڈائمینشنل اسکیلنگ (MDS)فن تعمیر کا استعمال کرتا ہے جہاں مختلف خدمات کو آزادانہ طور پر تعینات کیا جا سکتا ہے اور کلسٹر نوڈس میں اسکیل کیا جا سکتا ہے۔ اس سے آپریٹرز کو وسائل کی تقسیم اور کارکردگی کی تنہائی پر عمدہ کنٹرول ملتا ہے۔

چھ بنیادی خدمات

Couchbase سرور چھ مربوط خدمات فراہم کرتا ہے، ہر ایک ایک الگ کام کے بوجھ کی قسم کو سنبھالتا ہے:

  • ڈیٹا سروس (KV)— بنیادی کلیدی قدر کا انجن جو میموری کے پہلے فن تعمیر پر بنایا گیا ہے۔ یہ CRUD آپریشنز کو ہینڈل کرتا ہے، vBucket کی تقسیم کا انتظام کرتا ہے، اور استقامت کی پرت کے طور پر کام کرتا ہے۔ ڈیٹا میموری میں محفوظ کیا جاتا ہے (منظم کیشے) اور غیر مطابقت پذیر طور پر ڈسک پر برقرار رہتا ہے۔ یہ سروس ہر کلسٹر میں کم از کم ایک نوڈ پر چلنی چاہیے۔
  • انڈیکس سروس (GSI)— عالمی ثانوی اشاریہ جات کو برقرار رکھتا ہے جو N1QL سوالات کو سپورٹ کرتے ہیں۔ اشاریہ جات کو ڈیٹا سے علیحدہ طور پر محفوظ کیا جاتا ہے، جس سے آزاد پیمانے کی اجازت ہوتی ہے۔ معیاری اور میموری سے بہتر انڈیکس اسٹوریج موڈ کو سپورٹ کرتا ہے۔
  • Query Service (N1QL)— کلسٹر کے خلاف N1QL (SQL++ برائے JSON) سوالات کو انجام دیتا ہے۔ ڈیزائن کے لحاظ سے بے وطن، افقی طور پر اسکیل کرنا آسان بناتا ہے۔ سوالات کی منصوبہ بندی اور عمل درآمد کے لیے ڈیٹا اور انڈیکس خدمات کے ساتھ کوآرڈینیٹ کرتا ہے۔
  • سرچ سروس (FTS)— Bleve سرچ انجن کے ذریعے طاقت یافتہ مکمل متن تلاش کرنے کی صلاحیتیں فراہم کرتا ہے۔ مبہم مماثلت، جغرافیائی استفسارات، پہلوؤں کی تلاش، اور حسب ضرورت تجزیہ کاروں کو سپورٹ کرتا ہے۔ اشاریہ جات کو تقسیم کیا جاتا ہے اور تلاش کے نوڈس میں نقل کیا جاتا ہے۔
  • Analytics سروس (CBAS)— Apache Asterix پر مبنی متوازی پروسیسنگ انجن کا استعمال کرتے ہوئے پیچیدہ تجزیاتی سوالات چلاتا ہے۔ ڈیٹا کی اپنی کاپی پر کام کرتا ہے، اس بات کو یقینی بناتے ہوئے کہ تجزیاتی کام کا بوجھ کبھی بھی آپریشنل لیٹنسی کو متاثر نہیں کرتا ہے۔
  • ایونٹنگ سروس— ڈیٹا میوٹیشن کے جواب میں سرور سائیڈ JavaScript فنکشنز کو انجام دیتا ہے۔ بیرونی انفراسٹرکچر کے بغیر ریئل ٹائم ڈیٹا کی افزودگی، تبدیلیاں، کاسکیڈ ڈیلیٹس، اور انٹیگریشن ٹرگرز کو قابل بناتا ہے۔
Couchbase کلسٹر آرکیٹیکچر & سروس کی تقسیمCouchbase کلسٹر (آٹو فیل اوور فعال، 3 سیکنڈ کا پتہ لگانا)نوڈ 1 (10.0.1.10)ڈیٹا سروس (KV)vBuckets 0-341 | 256MB کیشےانڈیکس سروس (GSI)استفسار سروس (N1QL)vBucket Map (فعال)0-341 فعال | 342-682 نقلڈسک پر خودکار طور پر برقرار رہنا (async)نوڈ 2 (10.0.1.11)ڈیٹا سروس (KV)vBuckets 342-682 | 256MB کیشےسرچ سروس (FTS)تجزیاتی سروس (CBAS)vBucket Map (فعال)342-682 فعال | 683-1023 نقلDCP سٹریم کو Analyticsپرنوڈ 3 (10.0.1.12)ڈیٹا سروس (KV)vBuckets 683-1023 | 256MB کیشےایونٹنگ سروسQuery Service (N1QL)vBucket Map (فعال)683-1023 فعال | 0-341 نقلایونٹنگ DCP صارفآٹو فیل اوور مینیجردل کی دھڑکن کی نگرانی | 3s کا پتہ لگانا | vBucket پروموشن | زیادہ سے زیادہ 3 ترتیب وار فیل اوورڈیٹا (KV)Index/Queryتلاش/تجزیہ/ایونٹنگانٹرا کلسٹر نقلدل کی دھڑکن

vBucket کی تقسیم اور خودکار شارڈنگ

Couchbase1024 vBuckets(ورچوئل بکٹس) کا استعمال کرتے ہوئے کلسٹر میں ڈیٹا تقسیم کرتا ہے۔ دستاویز کلید ماڈیولو 1024 کے CRC32 ہیش کا استعمال کرتے ہوئے ہر دستاویز کو vBucket میں میپ کیا جاتا ہے۔ کلسٹر میپ — ہر نوڈ کے ذریعے برقرار رکھا جاتا ہے اور ہر SDK کلائنٹ کے ذریعے کیش کیا جاتا ہے — ہر vBucket کو ایک مخصوص نوڈ پر نقشہ بناتا ہے۔ اس ڈیٹرمنسٹک میپنگ کا مطلب ہے کہ کلائنٹس کو ہمیشہ یہ معلوم ہوتا ہے کہ کون سا نوڈ کسی بھی دستاویز کو رکھتا ہے، جس سے سنگل ہاپ پڑھنے اور لکھنے کو سب ملی سیکنڈ لیٹینسی کے ساتھ قابل بناتا ہے۔

جب نوڈز کو شامل یا ہٹا دیا جاتا ہے، Couchbase خود بخود vBuckets کوری بیلنسنامی عمل کے ذریعے دوبارہ تقسیم کرتا ہے۔ ری بیلنس کے دوران، کلسٹر مکمل طور پر آپریشنل رہتے ہوئے نوڈس کے درمیان vBuckets کو منتقل کرتا ہے۔ ری بیلنس کو احتیاط سے ترتیب دیا گیا ہے تاکہ ہر وقت ریپلیکس کی ترتیب شدہ تعداد کو برقرار رکھا جا سکے، اور کلائنٹس کو کلسٹر میپ اپ ڈیٹس کے ذریعے بغیر کسی رکاوٹ کے نئے vBucket مقامات پر بھیج دیا جاتا ہے۔

انٹرا کلسٹر ریپلیکیشن اور آٹو فیل اوور

ہر vBucket میں ایکفعالکاپی اور تین تکریپلیکاکاپیاں مختلف نوڈس میں تقسیم ہوتی ہیں۔ جب کوئی کلائنٹ کوئی دستاویز لکھتا ہے، تو تحریر ذمہ دار نوڈ پر فعال vBucket میں جاتی ہے۔ ڈیٹا سروس اس کے بعد اندرونیDCP (ڈیٹا بیس چینج پروٹوکول)سٹریم کے ذریعے دوسرے نوڈس پر vBuckets کی نقل میں تبدیلی کو نقل کرتی ہے۔ پہلے سے طے شدہ طور پر، Couchbase ایک نقل تیار کرتا ہے، لیکن پیداوار HA کی تعیناتیوں کے لیے، دو نقلیں تجویز کی جاتی ہیں:

# Configure bucket with 2 replicas via CLI
/opt/couchbase/bin/couchbase-cli bucket-create \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --bucket production-data \
  --bucket-type couchbase \
  --bucket-ramsize 4096 \
  --bucket-replica 2 \
  --bucket-priority high \
  --bucket-eviction-policy valueOnly \
  --enable-flush 0 \
  --compression-mode active \
  --max-ttl 0 \
  --durability-min-level majorityAndPersistActive

آٹو فیل اوورCouchbase کا خود کار طریقے سے پتہ لگانے اور نوڈ کی ناکامیوں سے بازیافت کرنے کا طریقہ کار ہے۔ جب کوئی نوڈ غیر جوابدہ ہو جاتا ہے، تو کلسٹر آرکسٹریٹر قابل ترتیب ٹائم آؤٹ کا انتظار کرتا ہے (کم از کم 5 سیکنڈ، پروڈکشن کے لیے تجویز کردہ 30 سیکنڈ)، پھر زندہ رہنے والے نوڈس پر ریپلیکا vBuckets کو فعال حالت میں فروغ دیتا ہے۔ یہ کسی بھی ایپلیکیشن سائیڈ مداخلت کے بغیر ہوتا ہے — SDK کلائنٹس کو ایک اپڈیٹڈ کلسٹر میپ ملتا ہے اور فوری طور پر نئے فعال vBuckets کے لیے درخواستیں بھیج دیتے ہیں۔

# Configure auto-failover settings
/opt/couchbase/bin/couchbase-cli setting-autofailover \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --enable-auto-failover 1 \
  --auto-failover-timeout 30 \
  --max-failovers 3 \
  --enable-failover-of-server-groups 1 \
  --failover-on-data-disk-issues 1 \
  --failover-data-disk-period 120 \
  --can-abort-rebalance 1

کلیدی آٹو فیل اوور پیرامیٹرز:

  • آٹو فیل اوور ٹائم آؤٹ— فیل اوور کو متحرک کرنے سے پہلے انتظار کرنے کے لیے سیکنڈ۔ کم قدریں ڈاؤن ٹائم کو کم کرتی ہیں لیکن غلط مثبت خطرے میں اضافہ کرتی ہیں۔ 30 سیکنڈ تجویز کردہ پیداوار کی ترتیب ہے۔
  • max-failovers— دستی مداخلت کی ضرورت سے پہلے ترتیب وار آٹو فیل اوور کی زیادہ سے زیادہ تعداد۔ 5 نوڈ کلسٹر کے لیے 3 پر سیٹ کریں (کورم برقرار رکھنے کے لیے)۔
  • enable-failover-of-server-groups— پورے سرور گروپ (ریک/زون) کے فیل اوور کو قابل بناتا ہے، جو زون سے آگاہی کی تعیناتیوں کے لیے اہم ہے۔
  • failover-on-data-disk-issues— فیل اوور کو متحرک کرتا ہے جب ڈیٹا سروس مسلسل ڈسک I/O کی خرابیوں کا پتہ لگاتی ہے۔

XDCR: کراس ڈیٹا سینٹر کی نقل

XDCR Couchbase کی فلیگ شپ ملٹی ریجن ریپلیکیشن ٹیکنالوجی ہے۔ روایتی RDBMS سسٹمز میں پائے جانے والے ڈیٹا بیس کی سطح کی نقل کے برعکس، XDCRبالٹی لیولپر کام کرتا ہے اور آزاد Couchbase کلسٹرز کے درمیان انفرادی دستاویز کی تبدیلیوں کو چلاتا ہے۔ ہر کلسٹر مکمل طور پر خود مختار رہتا ہے - یہ آزادانہ طور پر پڑھنے اور لکھنے کو قبول کر سکتا ہے، XDCR کو ایکٹیو ایکٹیو ملٹی ریجن کی تعیناتیوں کے لیے مثالی بناتا ہے جہاں صارفین کو کسی بھی جغرافیہ سے کم تاخیر تک رسائی کی ضرورت ہوتی ہے۔

یون ڈائریکشنل بمقابلہ دو طرفہ XDCR

Unidirectional XDCRاتپریورتنوں کو ماخذ کلسٹر سے ایک سمت میں ٹارگٹ کلسٹر میں نقل کرتا ہے۔ یہ ڈیزاسٹر ریکوری کے منظرناموں، دور دراز علاقوں میں نقلیں پڑھنے، یا آپریشنل کلسٹر سے اینالیٹکس کلسٹر تک ڈیٹا فیڈ کرنے کے لیے موزوں ہے۔

دو طرفہ XDCRدو کلسٹروں کے درمیان دونوں سمتوں میں نقل کے لنکس بناتا ہے، فعال فعال تعیناتیوں کو فعال کرتا ہے جہاں دونوں کلسٹر رائٹ کو قبول کرتے ہیں۔ یہ سب سے طاقتور کنفیگریشن ہے لیکن تنازعات کے حل کی محتاط منصوبہ بندی کی ضرورت ہے۔

XDCR ملٹی ریجن دو طرفہ نقلUS-EAST (AWS EKS)کلسٹر: cb-us-east5 نوڈس | ڈیٹا+انڈیکس+استفساربالٹی: ایپبالٹی: صارفینتنازعات کا حل: LWW (ٹائم اسٹیمپ)XDCR: کمپریشن آن | TLS 1.3لکھتا ہے: ~15k ops/secEU-WEST (Azure AKS)کلسٹر: cb-eu-west5 نوڈس | ڈیٹا+انڈیکس+استفساربالٹی: ایپبالٹی: صارفینتنازعات کا حل: LWW (ٹائم اسٹیمپ)XDCR: کمپریشن آن | TLS 1.3لکھتا ہے: ~12k ops/secAP-SOUTH (GCP GKE)کلسٹر: cb-ap-south3 نوڈس | ڈیٹا+انڈیکس+استفساربالٹی: ایپبالٹی: صارفینتنازعات کا حل: LWW (ٹائم اسٹیمپ)XDCR: کمپریشن آن | TLS 1.3لکھتا ہے: ~8k ops/secXDCRXDCRXDCR (دو طرفہ)تنازعات کے حل کی حکمت عملیLWW (ٹائم اسٹیمپ کے ذریعہ آخری تحریر جیت) | ترتیب نمبر | ضم فنکشنز (انٹرپرائز)کے ذریعے اپنی مرضی کے مطابق تنازعات کا حلXDCR فارورڈXDCR ریورسکراس ریجن لنکAWSAzureGCP

XDCR نقل

ترتیب دے رہا ہے۔

XDCR کو ترتیب دینے میں ایک ریموٹ کلسٹر حوالہ بنانا اور پھر بالٹی کی سطح پر نقل کے لنکس کی وضاحت کرنا شامل ہے۔ ذیل میں CLI کمانڈز اور REST API مکمل دو طرفہ سیٹ اپ کے لیے کالز ہیں:

# Step 1: Create remote cluster reference on the US-EAST cluster
/opt/couchbase/bin/couchbase-cli xdcr-setup \
  --cluster cb-us-east.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name eu-west-cluster \
  --xdcr-hostname cb-eu-west.example.com:8091 \
  --xdcr-username Administrator \
  --xdcr-password password \
  --xdcr-demand-encryption 1 \
  --xdcr-encryption-type full \
  --xdcr-certificate /path/to/eu-west-ca.pem

# Step 2: Create replication from US-EAST to EU-WEST for the 'app' bucket
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-us-east.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name eu-west-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app \
  --xdcr-replication-mode xmem \
  --enable-compression 1 \
  --filter-expression "" \
  --priority high \
  --network-usage-limit 0

# Step 3: Create the reverse replication on EU-WEST cluster (bidirectional)
/opt/couchbase/bin/couchbase-cli xdcr-setup \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name us-east-cluster \
  --xdcr-hostname cb-us-east.example.com:8091 \
  --xdcr-username Administrator \
  --xdcr-password password \
  --xdcr-demand-encryption 1 \
  --xdcr-encryption-type full \
  --xdcr-certificate /path/to/us-east-ca.pem

/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name us-east-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app \
  --xdcr-replication-mode xmem \
  --enable-compression 1

تنازعات کے حل کی حکمت عملی

دو طرفہ XDCR میں، ایک ہی دستاویز کو مختلف کلسٹرز پر بیک وقت تبدیل کیا جا سکتا ہے، جس سے تنازعات پیدا ہوتے ہیں۔ Couchbase تنازعات کے حل کی متعدد حکمت عملی فراہم کرتا ہے:

  • ٹائم اسٹیمپ پر مبنی (LWW — آخری تحریر جیت)— حالیہ ٹائم اسٹیمپ جیت کے ساتھ تبدیلی۔ یہ ڈیفالٹ ہے اور زیادہ تر استعمال کے معاملات میں اچھی طرح کام کرتا ہے۔ تمام کلسٹرز میں NTP مطابقت پذیری کی ضرورت ہے (5 سیکنڈ کے اندر اندر)۔ بالٹی بنانے کے وقت پر سیٹ کریں اور بعد میں تبدیل نہیں کیا جا سکتا۔
  • تسلسل نمبر پر مبنی— فاتح کا تعین کرنے کے لیے اندرونی ترتیب نمبر (نظرثانی ID) کا استعمال کرتا ہے۔ زیادہ نظرثانی کی گنتی کے ساتھ تبدیلی جیت جاتی ہے۔ مفید ہے جب ٹائم اسٹیمپ کی مطابقت پذیری ناقابل اعتبار ہو۔
  • کسٹم کنفلکٹ ریزولوشن (انٹرپرائز)— Couchbase انٹرپرائز ایڈیشن حسب ضرورت انضمام کے فنکشنز کو سپورٹ کرتا ہے جو کہ ایپلیکیشن کی مخصوص منطق کے ساتھ تنازعات کو حل کرنے کے لیے سرور سائیڈ JavaScript کو چلاتے ہیں۔ یہ مختلف علاقوں سے شاپنگ کارٹ آئٹمز کو ضم کرنے یا ڈومین کے لیے مخصوص تنازعات کے حل کے قوانین کو لاگو کرنے جیسے منظرناموں کو قابل بناتا ہے۔
# Create a bucket with timestamp-based conflict resolution
curl -X POST http://localhost:8091/pools/default/buckets \
  -u Administrator:password \
  -d name=app \
  -d ramQuota=4096 \
  -d replicaNumber=2 \
  -d bucketType=couchbase \
  -d conflictResolutionType=lww \
  -d compressionMode=active \
  -d durabilityMinLevel=majorityAndPersistActive

# XDCR advanced settings via REST API
curl -X POST http://localhost:8091/settings/replications/<replication-id> \
  -u Administrator:password \
  -d optimisticReplicationThreshold=256 \
  -d sourceNozzlePerNode=4 \
  -d targetNozzlePerNode=4 \
  -d checkpointInterval=600 \
  -d batchCount=500 \
  -d batchSize=2048 \
  -d failureRestartInterval=10 \
  -d docBatchSizeKb=2048 \
  -d networkUsageLimit=0 \
  -d priority=High

XDCR فلٹرنگ

XDCR فلٹرنگ کو سپورٹ کرتا ہے تاکہ آپ دستاویزات کے صرف ذیلی سیٹ کو نقل کر سکیں۔ فلٹرز دستاویز کی کلیدوں کے خلاف باقاعدہ اظہار کا استعمال کرتے ہیں اور دستاویز کی میعاد ختم ہونے یا حذف کرنے کی بنیاد پر بھی فلٹر کر سکتے ہیں:

# Replicate only documents with keys starting with 'user::'
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name remote-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app-users \
  --filter-expression "^user::" \
  --filter-skip-restream 0

# Replicate documents matching a complex pattern
# (orders from 2026 with specific type)
--filter-expression "REGEXP_CONTAINS(META().id, '^order::2026') AND type='premium'"

Couchbase Kubernetes

کے لیے خود مختار آپریٹر

Couchbase خود مختار آپریٹر (CAO)ایک انٹرپرائز گریڈ Kubernetes آپریٹر ہے جو Couchbase سرور کلسٹرز کی تعیناتی، انتظام، اسکیلنگ، اور ریکوری کو خودکار کرتا ہے۔ سادہ StatefulSet کی تعیناتیوں کے برعکس، خود مختار آپریٹر Couchbase کی اندرونی ٹوپولوجی کو سمجھتا ہے - یہ ری بیلنس آپریشنز کا انتظام کرتا ہے، رولنگ اپ گریڈ کو مربوط کرتا ہے، سرور گروپ کی آگاہی کو سنبھالتا ہے، اور Couchbase پوڈز کی بہترین جگہ کو یقینی بنانے کے لیے Kubernetes شیڈولنگ پرائمیٹوز کے ساتھ مربوط ہوتا ہے۔

KubernetesپرCouchbase خود مختار آپریٹرCouchbase خود مختار آپریٹرگھڑیاں CouchbaseCluster CRD |کو ملاتا ہے۔Couchbase کلسٹر CRDمطلوبہ ریاست کا اعلانTLS رازسرٹ مینیجرکے ذریعے خودکار گردشسرور گروپ: zone-a (rack-1)StatefulSet: cb-prod-data-zacb-prod-0000ڈیٹا + انڈیکس4 CPU | 16GiPVC: 100Gi gp3cb-prod-0001استفسار + تلاش4 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP SvcAnti-affinity: زون-a نوڈس صرفسرور گروپ: zone-b (rack-2)StatefulSet: cb-prod-data-zbcb-prod-0002ڈیٹا + انڈیکس4 CPU | 16GiPVC: 100Gi gp3cb-prod-0003استفسار + تلاش4 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP Svcاینٹی ایفینٹی: زون-b نوڈس صرفسرور گروپ: zone-c (rack-3)StatefulSet: cb-prod-data-zccb-prod-0004ڈیٹا + تجزیات8 CPU | 32GiPVC: 200Gi gp3cb-prod-0005ایونٹنگ2 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP SvcAnti-affinity: zone-c نوڈس صرفایکسپوزڈ سروسزنوڈ پورٹ 8091 | SDK 11210 | N1QL 8093داخلہ کنٹرولرCRD کی توثیق کرتا ہے | Webhook TLSبیک اپ کنٹرولرcbbackupmgr | S3/GCS/Azureآپریٹرڈیٹا/انڈیکس/سوالتجزیات/ایونٹنگPVC اسٹوریجPod شیڈولنگسیکیورٹی/توثیق

CouchbaseCluster CRD تفصیلات

CouchbaseCluster CRD مرکزی کنفیگریشن ہے جو آپ کی Couchbase تعیناتی کی مطلوبہ حالت کا اعلان کرتی ہے۔ خود مختار آپریٹر اسے اسٹیٹفل سیٹس، سروسز، PVCs، سیکرٹس، اور RBAC وسائل میں ملا دیتا ہے۔ ذیل میں پروڈکشن کے لیے تیار CRD ہے:

apiVersion: couchbase.com/v2
kind: CouchbaseCluster
metadata:
  name: cb-production
  namespace: couchbase
spec:
  image: couchbase/server:7.6.1-enterprise
  antiAffinity: true
  platform: aws
  cluster:
    autoFailoverTimeout: 30s
    autoFailoverMaxCount: 3
    autoFailoverOnDataDiskIssues: true
    autoFailoverOnDataDiskIssuesTimePeriod: 120s
    autoFailoverServerGroup: true
    clusterName: cb-production
    dataServiceMemoryQuota: 8Gi
    indexServiceMemoryQuota: 4Gi
    searchServiceMemoryQuota: 2Gi
    analyticsServiceMemoryQuota: 4Gi
    eventingServiceMemoryQuota: 2Gi
    indexStorageSetting: memory_optimized
    autoCompaction:
      databaseFragmentationThreshold:
        percent: 30
        size: 1Gi
      viewFragmentationThreshold:
        percent: 30
        size: 1Gi
      parallelCompaction: false
      timeWindow:
        start: "02:00"
        end: "06:00"
        abortCompactionOutsideWindow: true
  security:
    adminSecret: cb-admin-credentials
    rbac:
      managed: true
      selector:
        matchLabels:
          cluster: cb-production
    ldap:
      hosts:
      - ldap.example.com
      port: 636
      encryption: TLS
  networking:
    tls:
      static:
        serverSecret: couchbase-server-tls
        operatorSecret: couchbase-operator-tls
    exposeAdminConsole: true
    adminConsoleServices:
    - data
    adminConsoleServiceType: NodePort
    exposedFeatures:
    - client
    - xdcr
    exposedFeatureServiceType: NodePort
  buckets:
    managed: true
    selector:
      matchLabels:
        cluster: cb-production
  servers:
  - name: data-zone-a
    size: 2
    services:
    - data
    - index
    serverGroups:
    - zone-a
    pod:
      metadata:
        labels:
          couchbase-service: data-index
        annotations:
          prometheus.io/scrape: "true"
          prometheus.io/port: "9091"
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1a
        tolerations:
        - key: couchbase
          operator: Equal
          value: "true"
          effect: NoSchedule
        resources:
          requests:
            cpu: "4"
            memory: 16Gi
          limits:
            cpu: "8"
            memory: 20Gi
    volumeMounts:
      default: couchbase-data
      data: couchbase-data
      index: couchbase-index
  - name: data-zone-b
    size: 2
    services:
    - data
    - index
    serverGroups:
    - zone-b
    pod:
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1b
        tolerations:
        - key: couchbase
          operator: Equal
          value: "true"
          effect: NoSchedule
        resources:
          requests:
            cpu: "4"
            memory: 16Gi
          limits:
            cpu: "8"
            memory: 20Gi
    volumeMounts:
      default: couchbase-data
      data: couchbase-data
      index: couchbase-index
  - name: query-search
    size: 2
    services:
    - query
    - search
    serverGroups:
    - zone-a
    - zone-b
    pod:
      spec:
        resources:
          requests:
            cpu: "4"
            memory: 8Gi
          limits:
            cpu: "8"
            memory: 12Gi
    volumeMounts:
      default: couchbase-default
  - name: analytics-eventing
    size: 2
    services:
    - analytics
    - eventing
    serverGroups:
    - zone-c
    pod:
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1c
        resources:
          requests:
            cpu: "8"
            memory: 32Gi
          limits:
            cpu: "16"
            memory: 40Gi
    volumeMounts:
      default: couchbase-analytics
      analytics:
      - couchbase-analytics
  serverGroups:
  - zone-a
  - zone-b
  - zone-c
  volumeClaimTemplates:
  - metadata:
      name: couchbase-data
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 100Gi
  - metadata:
      name: couchbase-index
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 50Gi
  - metadata:
      name: couchbase-default
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 20Gi
  - metadata:
      name: couchbase-analytics
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 200Gi

آپریٹر کی تنصیب بذریعہ Helm

# Add Couchbase Helm repository
helm repo add couchbase https://couchbase-partners.github.io/helm-charts/
helm repo update

# Install the Couchbase Autonomous Operator
helm install couchbase-operator couchbase/couchbase-operator \
  --namespace couchbase \
  --create-namespace \
  --set operator.image.repository=couchbase/operator \
  --set operator.image.tag=2.7.1 \
  --set admissionController.enabled=true

# Create the admin credentials secret
kubectl create secret generic cb-admin-credentials \
  --namespace couchbase \
  --from-literal=username=Administrator \
  --from-literal=password=$(openssl rand -base64 24)

# Deploy the CouchbaseCluster CRD
kubectl apply -f couchbase-cluster.yaml

# Verify deployment
kubectl get couchbaseclusters -n couchbase
kubectl get pods -n couchbase -l app=couchbase
kubectl get svc -n couchbase

سرور گروپس اور ریک/زون آگاہی

سرور گروپس اس بات کو یقینی بنانے کے لیے Couchbase کا طریقہ کار ہیں کہ فعال vBuckets اور ان کی نقلیں مختلف ناکامی والے ڈومینز (دستیاب زون، ریک، یا ڈیٹا سینٹرز) میں رکھی گئی ہیں۔ جب سرور گروپس کو کنفیگر کیا جاتا ہے، Couchbase اس بات کی ضمانت دیتا ہے کہ ایک ہی vBucket کے لیے کوئی ایکٹو اور ریپلیکا جوڑا ایک ہی سرور گروپ میں نہیں رہتا ہے۔ اس کا مطلب ہے کہ مکمل زون کی ناکامی کے نتیجے میں ڈیٹا ضائع نہیں ہوگا۔

خود مختار آپریٹر سرور گروپس کو Kubernetes نوڈ ٹوپولوجی لیبلز پر نقشہ بناتا ہے، خود بخود پوڈز کو درست زون میں شیڈول کرتا ہے۔ پوڈ مخالف وابستگی کے اصولوں کے ساتھ مل کر، یہ یقینی بناتا ہے کہ Couchbase پوڈز زیادہ سے زیادہ لچک کے لیے جسمانی بنیادی ڈھانچے میں تقسیم کیے گئے ہیں۔

AWS EKS تعیناتی

Amazon EKS کو بہترین Couchbase کارکردگی کے لیے مخصوص ترتیب درکار ہے۔ کلیدی تحفظات ہیں سٹوریج (تھروپوٹ کے لیے EBS gp3)، مثال کی قسمیں (ڈیٹا نوڈس کے لیے میموری سے بہتر r6i/r7i)، اور نیٹ ورکنگ (پوڈ لیول نیٹ ورکنگ کے لیے VPC CNI)۔

# EBS gp3 StorageClass optimized for Couchbase
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-gp3-couchbase
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  iops: "6000"
  throughput: "500"
  encrypted: "true"
  kmsKeyId: "arn:aws:kms:us-east-1:123456789:key/mrk-abcdef"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# Recommended EKS node groups for Couchbase
# Data nodes:     r6i.2xlarge (8 vCPU, 64 GiB) or r7i.2xlarge
# Index/Query:    m6i.2xlarge (8 vCPU, 32 GiB)
# Analytics:      r6i.4xlarge (16 vCPU, 128 GiB)
# Eventing:       m6i.xlarge  (4 vCPU, 16 GiB)

# EKS managed node group with taints for Couchbase
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: couchbase-eks
  region: us-east-1
managedNodeGroups:
- name: cb-data
  instanceType: r6i.2xlarge
  desiredCapacity: 4
  minSize: 4
  maxSize: 8
  volumeSize: 200
  volumeType: gp3
  volumeIOPS: 6000
  volumeThroughput: 500
  availabilityZones: ["us-east-1a", "us-east-1b"]
  labels:
    workload: couchbase-data
  taints:
  - key: couchbase
    value: "true"
    effect: NoSchedule
  iam:
    attachPolicyARNs:
    - arn:aws:iam::policy/AmazonEBSCSIDriverPolicy
- name: cb-query
  instanceType: m6i.2xlarge
  desiredCapacity: 2
  minSize: 2
  maxSize: 4
  availabilityZones: ["us-east-1a", "us-east-1b"]
  labels:
    workload: couchbase-query

Azure AKS تعیناتی

Azure AKS Couchbase کی I/O ڈیمانڈز کے لیے پریمیم SSD v2 یا Ultra Disk اور Azure پرائیویٹ لنک کو علاقوں کے درمیان محفوظ XDCR کنیکٹیویٹی کے لیے استعمال کرتا ہے۔

# Azure Premium SSD v2 StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azure-premium-couchbase
provisioner: disk.csi.azure.com
parameters:
  skuName: PremiumV2_LRS
  DiskIOPSReadWrite: "6000"
  DiskMBpsReadWrite: "500"
  cachingMode: None
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# Ultra Disk StorageClass for high-performance workloads
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azure-ultra-couchbase
provisioner: disk.csi.azure.com
parameters:
  skuName: UltraSSD_LRS
  DiskIOPSReadWrite: "10000"
  DiskMBpsReadWrite: "1000"
  cachingMode: None
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# AKS recommended VM sizes:
# Data nodes:      Standard_E8s_v5  (8 vCPU, 64 GiB)
# Index/Query:     Standard_D8s_v5  (8 vCPU, 32 GiB)
# Analytics:       Standard_E16s_v5 (16 vCPU, 128 GiB)

GCP GKE تعیناتی

Google Kubernetes انجن بیک اپ کے لیے Google Cloud Storage تک محفوظ رسائی کے لیے SSD پرسسٹنٹ ڈسک اور ورک لوڈ آئیڈینٹی کا استعمال کرتا ہے۔

# GKE SSD Persistent Disk StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd-couchbase
provisioner: pd.csi.storage.gke.io
parameters:
  type: pd-ssd
  provisioned-iops-on-create: "6000"
  provisioned-throughput-on-create: "500"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# GKE Hyperdisk Balanced for cost-effective performance
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: hyperdisk-couchbase
provisioner: pd.csi.storage.gke.io
parameters:
  type: hyperdisk-balanced
  provisioned-iops-on-create: "6000"
  provisioned-throughput-on-create: "500"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# GKE recommended machine types:
# Data nodes:      n2-highmem-8   (8 vCPU, 64 GB)
# Index/Query:     n2-standard-8  (8 vCPU, 32 GB)
# Analytics:       n2-highmem-16  (16 vCPU, 128 GB)

ننگی دھاتی k3s/رنچر لانگ ہارن

کے ساتھ

ان تنظیموں کے لیے جنہیں کلاؤڈ وینڈر لاک ان کے بغیر مکمل انفراسٹرکچر کنٹرول کی ضرورت ہے، رینچر مینجمنٹ اور لانگ ہارن ڈسٹری بیوٹڈ اسٹوریج کے ساتھ ننگی میٹل k3s Couchbase HA کے لیے ایک بہترین بنیاد فراہم کرتی ہے۔ یہ فن تعمیر ریگولیٹڈ صنعتوں، ایج کمپیوٹنگ کے منظرناموں اور لاگت سے متعلق حساس ماحول میں مقبول ہے۔

k3s / Rancher Bere Metal Couchbase تعیناتیرینچر مینجمنٹ کنسولنوڈ 1: k3s سرور (ریک-1)Couchbase ڈیٹا + انڈیکسcb-prod-0000 | 8 CPU، 64GBvBuckets 0-341 فعال | SDK پورٹ 11210Couchbase استفسار (N1QL)cb-prod-0001 | پورٹ 8093MetalLB VIPPrometheusلانگ ہارن والیوم/dev/sdb NVMe |نوڈس میں 3 نقلیںاینٹی وابستگی: کوئی رنگا ہوا Couchbase پوڈ نہیںنوڈ 2: k3s سرور (ریک-2)Couchbase ڈیٹا + انڈیکسcb-prod-0002 | 8 CPU، 64GBvBuckets 342-682 فعال | SDK پورٹ 11210Couchbase تلاش (FTS)cb-prod-0003 | پورٹ 8094MetalLB VIPGrafanaلانگ ہارن والیوم/dev/sdb NVMe | نوڈسپر 3 نقلیںاینٹی وابستگی: کوئی رنگا ہوا Couchbase پوڈزنہیںنوڈ 3: k3s ایجنٹ (ریک-3)Couchbase ڈیٹا + تجزیاتcb-prod-0004 | 16 CPU، 128GBvBuckets 683-1023 فعال | CBASCouchbase ایونٹنگcb-prod-0005 | DCP صارفMetalLB VIPCAO آپریٹرلانگ ہارن والیوم/dev/sdb NVMe | نوڈسپر 3 نقلیںاینٹی وابستگی: کوئی رنگا ہوا Couchbase پوڈزنہیںMetalLB LoadBlancerVIP: 192.168.1.200-210 | SDK + Web Console + XDCRبیک اپ: cbbackupmgr → MinIO S3روزانہ مکمل + گھنٹہ اضافہ | MinIO سرشار NVMeپرڈیٹا/انڈیکساستفسار/تلاشAnalytics/Eventing/MetalLBلانگ ہارنDCP نقلRancher Mgmt
# k3s bare metal setup for Couchbase

# Install k3s on master nodes (HA with embedded etcd)
curl -sfL https://get.k3s.io | sh -s - server \
  --cluster-init \
  --disable traefik \
  --disable servicelb \
  --write-kubeconfig-mode 644 \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-1

# Join additional server nodes
curl -sfL https://get.k3s.io | sh -s - server \
  --server https://master-1:6443 \
  --token $(cat /var/lib/rancher/k3s/server/node-token) \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-2

# Join agent nodes
curl -sfL https://get.k3s.io | sh -s - agent \
  --server https://master-1:6443 \
  --token $(cat /var/lib/rancher/k3s/server/node-token) \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-3

# Install Longhorn for distributed storage
helm repo add longhorn https://charts.longhorn.io
helm install longhorn longhorn/longhorn \
  --namespace longhorn-system \
  --create-namespace \
  --set defaultSettings.defaultReplicaCount=3 \
  --set defaultSettings.defaultDataPath=/mnt/longhorn \
  --set defaultSettings.guaranteedInstanceManagerCPU=12

# Create Longhorn StorageClass for Couchbase
kubectl apply -f - <

بیک اپ اور cbbackupmgr

کے ساتھ بحال کریں۔

Couchbasecbbackupmgrفراہم کرتا ہے، ایک انٹرپرائز بیک اپ ٹول جو اختیاری کمپریشن اور انکرپشن کے ساتھ مکمل، انکریمنٹل اور ڈیفرینشل بیک اپ کو سپورٹ کرتا ہے۔ پیداوار HA کی تعیناتیوں کے لیے، ایک مضبوط بیک اپ حکمت عملی Couchbase سطح کے بیک اپ کو کلاؤڈ اسنیپ شاٹ صلاحیتوں کے ساتھ جوڑتی ہے۔

بیک اپ کنفیگریشن

# Initialize a backup repository
/opt/couchbase/bin/cbbackupmgr config \
  --archive /backup/couchbase \
  --repo production-backup \
  --include-data production-data \
  --include-data user-profiles \
  --exclude-data _system

# Run a full backup
/opt/couchbase/bin/cbbackupmgr backup \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://localhost \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --threads 4 \
  --no-progress-bar

# Run an incremental backup (only mutations since last backup)
/opt/couchbase/bin/cbbackupmgr backup \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://localhost \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --threads 4

# List available backups
/opt/couchbase/bin/cbbackupmgr list \
  --archive /backup/couchbase \
  --repo production-backup

# Restore from a specific backup
/opt/couchbase/bin/cbbackupmgr restore \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://target-cluster:8091 \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --start 2026-04-12T00_00_00 \
  --end 2026-04-12T14_30_00 \
  --threads 4

آٹومیٹڈ بیک اپ اسکرپٹ برائے Kubernetes

#!/bin/bash
# couchbase-backup.sh — Automated backup to S3-compatible storage

set -euo pipefail

CLUSTER_HOST="cb-production-srv.couchbase.svc.cluster.local"
BACKUP_DIR="/backup/couchbase"
REPO_NAME="prod-$(date +%Y%m%d)"
S3_BUCKET="s3://couchbase-backups/production"
RETENTION_DAYS=14

log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*"; }

log "Starting Couchbase backup for cluster: $CLUSTER_HOST"

if [ ! -d "$BACKUP_DIR/$REPO_NAME" ]; then
  log "Configuring new backup repository: $REPO_NAME"
  cbbackupmgr config \
    --archive "$BACKUP_DIR" \
    --repo "$REPO_NAME" \
    --include-data production-data \
    --include-data user-profiles
fi

log "Running incremental backup..."
cbbackupmgr backup \
  --archive "$BACKUP_DIR" \
  --repo "$REPO_NAME" \
  --cluster "couchbase://$CLUSTER_HOST" \
  --username "$CB_USERNAME" \
  --password "$CB_PASSWORD" \
  --threads 4 \
  --no-progress-bar

BACKUP_SIZE=$(du -sh "$BACKUP_DIR/$REPO_NAME" | cut -f1)
log "Backup complete. Size: $BACKUP_SIZE"

log "Syncing to S3: $S3_BUCKET/$REPO_NAME"
aws s3 sync "$BACKUP_DIR/$REPO_NAME" "$S3_BUCKET/$REPO_NAME" \
  --storage-class STANDARD_IA \
  --sse aws:kms

log "Cleaning up backups older than $RETENTION_DAYS days..."
find "$BACKUP_DIR" -maxdepth 1 -name "prod-*" -mtime +"$RETENTION_DAYS" -exec rm -rf {} \;

log "Backup pipeline complete."

Couchbase بیک اپ CRD (آپریٹر کے زیر انتظام)

خود مختار آپریٹر خودکار بیک اپ مینجمنٹ کے لیے CRDs فراہم کرتا ہے:

apiVersion: couchbase.com/v2
kind: CouchbaseBackup
metadata:
  name: cb-daily-backup
  namespace: couchbase
spec:
  strategy: full_incremental
  full:
    schedule: "0 2 * * 0"   # Full backup every Sunday at 2 AM
  incremental:
    schedule: "0 2 * * 1-6" # Incremental Mon-Sat at 2 AM
  successfulJobsHistoryLimit: 5
  failedJobsHistoryLimit: 3
  backOffLimit: 3
  logRetention: 168h
  size: 100Gi
  s3bucket: s3://couchbase-backups/production
---
apiVersion: couchbase.com/v2
kind: CouchbaseBackupRestore
metadata:
  name: cb-restore-pitr
  namespace: couchbase
spec:
  backup: cb-daily-backup
  repo: "20260412"
  start:
    int: 1
  end:
    int: 5
  backOffLimit: 3

N1QL استفسار پرفارمنس ٹیوننگ

N1QL (JSON کے لیے SQL++) Couchbase کی استفسار کی زبان ہے۔ N1QL کارکردگی کو ٹیوننگ کرنے کے لیے استفسار کے منصوبہ ساز، انڈیکس ڈیزائن، اور سرور سائیڈ آپٹیمائزیشن کو سمجھنے کی ضرورت ہے۔

انڈیکس کی حکمت عملی: GSI اور FTS

-- Global Secondary Index (GSI) for common query patterns

-- Composite index for user lookups
CREATE INDEX idx_users_email_status
  ON `user-profiles`(email, status)
  WHERE type = 'user'
  WITH {"num_replica": 1, "defer_build": false};

-- Covering index (includes all queried fields to avoid fetch)
CREATE INDEX idx_orders_covering
  ON `production-data`(customer_id, order_date, total_amount, status)
  WHERE type = 'order'
  WITH {"num_replica": 1};

-- Array index for nested documents
CREATE INDEX idx_order_items
  ON `production-data`(DISTINCT ARRAY item.product_id FOR item IN items END)
  WHERE type = 'order'
  WITH {"num_replica": 1};

-- Partial index for active records only
CREATE INDEX idx_active_sessions
  ON `production-data`(user_id, created_at)
  WHERE type = 'session' AND status = 'active'
  WITH {"num_replica": 1};

-- Adaptive index for dynamic query patterns
CREATE INDEX idx_adaptive_products
  ON `production-data`(DISTINCT PAIRS(self))
  WHERE type = 'product'
  WITH {"num_replica": 1};

-- Check index status
SELECT name, state, num_docs_indexed, num_docs_pending
FROM system:indexes
WHERE keyspace_id = 'production-data';

-- Analyze query execution plan
EXPLAIN SELECT u.name, u.email, COUNT(o.id) AS order_count
FROM `user-profiles` u
JOIN `production-data` o ON o.customer_id = u.id
WHERE u.status = 'active' AND o.type = 'order'
GROUP BY u.name, u.email
ORDER BY order_count DESC
LIMIT 100;

-- Use ADVISE to get index recommendations
ADVISE SELECT * FROM `production-data`
WHERE type = 'order'
  AND customer_id = 'cust-12345'
  AND order_date BETWEEN '2026-01-01' AND '2026-04-12'
ORDER BY order_date DESC;

استفسار کی اصلاح کی تجاویز

-- Use PREPARE for frequently executed queries (cached plan)
PREPARE get_user_orders AS
SELECT o.id, o.order_date, o.total_amount, o.status
FROM `production-data` o
WHERE o.type = 'order'
  AND o.customer_id = $customer_id
ORDER BY o.order_date DESC
LIMIT $page_size OFFSET $page_offset;

-- Execute prepared statement
EXECUTE get_user_orders
USING {"customer_id": "cust-12345", "page_size": 20, "page_offset": 0};

-- Use META().id for direct key-value lookups (fastest path)
SELECT META().id, *
FROM `production-data`
USE KEYS ["order::2026-001", "order::2026-002", "order::2026-003"];

-- Correlated subquery with USE KEYS for joins
SELECT u.name,
  (SELECT o.id, o.total_amount
   FROM `production-data` o
   USE KEYS u.order_ids
   WHERE o.status = 'completed') AS completed_orders
FROM `user-profiles` u
WHERE META(u).id = 'user::12345';

-- Use INFER to understand document schema
INFER `production-data` WITH {"sample_size": 10000, "similarity_metric": 0.6};

میموری مینجمنٹ اور بالٹی کنفیگریشن

Couchbase کے میموری-پہلے فن تعمیر کا مطلب ہے کہ RAM مختص کرنا براہ راست کارکردگی کو متاثر کرتا ہے۔ ہر سروس کا اپنا میموری کوٹہ ہوتا ہے، اور بالٹیاں ڈیٹا سروس کوٹہ شیئر کرتی ہیں۔ مناسب سائزنگ کیشے کے اخراج کو روکتا ہے جو تاخیر کو کم کرتے ہیں۔

# Configure cluster-level memory quotas
/opt/couchbase/bin/couchbase-cli setting-cluster \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --cluster-ramsize 8192 \
  --cluster-index-ramsize 4096 \
  --cluster-fts-ramsize 2048 \
  --cluster-eventing-ramsize 2048 \
  --cluster-analytics-ramsize 4096

# Memory allocation guidelines:
# Data Service:      60% of available node RAM
# Index Service:     20% of available node RAM
# Search Service:    10% of available node RAM
# OS/overhead:       10% reserved

# Bucket memory sizing formula:
# Required RAM = (avg_doc_size * num_docs * 2.5) / num_data_nodes
# The 2.5 multiplier accounts for:
#   - Metadata overhead (~56 bytes per document)
#   - Internal fragmentation
#   - Replica copies in memory

# Create an optimized production bucket
curl -X POST http://localhost:8091/pools/default/buckets \
  -u Administrator:password \
  -d name=production-data \
  -d ramQuota=4096 \
  -d bucketType=couchbase \
  -d replicaNumber=2 \
  -d threadsNumber=8 \
  -d evictionPolicy=valueOnly \
  -d compressionMode=active \
  -d maxTTL=0 \
  -d conflictResolutionType=lww \
  -d flushEnabled=0 \
  -d durabilityMinLevel=majorityAndPersistActive

# Eviction policies:
# valueOnly  - Evicts document values but keeps metadata in RAM
#              Best for workloads where key access patterns are predictable
# fullEviction - Evicts both values and metadata
#                Best for very large datasets that exceed available RAM
# noEviction - (Ephemeral buckets only) Rejects writes when RAM is full
#              Best for caching use cases

TLS انکرپشن اور RBAC

Couchbase کو پیداوار میں محفوظ کرنے کے لیے ٹرانزٹ میں ڈیٹا کی خفیہ کاری (TLS)، عمدہ کردار پر مبنی رسائی کنٹرول (RBAC) اور آڈٹ لاگنگ کی ضرورت ہوتی ہے۔

# Enable TLS for all Couchbase services
/opt/couchbase/bin/couchbase-cli ssl-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set-node-certificate

# Enforce minimum TLS version
/opt/couchbase/bin/couchbase-cli setting-security \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --tls-min-version tlsv1.2 \
  --tls-honor-cipher-order 1 \
  --hsts-max-age 31536000 \
  --hsts-preload-enabled 1

# Create application-specific RBAC users
/opt/couchbase/bin/couchbase-cli user-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --rbac-username app-service \
  --rbac-password "$(openssl rand -base64 32)" \
  --rbac-name "Application Service Account" \
  --roles 'data_reader[production-data],data_writer[production-data],query_select[production-data],query_insert[production-data],query_update[production-data],query_delete[production-data]' \
  --auth-domain local

# Create a read-only analytics user
/opt/couchbase/bin/couchbase-cli user-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --rbac-username analytics-reader \
  --rbac-password "$(openssl rand -base64 32)" \
  --roles 'data_reader[production-data],query_select[production-data],analytics_reader[production-data]' \
  --auth-domain local

# Enable audit logging
/opt/couchbase/bin/couchbase-cli setting-audit \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --audit-enabled 1 \
  --audit-log-path /opt/couchbase/var/lib/couchbase/logs \
  --audit-log-rotate-interval 86400 \
  --audit-log-rotate-size 20971520

Kubernetes TLS سرٹیفکیٹ مینیجر

کے ساتھ
# Certificate for Couchbase server TLS
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: couchbase-server-tls
  namespace: couchbase
spec:
  secretName: couchbase-server-tls
  duration: 8760h   # 1 year
  renewBefore: 720h  # 30 days before expiry
  privateKey:
    algorithm: RSA
    size: 4096
  usages:
  - server auth
  - client auth
  dnsNames:
  - "*.cb-production.couchbase.svc.cluster.local"
  - "*.cb-production.couchbase.svc"
  - "cb-production-srv.couchbase.svc.cluster.local"
  - "localhost"
  issuerRef:
    name: couchbase-ca-issuer
    kind: ClusterIssuer

Prometheus ایکسپورٹر

کے ساتھ مانیٹرنگ

Couchbase اپنے REST API کے ذریعے بھرپور میٹرکس کو ظاہر کرتا ہے۔couchbase-exporterجامع نگرانی کے لیے ان کا Prometheus فارمیٹ میں ترجمہ کرتا ہے۔

# Deploy Couchbase Prometheus Exporter
apiVersion: apps/v1
kind: Deployment
metadata:
  name: couchbase-exporter
  namespace: couchbase
spec:
  replicas: 1
  selector:
    matchLabels:
      app: couchbase-exporter
  template:
    metadata:
      labels:
        app: couchbase-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9091"
    spec:
      containers:
      - name: exporter
        image: couchbase/exporter:1.0.9
        args:
        - --couchbase-address=cb-production-srv.couchbase.svc.cluster.local
        - --couchbase-port=8091
        - --couchbase-username=$(CB_USERNAME)
        - --couchbase-password=$(CB_PASSWORD)
        - --server-address=0.0.0.0:9091
        - --per-node-refresh=5
        env:
        - name: CB_USERNAME
          valueFrom:
            secretKeyRef:
              name: cb-admin-credentials
              key: username
        - name: CB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: cb-admin-credentials
              key: password
        ports:
        - containerPort: 9091
          name: metrics
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 256Mi
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: couchbase-monitor
  namespace: couchbase
spec:
  selector:
    matchLabels:
      app: couchbase-exporter
  endpoints:
  - port: metrics
    interval: 15s
    path: /metrics
کی نگرانی کے لیے

کلیدی Couchbase میٹرکس
  • cb_bucket_ops_per_sec— کل آپریشن فی سیکنڈ فی بالٹی۔ اپنے نارمل تھرو پٹ کو بیس لائن کریں اور بے ضابطگیوں پر الرٹ کریں۔
  • cb_bucket_mem_used_bytes— بالٹی میموری کا استعمال۔ بے دخلی کو روکنے کے لیے رام کوٹہ تک پہنچنے پر الرٹ۔
  • cb_bucket_cache_miss_ratio— درخواستوں کا تناسب جو کیشے سے محروم ہیں اور ڈسک کی بازیافت کی ضرورت ہے۔ بہترین کارکردگی کے لیے 2% سے نیچے رہنا چاہیے۔
  • cb_bucket_disk_queue_items— ڈسک لکھنا قطار کی گہرائی۔ بڑھتی ہوئی قطار اس بات کی نشاندہی کرتی ہے کہ ڈسک I/O تحریری تھروپپٹ کو برقرار نہیں رکھ سکتی۔
  • cb_xdcr_changes_left— XDCR نقل کے زیر التواء تغیرات کی تعداد۔ کراس ریجن ریپلیکیشن لیگ کی نشاندہی کرتا ہے۔
  • cb_xdcr_docs_written— دستاویزات کو XDCR کے ذریعے فی سیکنڈ نقل کیا گیا۔
  • cb_node_cpu_utilization_percent— فی نوڈ CPU استعمال۔ Couchbase کمپیکشن اور انڈیکسنگ کے لیے CPU-انتہائی ہے۔
  • cb_bucket_vbucket_active_num— فی نوڈ فعال vBuckets کی تعداد۔ ڈیٹا نوڈس میں بھی تقریباً ہونا چاہیے۔
  • cb_index_num_docs_pending— انڈیکس اپ ڈیٹ کے زیر التواء دستاویزات۔ انڈیکس بلڈ لیگ کی نشاندہی کرتا ہے۔
  • cb_n1ql_requests_per_sec— N1QL استفسار کا تھرو پٹ۔ اوسط تاخیر کے ساتھ مل کر، استفسار کی کارکردگی کے مسائل کی نشاندہی کرتا ہے۔

Prometheus الرٹنگ رولز

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: couchbase-alerts
  namespace: couchbase
spec:
  groups:
  - name: couchbase.rules
    rules:
    - alert: CouchbaseNodeDown
      expr: cb_node_healthy == 0
      for: 1m
      labels:
        severity: critical
      annotations:
        summary: "Couchbase node {{ $labels.node }} is unhealthy"
    - alert: CouchbaseHighCacheMissRate
      expr: cb_bucket_cache_miss_ratio > 0.05
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: "Cache miss rate {{ $value | humanizePercentage }} on bucket {{ $labels.bucket }}"
    - alert: CouchbaseXDCRLag
      expr: cb_xdcr_changes_left > 10000
      for: 10m
      labels:
        severity: warning
      annotations:
        summary: "XDCR replication lag: {{ $value }} pending mutations"
    - alert: CouchbaseDiskQueueGrowing
      expr: rate(cb_bucket_disk_queue_items[5m]) > 100
      for: 10m
      labels:
        severity: warning
      annotations:
        summary: "Disk queue growing on bucket {{ $labels.bucket }}"
    - alert: CouchbaseMemoryPressure
      expr: cb_bucket_mem_used_bytes / cb_bucket_mem_quota_bytes > 0.9
      for: 5m
      labels:
        severity: critical
      annotations:
        summary: "Memory usage at {{ $value | humanizePercentage }} for bucket {{ $labels.bucket }}"
HAکے لیے

SDK کنکشن سٹرنگ کنفیگریشن

Couchbase SDKs ٹوپولوجی سے آگاہ ہیں — وہ ایک اندرونی کلسٹر میپ اور روٹ آپریشنز کو براہ راست درست نوڈ تک برقرار رکھتے ہیں۔ مناسب SDK کنفیگریشن HA کے لیے اہم ہے، تیز رفتار فیل اوور کا پتہ لگانے اور عارضی غلطیوں پر خودکار دوبارہ کوشش کو یقینی بناتا ہے۔

// Node.js SDK configuration for HA
const couchbase = require('couchbase');

const clusterConnStr = 'couchbases://cb-node1.example.com,cb-node2.example.com,cb-node3.example.com';

const cluster = await couchbase.connect(clusterConnStr, {
  username: process.env.CB_USERNAME,
  password: process.env.CB_PASSWORD,
  timeouts: {
    kvTimeout: 2500,           // Key-value operation timeout (ms)
    kvDurableTimeout: 10000,   // Durable write timeout
    queryTimeout: 75000,       // N1QL query timeout
    searchTimeout: 75000,      // FTS search timeout
    analyticsTimeout: 75000,   // Analytics query timeout
    connectTimeout: 10000,     // Initial connection timeout
    managementTimeout: 75000   // Management API timeout
  },
  security: {
    trustStorePath: '/etc/couchbase/ca.pem'
  },
  transactions: {
    durabilityLevel: couchbase.DurabilityLevel.MajorityAndPersistToActive,
    timeout: 15000
  }
});

const bucket = cluster.bucket('production-data');
const collection = bucket.defaultCollection();

// Durable write with observe-based durability
await collection.upsert('order::2026-001', orderDocument, {
  durabilityLevel: couchbase.DurabilityLevel.MajorityAndPersistToActive,
  timeout: 10000
});

// Read with replica fallback for HA
try {
  const result = await collection.get('user::12345');
} catch (err) {
  if (err instanceof couchbase.errors.TimeoutError) {
    const replicaResult = await collection.getAnyReplica('user::12345');
  }
}
# Java SDK configuration for HA
import com.couchbase.client.java.*;
import com.couchbase.client.java.env.*;
import java.time.Duration;

ClusterEnvironment env = ClusterEnvironment.builder()
    .timeoutConfig(TimeoutConfig.builder()
        .kvTimeout(Duration.ofMillis(2500))
        .kvDurableTimeout(Duration.ofSeconds(10))
        .queryTimeout(Duration.ofSeconds(75))
        .connectTimeout(Duration.ofSeconds(10))
        .build())
    .ioConfig(IoConfig.builder()
        .numKvConnections(4)
        .enableMutationTokens(true)
        .enableDnsSrv(true)
        .build())
    .securityConfig(SecurityConfig.builder()
        .enableTls(true)
        .trustCertificate(Paths.get("/etc/couchbase/ca.pem"))
        .build())
    .build();

Cluster cluster = Cluster.connect(
    "couchbases://cb-node1.example.com,cb-node2.example.com",
    ClusterOptions.clusterOptions("username", "password")
        .environment(env)
);

Kubernetes سروس DNS برائے SDK کنکشن

# When using the Autonomous Operator, connect via the headless service:
# couchbase://cb-production-srv.couchbase.svc.cluster.local
#
# The operator creates these services:
# cb-production-srv      - Headless service for SDK auto-discovery
# cb-production-ui       - Web Console (port 8091/18091)
# cb-production-cloud    - External connectivity (NodePort/LoadBalancer)
#
# For external SDK access (outside Kubernetes), use:
# - NodePort with explicit node addresses
# - LoadBalancer with MetalLB (bare metal)
# - Ingress with TCP passthrough for port 11210 (SDK) and 11207 (SDK TLS)

Couchbase موبائل اور سنک گیٹ وے فار ایج ڈیپلائمنٹس

Couchbase موبائل Couchbase ایکو سسٹم کو ایج ڈیوائسز اور موبائل ایپلیکیشنز تک پھیلاتا ہے۔Couchbase LiteiOS، Android، اور IoT آلات پر سرایت کرتا ہے، جبکہSync GatewayCouchbase Lite اور Couchbase سرور کے درمیان مطابقت پذیری مڈل ویئر کے طور پر کام کرتا ہے۔

// Sync Gateway configuration for production
{
  "interface": ":4984",
  "adminInterface": "127.0.0.1:4985",
  "logging": {
    "console": {
      "log_level": "info",
      "log_keys": ["HTTP", "Sync", "Auth", "Changes"]
    }
  },
  "databases": {
    "mobile-app": {
      "server": "couchbases://cb-production-srv.couchbase.svc.cluster.local",
      "bucket": "production-data",
      "username": "sync-gateway",
      "password": "${SG_PASSWORD}",
      "enable_shared_bucket_access": true,
      "import_docs": true,
      "num_index_replicas": 1,
      "delta_sync": {
        "enabled": true,
        "rev_max_age_seconds": 86400
      },
      "cache": {
        "channel_cache": {
          "max_number": 50000,
          "compact_high_watermark_pct": 80,
          "compact_low_watermark_pct": 60
        },
        "rev_cache": {
          "size": 5000,
          "shard_count": 16
        }
      },
      "users": {
        "GUEST": {"disabled": true}
      },
      "sync": "function(doc, oldDoc) { if (doc.type === 'user-data') { channel(doc.channels); requireAccess(doc.channels); } else { channel('public'); } }"
    }
  }
}

# Deploy Sync Gateway on Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sync-gateway
  namespace: couchbase
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sync-gateway
  template:
    metadata:
      labels:
        app: sync-gateway
    spec:
      containers:
      - name: sync-gateway
        image: couchbase/sync-gateway:3.1.4-enterprise
        args: ["/etc/sync-gateway/config.json"]
        ports:
        - containerPort: 4984
          name: public
        - containerPort: 4985
          name: admin
        resources:
          requests:
            cpu: "2"
            memory: 4Gi
          limits:
            cpu: "4"
            memory: 8Gi
        volumeMounts:
        - name: config
          mountPath: /etc/sync-gateway
      volumes:
      - name: config
        configMap:
          name: sync-gateway-config

صلاحیت کی منصوبہ بندی اور سائز

Couchbase کارکردگی اور لاگت کی اصلاح کے لیے مناسب صلاحیت کی منصوبہ بندی ضروری ہے۔ مندرجہ ذیل جدول کام کے بوجھ کے درجے کی بنیاد پر سائز کے رہنما خطوط فراہم کرتا ہے:

ورک لوڈ ٹائرڈیٹا نوڈسانڈیکس/سوالRAM فی نوڈاسٹوریجتھرو پٹ
ترقی1 (تمام خدمات)شریک4 GB20 GB SSD<1k آپریشنز
چھوٹی پیداوار3 ڈیٹا2 Query+Index16 GB100 GB SSD10k ops/s
درمیانی پیداوار5 ڈیٹا3 Query+Index32 GB500 GB SSD50k ops/s
بڑی پیداوار7-10 ڈیٹا4+ Query+Index64 GB1 TB NVMe200k+ ops/s
انٹرپرائز / گلوبل10+ ڈیٹا (ملٹی ریجن)6+ Query+Index128 GB2+ TB NVMe500k+ ops/s

سائز سازی فارمولہ

# Data Service RAM sizing
# Required RAM per node = (num_documents * (doc_metadata_size + avg_value_size)) / num_data_nodes * (1 + num_replicas)
# doc_metadata_size = 56 bytes (fixed overhead per document)
# Include 25% headroom for fragmentation and growth

# Example: 100M documents, 1KB avg size, 3 data nodes, 1 replica
# RAM = (100,000,000 * (56 + 1024)) / 3 * 2 = ~72 GB per node
# With 25% headroom: ~90 GB per node

# Index Service RAM sizing (memory-optimized)
# RAM = total_index_size * 3 (for build/merge overhead)
# Use system:indexes to check current index sizes

# Disk sizing
# Disk = (num_documents * avg_doc_size * (1 + num_replicas)) * 3 (compaction headroom)
# Use SSD/NVMe with provisioned IOPS for predictable performance

ڈیزاسٹر ریکوری اور فیل اوور طریقہ کار

ایک جامع ڈیزاسٹر ریکوری پلان کاروبار کے تسلسل کو یقینی بناتا ہے جب انفراسٹرکچر کی ناکامیاں خودکار فیل اوور کے دائرہ سے تجاوز کر جاتی ہیں۔

سنگل نوڈ کی ناکامی (خودکار)

# Auto-failover handles single node failures automatically.
# Verify failover occurred:
/opt/couchbase/bin/couchbase-cli server-list \
  --cluster localhost:8091 \
  --username Administrator \
  --password password

# After replacing the failed node, add and rebalance:
/opt/couchbase/bin/couchbase-cli server-add \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-add new-node.example.com:8091 \
  --server-add-username Administrator \
  --server-add-password password \
  --services data,index

/opt/couchbase/bin/couchbase-cli rebalance \
  --cluster localhost:8091 \
  --username Administrator \
  --password password

مکمل کلسٹر ناکامی (دستی)

# Scenario: Primary region (US-EAST) completely lost

# Step 1: Verify XDCR target cluster (EU-WEST) has latest data
# Check XDCR replication status before failure
curl -s http://eu-west-node:8091/pools/default/remoteClusters \
  -u Administrator:password | jq .

# Step 2: Pause XDCR replications pointing to the failed cluster
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --pause \
  --xdcr-replicator <replication-id>

# Step 3: Update application connection strings to EU-WEST cluster
# (via DNS update, service mesh, or environment variable change)

# Step 4: Scale up EU-WEST cluster if needed to handle full production load
# In Kubernetes, update the CouchbaseCluster CRD:
kubectl patch couchbasecluster cb-eu-west -n couchbase --type merge \
  -p '{"spec":{"servers":[{"name":"data-zone-a","size":4}]}}'

# Step 5: After US-EAST cluster is restored, re-establish XDCR
# and perform a full resync from EU-WEST back to US-EAST

شاندار فیل اوور اور ریکوری

# Graceful failover (for maintenance, drains data before removal)
/opt/couchbase/bin/couchbase-cli failover \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-failover node-to-remove.example.com:8091

# Recovery (re-add the node after maintenance)
/opt/couchbase/bin/couchbase-cli recovery \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-recovery node-to-recover.example.com:8091 \
  --recovery-type delta

# Delta recovery re-synchronizes only the changed data,
# which is much faster than full recovery.
# Full recovery rebuilds the node from scratch.

# Rebalance to complete the recovery
/opt/couchbase/bin/couchbase-cli rebalance \
  --cluster localhost:8091 \
  --username Administrator \
  --password password
مکمل پیداوار کی تعیناتی کے لیے

Helm قدریں

ذیل میں Couchbase کو پیداواری ماحول میں خود مختار آپریٹر کے ساتھ تعینات کرنے کے لیے ایک جامع Helm ویلیوز فائل ہے:

# helm-values-production.yaml
couchbase-operator:
  operator:
    image:
      repository: couchbase/operator
      tag: 2.7.1
    resources:
      requests:
        cpu: 500m
        memory: 512Mi
      limits:
        cpu: "1"
        memory: 1Gi
  admissionController:
    enabled: true
    resources:
      requests:
        cpu: 100m
        memory: 128Mi

cluster:
  image: couchbase/server:7.6.1-enterprise
  antiAffinity: true
  autoFailoverTimeout: 30s
  autoFailoverMaxCount: 3
  autoFailoverOnDataDiskIssues: true
  autoFailoverServerGroup: true
  security:
    adminSecret: cb-admin-credentials
  networking:
    tls:
      static:
        serverSecret: couchbase-server-tls
        operatorSecret: couchbase-operator-tls
    exposeAdminConsole: true
    adminConsoleServiceType: NodePort
  buckets:
    managed: true
  servers:
    data:
      size: 4
      services:
      - data
      - index
      serverGroups:
      - zone-a
      - zone-b
      resources:
        requests:
          cpu: "4"
          memory: 16Gi
        limits:
          cpu: "8"
          memory: 20Gi
      volumeMounts:
        default: couchbase-data
        data: couchbase-data
        index: couchbase-index
    query:
      size: 2
      services:
      - query
      - search
      resources:
        requests:
          cpu: "4"
          memory: 8Gi
        limits:
          cpu: "8"
          memory: 12Gi
      volumeMounts:
        default: couchbase-default
    analytics:
      size: 2
      services:
      - analytics
      - eventing
      serverGroups:
      - zone-c
      resources:
        requests:
          cpu: "8"
          memory: 32Gi
        limits:
          cpu: "16"
          memory: 40Gi
      volumeMounts:
        default: couchbase-analytics
        analytics:
        - couchbase-analytics
  serverGroups:
  - zone-a
  - zone-b
  - zone-c
  volumeClaimTemplates:
  - metadata:
      name: couchbase-data
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 100Gi
  - metadata:
      name: couchbase-index
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 50Gi
  - metadata:
      name: couchbase-default
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 20Gi
  - metadata:
      name: couchbase-analytics
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 200Gi

نتیجہ

Couchbase سرور کا فن تعمیر—vBucket پر مبنی شارڈنگ، میموری-فرسٹ ڈیٹا تک رسائی، اور مربوط ملٹی ماڈل سروسز—کے ارد گرد بنایا گیا ہے — اعلی دستیابی پروڈکشن تعیناتیوں کے لیے ایک منفرد طور پر طاقتور بنیاد فراہم کرتا ہے۔ خودکار فیل اوور کے ساتھ انٹرا کلسٹر ریپلیکشن کا امتزاج اس بات کو یقینی بناتا ہے کہ سنگل نوڈ کی ناکامیوں کو شفاف طریقے سے ہینڈل کیا جائے، جبکہ XDCR عالمی ایپلی کیشنز کے لیے جغرافیائی علاقوں میں اس لچک کو بڑھاتا ہے۔

Couchbase خودمختار آپریٹر Kubernetes کے لیے پیچیدہ دستی آپریشنز کو اعلانیہ، خود شفا بخش تعیناتیوں میں تبدیل کرتا ہے۔ سرور گروپس ریک/زون کے بارے میں آگاہی فراہم کرتے ہیں، آپریٹر اسکیلنگ ایونٹس کے دوران توازن کی کارروائیوں کا انتظام کرتا ہے، اور مربوط بیک اپ CRDs ڈیزاسٹر ریکوری کی تیاری کو خودکار بناتا ہے۔

اس گائیڈ سے اہم نکات:

  • لیوریج ملٹی ڈائمینشنل اسکیلنگ— ڈیٹا، انڈیکس، استفسار، تلاش، تجزیات، اور ایونٹنگ سروسز کو آزاد اسکیلنگ اور وسائل کی تنہائی کے لیے وقف شدہ نوڈ پولز پر الگ کریں۔
  • ملٹی ریجن لچککے لیے XDCR کو کنفیگر کریں — ٹائم اسٹیمپ پر مبنی تنازعات کے حل کے ساتھ دو طرفہ XDCR AWS، Azure، اور GCP میں فعال-فعال تعیناتیوں کو قابل بناتا ہے۔ ہمیشہ NTP کی مطابقت پذیری کو یقینی بنائیں۔
  • زون کی آگاہی کے لیے سرور گروپس کا استعمال کریں— سرور گروپس کو دستیابی زونز یا ریک کے لیے نقشہ بنائیں اس بات کی ضمانت کے لیے کہ فعال اور ریپلیکا vBuckets مختلف ناکامی والے ڈومینز میں ہیں۔
  • سائز میموری احتیاط سے— Couchbase کی کارکردگی براہ راست اس بات سے منسلک ہے کہ ورکنگ سیٹ کا کتنا حصہ RAM میں فٹ بیٹھتا ہے۔ سائز سازی کے فارمولے استعمال کریں اور کیش مس ریشوز کی نگرانی کریں۔
  • جامع نگرانیکو نافذ کریں — Prometheus برآمد کنندہ کو پہلے دن سے تعینات کریں۔ XDCR ریپلیکیشن لیگ، کیش مس ریشو، ڈسک کی قطار کی گہرائی، اور نوڈ ہیلتھ آپ کے اہم اشارے ہیں۔
  • cbbackupmgrکے ساتھ خودکار بیک اپس — کلاؤڈ اسنیپ شاٹس کے ساتھ مکمل اور اضافی بیک اپ کو یکجا کریں۔ باقاعدگی سے بحالی کے طریقہ کار کی جانچ کریں۔
  • TLS اور RBACکے ساتھ محفوظ — نوڈ ٹو نوڈ اور کلائنٹ ٹو نوڈ TLS انکرپشن کو فعال کریں۔ ہر ایپلیکیشن سروس اکاؤنٹ کے لیے عمدہ RBAC رولز استعمال کریں۔
  • HAکے لیے SDKs ترتیب دیں — متعدد بوٹسٹریپ نوڈس استعمال کریں، مناسب ٹائم آؤٹ ترتیب دیں، ریپلیکا ریڈز کو فال بیک کے طور پر لاگو کریں، اور اہم ڈیٹا کے لیے پائیدار تحریروں کا فائدہ اٹھائیں۔
  • ڈیزاسٹر ریکوری کا منصوبہ— سنگل نوڈ، ملٹی نوڈ، اور مکمل کلسٹر ناکامی کے منظرناموں کے لیے فیل اوور کے طریقہ کار کی دستاویز اور مشق کریں۔ XDCR اسٹینڈ بائی کلسٹرز کو فروغ دینے کے لیے ہر وقت تیار رہنا چاہیے۔

اس جامع فاؤنڈیشن کے ساتھ، آپ Couchbase سرور کو کسی بھی بنیادی ڈھانچے میں اعلیٰ دستیابی کے پیداواری ماحول میں تعینات کرنے اور چلانے کے لیے لیس ہیں- AWS، Azure، اور GCP پر منظم Kubernetes سے لے کر Rancher کے زیر انتظام ننگے دھاتی k3s کلسٹرز تک۔ Kubernetes آرکیسٹریشن کے ساتھ Couchbase کے مقامی تقسیم شدہ فن تعمیر کا مجموعہ ایک ڈیٹا بیس پلیٹ فارم فراہم کرتا ہے جو جدید، عالمی سطح پر تقسیم شدہ ایپلی کیشنز کے تقاضوں کو پورا کرتا ہے۔