Çok kiracılı bir düğümde her müşteri şirketi, kendi veritabanı olan ve kontrol düzlemine kayıtlı bir kiracıdır. Bu kılavuz bir kiracıyı oluşturan, tüm kiracıları yükselten, bir üyeliği değiştiren ve bir kiracıyı sonlandıran operatör komutlarını kapsar: server/provision_tenant.py, server/upgrade_tenants.py, server/membership.py ve server/offboard_tenant.py. Kiracılık modelinin kendisi çok kiracılılık sayfasında, self-servis kayıt kayıt sayfasında açıklanır.
Ön koşullar¶
CLUSTER_ERP_MULTI_TENANT=trueayarlı ve ortam dosyası eksiksiz bir düğüm (src/cluster_erp/config/settings.py:82). Bkz. yapılandırma başvurusu.install.shbu komutları nasıl koşuyorsa öyle: çalışma kopyasında, servis kullanıcısıyla ve ortam dosyası yüklenmiş bir kabuk (deploy/install.sh:63-66,deploy/install.sh:215-220).--regioniçin:CLUSTER_ERP_REGIONSiçinde listelenmiş bir bölge kodu (src/cluster_erp/core/tenancy.py:456-457).
Bir kiracının geçtiği durumlar TENANT_STATUSES içinde listelenir: provisioning, active, suspended ve closed (src/cluster_erp/core/tenancy.py:48-50). Diyagram bir kiracıyı bu durumlar arasında taşıyan komutları gösterir.
stateDiagram-v2 [*] --> provisioning: provision_tenant veya kayıt provisioning --> active: hazırlama tamamlanır active --> suspended: üyelik taraması veya suspend suspended --> active: membership extend veya activate active --> closed: offboard_tenant suspended --> closed: offboard_tenant closed --> [*]: offboard_tenant --drop
Düz yazıyla: bir kiracı provisioning olarak kaydedilir, hazırlama tamamlanınca active olur, ücretli dönemi bittiğinde veya bir operatör askıya aldığında suspended durumuna geçer, uzatma veya etkinleştirmeyle active durumuna döner, ayrılışta closed olur ve --drop adımıyla veritabanını ve dosyalarını kaybeder.
Adımlar¶
- Bir kiracı hazırlayın. Kaynak:
src/cluster_erp/server/provision_tenant.py:3-5,src/cluster_erp/server/provision_tenant.py:163-172.
bash
python -m cluster_erp.server.provision_tenant --key <key> --name "<company name>" --domains <domain>,<domain> --region <region>
Anahtar TENANT_KEY_RE kalıbına uymalıdır (src/cluster_erp/core/tenancy.py:46, src/cluster_erp/core/tenancy.py:460-461). Komut kiracıyı provisioning olarak kaydeder, veritabanını bölgenin sunucusunda oluşturur, Alembic geçmişini yeniden oynatır, gerçek uygulama açılışını yeni veritabanına karşı bir kez koşar (tablolar, diziler, yetkiler, ilk yönetici) ve kiracıyı active olarak işaretler (src/cluster_erp/server/provision_tenant.py:85-157). Her adım eş güçlüdür; bu yüzden başarısız bir koşu yeniden çalıştırınca kaldığı yerden sürer (src/cluster_erp/server/provision_tenant.py:7-15). Self-servis kayıt, alan adı doğrulandıktan sonra aynı işlevi çağırır (src/cluster_erp/server/signup.py:472-478, src/cluster_erp/server/signup.py:546).
- Her yükseltmeden önce bir sürümün neyi değiştireceğini listeleyin. Kaynak:
src/cluster_erp/server/upgrade_tenants.py:4,src/cluster_erp/server/upgrade_tenants.py:15-16.
bash
python -m cluster_erp.server.upgrade_tenants --dry-run
- Her veritabanının yedeğini alın, ardından tüm kiracıları yükseltin.
install.shçok kiracılı bir düğümde deneme koşusunu, yedeği ve yükseltmeyi bu sırayla koşar (deploy/install.sh:217-220). Bkz. yedekler ve geri yükleme.
bash
python -m cluster_erp.server.backup_tenants
python -m cluster_erp.server.upgrade_tenants
Çalıştırıcı varsayılan veritabanını ve kaydı silinmemiş her kiracıyı, askıdakiler dahil dolaşır. Baştan geride olan bir veritabanını göç ettirir, ardından yetki kataloğunu ve tohumlarını yenilemek için tek seferlik açılışı her kiracıya karşı koşar. Başarısız bir kiracı bildirilir ve atlanır (src/cluster_erp/server/upgrade_tenants.py:62-115).
-
Yalnız tek bir etkin kiracının tohumlarının yenilenmesi gerekiyorsa 1. adımı o kiracının anahtarıyla yeniden çalıştırın. Etkin bir kiracı yalnız tohum yenilemesi alır (
src/cluster_erp/server/provision_tenant.py:114-123). Operatör konsolu aynı yenilemeyiPOST /api/v1/vendor/tenants/{key}/refresh-seedsile başlatır (src/cluster_erp/server/routes/vendor.py:652-682). -
Bir üyeliği uzatın, askıya alın veya yeniden etkinleştirin. Kaynak:
src/cluster_erp/server/membership.py:3-13,src/cluster_erp/server/membership.py:156-171.
bash
python -m cluster_erp.server.membership extend --domain <domain> --days <days>
python -m cluster_erp.server.membership suspend --domain <domain>
python -m cluster_erp.server.membership activate --domain <domain>
extend ücretli dönemi ileri taşır ve üyeliği ve kiracıyı active yapar (src/cluster_erp/server/membership.py:83-106). Süresi dolan üyelikler açılışta, her gün ve cron taramasıyla kendiliğinden askıya alınır (src/cluster_erp/core/tenancy.py:324-345). Bkz. zamanlanmış işler ve saklama.
- Bir kiracıyı ayırın: veritabanını dışa aktarın ve kaydı kapatın. Kaynak:
src/cluster_erp/server/offboard_tenant.py:3-9.
bash
python -m cluster_erp.server.offboard_tenant --key <key> --note "<reason>"
Komut kiracı veritabanının şifreli bir dökümünü backup_dir içine yazar, ardından kiracıyı closed yapar, üyeliklerini iptal eder ve oturum açma çözümlemesini durdurur (src/cluster_erp/server/offboard_tenant.py:113-119, src/cluster_erp/core/tenancy.py:550-575).
- Kiracının dosyaları ve veritabanı kaldırılmalıysa komutu
--dropve ikinci kez yazılmış anahtarla yeniden çalıştırın. Kaynak:src/cluster_erp/server/offboard_tenant.py:4,src/cluster_erp/server/offboard_tenant.py:11-16.
bash
python -m cluster_erp.server.offboard_tenant --key <key> --note "<reason>" --drop --confirm <key>
Komut kiracının klasörünü yerel depolamadan kaldırır, veritabanının oturumlarını sonlandırır, veritabanını düşürür ve sonucu kiracının kapanış notuna ekler (src/cluster_erp/server/offboard_tenant.py:128-142). Daha önceki dökümler kendi budama pencerelerine kadar kalır ve silme defteri kalır (src/cluster_erp/server/offboard_tenant.py:14-16).
Sonucu doğrulayın¶
provision_tenantşunu yazar:tenant=<key> status=active db=<db> domains=<domains>(src/cluster_erp/server/provision_tenant.py:186-189).upgrade_tenantsall tenant databases at headyazar ve 0 koduyla çıkar (src/cluster_erp/server/upgrade_tenants.py:128-132).python -m cluster_erp.server.membership listher kiracıyı durumu ve dönem sonuyla yazar (src/cluster_erp/server/membership.py:53-81).- Operatör konsolu kiracıları durum, bölge ve şema revizyonuyla listeler; bkz. operatör konsolu.
Sorun giderme¶
| Belirti | Koddaki neden | Çözüm |
|---|---|---|
tenant key ... must match ... |
Anahtar TENANT_KEY_RE kalıbına uymuyor (src/cluster_erp/core/tenancy.py:458-459) |
Harfle başlayan küçük harf, rakam ve alt çizgi kullanın. |
unknown region ... |
Bölge yapılandırılmamış (src/cluster_erp/config/settings.py:917-923) |
Bölgeyi CLUSTER_ERP_REGIONS içine, sunucusunu CLUSTER_ERP_REGION_DB_URLS içine ekleyin. |
FAILED: <n> tenant(s) did not upgrade |
En az bir kiracı yükseltme sırasında hata verdi (src/cluster_erp/server/upgrade_tenants.py:110-112, src/cluster_erp/server/upgrade_tenants.py:129-131) |
O kiracının günlüğe yazılan hatasını okuyun ve çalıştırıcıyı yeniden koşun. |
offboarding is a multi-tenant operation; this node is single-tenant |
multi_tenant kapalı (src/cluster_erp/server/offboard_tenant.py:158-160) |
Çok kiracılı bir düğümde çalıştırın. |
--drop requires --confirm <key> (typed again); nothing was done |
Onay eksik veya farklı (src/cluster_erp/server/offboard_tenant.py:108-110) |
Anahtarı --confirm sonrasında yineleyin. |
storage backend ...: remove the tenant's objects with the provider's tooling |
Depolama arka ucu local değil (src/cluster_erp/server/offboard_tenant.py:65-73) |
Nesneleri bu komutun dışında kaldırın. |
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| kiracı anahtarı | TENANT_KEY_RE |
Bir kiracının kararlı, küçük harfli tanımlayıcısı; veritabanı adının soneki olarak da kullanılır. | kiracı anahtarı | src/cluster_erp/core/tenancy.py:46 |
| tohum yenileme | _init_tenant_schema |
Bir kiracı veritabanına karşı yetkileri, dizileri ve devre dışı bırakma sütunlarını yenileyen tek seferlik uygulama açılışı. | tohum yenileme | src/cluster_erp/server/provision_tenant.py:39-82 |
| ayrılış | offboard_tenant |
Bir kiracıyı sonlandırma: dışa aktarma, kapatma ve isteğe bağlı olarak düşürme. | ayrılış | src/cluster_erp/server/offboard_tenant.py:1-16 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.