Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İşletme

Nasıl yapılır

Kiracı yaşam döngüsü

Çok kiracılı düğümde kiracı hazırlayın, kiracıları yükseltin, üyeliği askıya alıp yeniden etkinleştirin ve kiracıyı ayırın.

Ç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=true ayarlı ve ortam dosyası eksiksiz bir düğüm (src/cluster_erp/config/settings.py:82). Bkz. yapılandırma başvurusu.
  • install.sh bu 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).
  • --region için: CLUSTER_ERP_REGIONS iç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

  1. 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).

  1. 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

  1. 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).

  1. 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ı yenilemeyi POST /api/v1/vendor/tenants/{key}/refresh-seeds ile başlatır (src/cluster_erp/server/routes/vendor.py:652-682).

  2. 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.

  1. 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).

  1. Kiracının dosyaları ve veritabanı kaldırılmalıysa komutu --drop ve 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_tenants all tenant databases at head yazar ve 0 koduyla çıkar (src/cluster_erp/server/upgrade_tenants.py:128-132).
  • python -m cluster_erp.server.membership list her 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ı.

Doğrulanan commit 92f8051 · 2026-11-13