Ticketing سرور کی تعیناتی
ماحولیاتی متغیرات
سرور کی ترتیب مکمل طور پر ماحولیاتی متغیرات کے ذریعے کی جاتی ہے۔ کلیدیں بڑے/چھوٹے حروف سے آزاد ہیں، خالی قدر کو غیر ترتیب شدہ سمجھا جاتا ہے، اور flag طرز کی قدریں صرف 1/true/yes/on پر سچ ہوتی ہیں۔ Docker امیج scratch پر مبنی ہے، اس لیے ترتیب مکمل طور پر ماحولیاتی متغیرات کے ذریعے، بغیر کسی کنفیگ فائل کے، دی جاتی ہے۔
| ماحولیاتی متغیر | ڈیفالٹ | تفصیل |
|---|---|---|
PORT | 5225 | سنگل موڈ میں سننے کا پورٹ۔ کلسٹر موڈ میں نظر انداز — اس کی بجائے CLUSTER_SELF کا پورٹ استعمال ہوتا ہے |
SOCKET_BIND | 0.0.0.0 | سننے کا پتہ |
CLIENT_TOKENS | (کوئی نہیں) | کلائنٹ تصدیقی ٹوکنز کی کوما سے علیحدہ فہرست۔ اگر سیٹ نہ ہو تو خالی ٹوکن کی اجازت ہے |
CLUSTER_SELF | (کوئی نہیں) | اس نوڈ کا اعلان شدہ پتہ، host:port۔ اس کی موجودگی کلسٹر موڈ فعال کرتی ہے |
CLUSTER_PEERS | (کوئی نہیں) | ہر نوڈ کے اعلان شدہ پتوں کی کوما سے علیحدہ فہرست۔ بالکل 3 یا 5، ہر نوڈ پر ایک ہی ترتیب، self کو شامل ہونا لازم |
CLUSTER_TOKENS | (کوئی نہیں) | پیئر سے پیئر تصدیقی ٹوکنز کی کوما سے علیحدہ فہرست |
TLS_CERT / TLS_KEY | (کوئی نہیں) | سرٹیفکیٹ/پرائیویٹ کلید PEM فائلوں کے راستے — TLS فعال کرنے کے لیے دونوں کو ساتھ سیٹ کریں |
TLS_CA | (کوئی نہیں) | پیئر سرٹیفکیٹس کی تصدیق کے لیے CA — اگر سیٹ نہ ہو تو سسٹم ٹرسٹ اسٹور پر واپس جاتا ہے |
TLS_SKIP_VERIFY | false | پیئر سرٹیفکیٹ کی تصدیق چھوڑ دیں — صرف ٹیسٹ کے لیے |
DOCKER | false | کلسٹر موڈ میں اندرونی سننے کے پورٹس کو 5225/6225 پر مقرر کرتا ہے — سرکاری امیج میں پہلے سے سیٹ |
DEBUG | بلڈ پر منحصر | 1/true ڈیبگ لاگنگ فعال کرتا ہے |
مکمل اصولوں (پورٹ اخذ کرنا، اعلان شدہ پتے، بغیر تعطل ٹوکن کی تبدیلی وغیرہ) کے لیے ترتیب (ماحولیاتی متغیرات) دیکھیں۔
سنگل بمقابلہ کلسٹر
- سنگل (1 نوڈ):
CLUSTER_*کے بغیر، نوڈ اکیلا چلتا ہے۔ سب سے تیز، لیکن دوبارہ آغاز پر مختصر تعطل ہوتا ہے، اور حالت میموری میں ہے اس لیے دوبارہ آغاز پر ضائع ہو جاتی ہے (leaseحفاظتی جال ہے)۔ - کلسٹر (بلا تعطل): 3 یا 5 نوڈز۔ نوڈز Raft اتفاقِ رائے کے ذریعے ایک ہی لاک حالت میں شریک ہوتے ہیں — صرف قائد درخواستیں سنبھالتا ہے، اور ہر حالت کی تبدیلی صرف اکثریت کی کمٹ کے بعد ہی حتمی ہوتی ہے۔ اگر قائد ختم ہو جائے، تو 0.5-1 سیکنڈ میں نیا قائد منتخب ہوتا ہے، اور جب تک اکثریت زندہ ہے، لاک کی حالت اور سروس چلتی رہتی ہے۔ مکمل وضاحت کے لیے یہ کیسے کام کرتا ہے اور پروٹوکول (کلسٹر) دیکھیں۔
- ہر کلسٹر نوڈ کلائنٹ پورٹ کے علاوہ ایک Raft پورٹ (کلائنٹ پورٹ + 1000) پر بھی سنتا ہے — اپنے فائر وال میں دونوں پورٹس کھولیں۔
Kubernetes کلسٹر تعیناتیاں StatefulSet + headless Service استعمال کرتی ہیں۔ ہر pod کو ایک مستحکم DNS نام دیں (
ticketing-0.ticketing…،ticketing-1.ticketing…)، ان ناموں کوCLUSTER_PEERSمیں ڈالیں، اور ہر pod کاCLUSTER_SELFdownward API (metadata.name) کے ذریعے خودکار طور پر انجیکٹ کریں۔
بلا تعطل دوبارہ آغاز (رولنگ)
ایک بنیادی اصول ہے — اکثریت ہمیشہ زندہ رہنی چاہیے (3 میں سے ایک وقت میں زیادہ سے زیادہ 1 نیچے)۔
- پہلے فالوورز کو ایک ایک کر کے دوبارہ شروع کریں۔ جیسے ہی کوئی دوبارہ شروع کیا گیا نوڈ نقل یا اسنیپ شاٹ کے ذریعے پکڑ لے، اگلے پر جائیں۔
- آخر میں، قائد کو نیچے لے جائیں — 0.5-1 سیکنڈ میں ایک نیا منتخب ہو جاتا ہے، اور کلائنٹس شفاف طریقے سے منتقل ہو جاتے ہیں۔
- کسی بند کیے گئے نوڈ کو دوبارہ اوپر لانا اسے فالوور کے طور پر دوبارہ شامل کر دیتا ہے۔
تفصیلی مراحل کے لیے بلا تعطل دوبارہ آغاز (رولنگ) طریقہ کار دیکھیں۔
حوالہ
- امیج:
sarolab/ticketing· Github: saro-lab/ticketing - کلائنٹ (broker) کے ساتھ ہر نوڈ کا پتہ رجسٹر کریں تاکہ یہ خودکار طور پر failover کر سکے۔ زبان کے مخصوص استعمال کے لیے لائبریریز دیکھیں۔