أساسيات النشر
هذا الدليل يشرح كيفية نشر خوادم الكتابة والقراءة لـ Asset Core على عقدة واحدة مع تخزين دائم. إنه الأساس الذي يجب عليك التحقق منه قبل الانتقال إلى تكوينات أكثر تعقيدًا.
المتطلبات السابقة
تأكد من أنه يمكنك تشغيل كلا الخادمين مع تخزين دائم وأن لديك الأذونات اللازمة للكتابة إلى الدلائل المستهدفة. في الإنتاج، يجب أن تكون هذه الدلائل مدعومة ومراقبة.
- تم بناء ملفات Asset Core الثنائية (
cargo build --release) - دليل قابل للكتابة لسجل الالتزام، نقاط التفتيش، ورموز المصادقة
- المنافذ 8080 و 8081 متاحة (أو بدائل)
الخطوة 1 - إعداد الأدلة
إنشاء دلائل لحالة دائمة:
mkdir -p /var/lib/assetcore/{data,logs,auth/tokens}
سجل الالتزام، ونقاط التحقق، وملفات الرموز ستُخزن هنا. اعتبر هذا الدليل حرجًا من الناحية التشغيلية.
الخطوة 2 - تكوين خدمة الكتابة
أنشئ ملف تكوين write.toml:
[paths]
base_dir = "/var/lib/assetcore"
[server]
host = "0.0.0.0"
port = 8080
[commit_log]
path = "data/commit_log.log"
[commit_log_driver]
checkpoint_path = "data/write.checkpoint.json"
[namespaces]
catalog_backend = "sqlite"
catalog_path = "data/namespace_catalog.sqlite"
[auth]
directory = "auth/tokens"
الإعدادات الرئيسية:
| الإعدادات | الوصف |
|---|---|
server.host/server.port | العنوان والمنفذ للربط |
commit_log.path | مكان تخزين سجل الأحداث |
commit_log_driver.checkpoint_path | نقطة تفتيش كتابة الديمون |
auth.directory | دليل رمز الحامل |
namespaces.catalog_path | ملف كتالوج مساحة الأسماء SQLite |
الخطوة 3 - تكوين عملية القراءة
أنشئ ملف تكوين read.toml أو استخدم وسائط سطر الأوامر:
[paths]
base_dir = "/var/lib/assetcore"
[server]
address = "0.0.0.0:8081"
[storage]
commit_log_path = "data/commit_log.log"
checkpoint_path = "data/read.checkpoint.json"
[auth]
directory = "auth/tokens"
namespace_catalog_path = "data/namespace_catalog.sqlite"
namespace_catalog_read_only = true
يجب أن يشير خادم القراءة إلى نفس سجل الالتزام مثل خادم الكتابة. إذا كانت هذه السجلات مختلفة، فلن تتطابق توقعاتك مع مسار الكتابة.
الخطوة 4 - بدء عملية الكتابة
./target/release/assetcored-write --config write.toml
تحقق من أنه يعمل:
curl -H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
http://localhost:8080/v1/write/health
متوقع: {"status": "healthy", ...}
الخطوة 5 - بدء خدمة القراءة
./target/release/assetcored-read --config read.toml
تحقق من أنه يعمل:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
-H "x-assetcore-namespace: $ASSETCORE_NAMESPACE_ID" \
http://localhost:8081/v1/read/health
الخطوة 6 - تحقق من الاتصال من النهاية إلى النهاية
أرسل التزام اختبار:
curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/lifecycle \
-H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_state":"provisioned","reason":"deployment bootstrap"}'
curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/commit \
-H "Authorization: Bearer $ASSETCORE_WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{"op": "CreateContainer", "args": {"container_id": 1, "kind": {"type": "balance"}, "owner": null, "policies": null}}
]
}'
اقرأها مرة أخرى:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/containers/1
استكشاف الأخطاء وإصلاحها
”العنوان مستخدم بالفعل”
عملية أخرى تستخدم المنفذ. إما أن توقف تلك العملية أو تغير عنوان listen.
”تم رفض الإذن” في سجل الالتزام
لا يمتلك المستخدم الذي يقوم بتشغيل الـ daemon حق الوصول للكتابة إلى الدليل. تحقق من الملكية:
chown -R assetcore:assetcore /var/lib/assetcore
يظهر برنامج الـ daemon بيانات قديمة
تحقق من نقطة النهاية الخاصة بالانتعاش:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/freshness
إذا كان world_seq متأخراً عن commit_log_world_seq، فإن خدمة القراءة تتعقب. راقب مقياس التأخير.
استعادة من الأعطال
كلا الخادمين يستعيدان تلقائيًا من نقاط التحقق الخاصة بهما عند إعادة التشغيل. لا حاجة لتدخل يدوي.
الخطوات التالية
- الصحة والقياسات - مراقبة نقاط النهاية
- CLI Reference - استخدام acctl للعمليات