Ana içeriğe geç

Always On kurulumu

İki veya daha fazla posta sunucusunun aynı veriye bağlı çalıştığı aktif-aktif kümeyi, Profelis kurulum paketi Always On modülüyle birlikte kendisi kurar: güvenlik duvarı, ZooKeeper, veritabanı (Galera), dizin çoğaltma, ortak ileti deposu (Ceph, Garage, kurumsal S3 veya laboratuvarda NFS), arama indeksi (OpenSearch) ve Always On ayarları.

Önce laboratuvar

Always On kurulumu veritabanı, dosya deposu ve dizin yapısını değiştirir. İlk kurulumu canlıya almadan önce bir test ortamında yapın ve sunucuların anlık görüntüsünü alın.

Ön koşullar

  1. Tüm posta sunucuları Zimbra PFE 10 ve aynı Zimbra dizinine (LDAP) bağlı olmalıdır: ikinci sunucu, ilk sunucunun LDAP'ını gösteren ek sunucu olarak kurulur (posta kutusu, MTA, proxy). Kurulum aracı bunu denetler; değilse ne yapılacağını yazıp durur.
  2. Zimbra yama paketi (zmpatch) 604 dahil uygulanmış olmalıdır. Kurulum aracı yama yoksa Always On'u açmaz.
  3. Sunucular birbirine şu portlardan erişebilmelidir: 2181/2888/3888 (ZooKeeper), 9200/9300 (OpenSearch), 3306/4567/4568/4444 (Galera), 7306 (laboratuvar veritabanı), 2049/111/20048 (NFS), 3300/6789/6800-7000/7480 (Ceph), 3900/3901/3903 (Garage). Kurulum bu portları yalnız küme üyelerine açan kuralları kendisi ekler. Zimbra'nın iç portları (11211, 7025/7026, 7072-7074, 7110/7143/7993/7995, 7780, 8443, 389/636) ve yönetim portu 7071 de yalnız küme üyelerine ve profildeki [firewall] admin_cidr aralığına açılır; vekil ön yüzü (443/80/993/995/143/110/587/25/465) ve SSH açık kalır.

Tek komutla kurulum

Birinci sunucuda (veritabanı, NFS, ZooKeeper ve OpenSearch burada çalışır):

sudo ./install.sh --yes --modules alwayson --alwayson-nodes posta1.zpe.profelis.net,posta2.zpe.profelis.net
  • Profil /etc/profelis-alwayson/profile.conf olarak üretilir ve kurulum hemen devam eder.
  • --yes vermezseniz ve profil yoksa kurulum "Always On kümesi şimdi kurulsun mu?" diye sorar.
  • Tanık sunucunuz varsa --alwayson-witness tanik.zpe.profelis.net, ortak IP kullanacaksanız --alwayson-vip 192.0.2.10 ekleyin.

İkinci sunucuda: profil ortak veritabanı parolasını içerir; dosyayı aynen kopyalayıp aynı kurulumu çalıştırın:

sudo install -d -m 0700 /etc/profelis-alwayson
sudo scp posta1:/etc/profelis-alwayson/profile.conf /etc/profelis-alwayson/profile.conf
sudo ./install.sh --yes --modules alwayson

Sıra: tanık sunucu (varsa) → birinci sunucu → diğer sunucular.

Doğrulama

  1. Her sunucuda kurulum sonunda dogrulama: ok=… fail=0 görünür. Elle: scripts/alwayson/alwayson-install --phase verify.
  2. /opt/profelis-alwayson/bin/profelis-alwayson-companion status canlı düğümleri ve sağlık kontrollerini (LMTP, HTTPS, ortak depo, indeks) gösterir; drain: hayır olmalıdır.
  3. Yönetici konsolunda Araçlar ve Geçiş › Profelis Always On: Canlı düğüm tüm sunucu sayısına eşit, ZooKeeper OK ve her düğüm aktif görünür.

İki düğümlü kümede Always On ekranı: ZooKeeper OK, 2/2 canlı düğüm

İki düğümlü kümede Always On ekranı: ZooKeeper OK, 2/2 canlı düğüm

Tam HA: tanıklı kurulum

Yalnız PFE 10

Profelis S3 ve tam HA ileti deposu (ceph, garage, s3) Zimbra PFE 10 gerektirir. Zimbra 9'da kurulum paketi ve alwayson-install bu depoları açık bir iletiyle reddeder, S3 deposu uzantısı Zimbra 9 paketinde derlenmez ve dağıtılmaz; orada nfs kullanın.

Tanıksız iki sunuculu kurulum laboratuvar içindir: birinci sunucu düşerse küme durur. Tanıklı kurulumda tek bir makinenin kaybı (posta sunucusu veya tanık) okumayı da yazmayı da durdurmaz:

Bileşen Posta sunucuları Tanık
Veritabanı MariaDB Galera (senkron) + yerel MaxScale Galera hakemi (garbd)
ZooKeeper ensemble üyesi ensemble üyesi
Dizin (LDAP) çoklu ana sunucu (MMR) —
Arama (OpenSearch) veri düğümü, her indeksin kopyası diğer sunucuda oylama düğümü
İleti deposu Ceph RGW / Garage düğümü, yerel uç nokta Ceph / Garage düğümü (tam kopya tutar)

İleti deposu seçenekleri (--alwayson-blob):

  • ceph (varsayılan): Ceph (cephadm, Tentacle). Her ileti senkron olarak 3 kopya yazılır (size=3, min_size=2); büyük kurumsal kurulumlar, ölçeklenebilir, silme kodu (EC) seçeneği.
  • garage: Garage v2, her makine bir bölge, 3 tam kopya; daha sade işletim, küçük ve orta kurulumlar.
  • s3: mevcut kurumsal S3 (Ceph RGW, NetApp StorageGRID, Dell ECS…); hiçbir depolama bileşeni kurulmaz, tanık küçük kalabilir.
  • nfs: laboratuvar; NFS sunucusu tek hata noktasıdır.

MinIO desteklenmez: topluluk sürümü arşivlendi ve güvenlik güncellemesi almıyor.

MaxScale lisansı

Veritabanı vekili MaxScale BSL lisanslıdır; 3'ten az veritabanı sunucusunda (bu mimaride 2 posta sunucusu) ücretsiz kullanılır. Veritabanı sunucusu sayısını 3 veya daha fazlasına çıkarmayı planlıyorsanız MariaDB lisansını önceden denetleyin.

Tanık bir depolama üyesidir

Ceph ve Garage'da tanık verinin bir kopyasını tutar; diski posta sunucularınınkiyle aynı boyutta olmalıdır. Küçük bir tanık yalnız s3 seçeneğiyle mümkündür.

Veri kaybı yok

İleti, S3 deposu yazmayı onaylamadan teslim edilmiş sayılmaz (LMTP 250 ancak S3 yazması başarılı olunca döner; hata olursa MTA yeniden dener). Galera ve Ceph senkron çoğaltır; hiçbir aşamada eşzamansız çoğaltma yoktur.

Sıra: tanık → birinci sunucu → diğer sunucular.

  1. Birinci sunucuda profili üretin ve kurun:

    sudo ./install.sh --yes --modules alwayson \
      --alwayson-nodes posta1.zpe.profelis.net,posta2.zpe.profelis.net \
      --alwayson-witness tanik.zpe.profelis.net --alwayson-witness-ip 192.0.2.30 \
      --alwayson-blob ceph --alwayson-set blob.devices=/dev/sdb,/dev/sdc
    

    Yönetim portu 7071'e kümenin dışından erişecek yönetici ağını --alwayson-admin-cidr 203.0.113.0/24 (ya da --alwayson-set firewall.admin_cidr=203.0.113.0/24) ile ekleyin; boş bırakırsanız yalnız küme adresleri açılır ve kurulum uyarı verir.

    Komut satırı yerine sudo ./install.sh adım adım sorar (rol, düğümler, tanık, depo, bellek, modüller, yönetim ağı admin_cidr) ve özeti onaylatıp kurulumu sonuna kadar yürütür.

    Rehberli kurulum: menü, rol seçimi ve özet ekranı

    Rehberli kurulum: menü, rol seçimi ve özet ekranı (1/3)

    Rehberli kurulum: menü, rol seçimi ve özet ekranı

    Rehberli kurulum: menü, rol seçimi ve özet ekranı (2/3)

    Rehberli kurulum: menü, rol seçimi ve özet ekranı

    Rehberli kurulum: menü, rol seçimi ve özet ekranı (3/3)

  2. Profil (/etc/profelis-alwayson/profile.conf) kümenin ortak parolalarını ve anahtarlarını taşır: yalnız root okuyabilir (chmod 600). Aynen tanığa ve diğer sunuculara kopyalayın.

  3. Tanıkta (Zimbra gerekmez; tanıkta ilgisiz bir Zimbra varsa ona dokunulmaz):

    sudo ./install.sh          # rol: tanık  (veya: scripts/alwayson/alwayson-install --yes)
    
  4. Birinci sunucuda kurulumu sürdürün, sonra diğer sunucularda sudo ./install.sh --yes --modules alwayson.

  5. Birinci sunucuda arama indeksini ve doğrulamayı çalıştırın: scripts/alwayson/alwayson-install --phase reindex,verify.

Her adım [i/N] faz: … yazar; tamamlanmış adımlar "zaten kuruldu" diye atlanır. Bir adım hata verirse kurulum, kaldığı yerden devam komutunu (--phase …) yazar.

LDAP çoklu ana sunucu ön koşulları

Kurulum ldap-mmr aşamasında diğer posta sunucularına zimbra-ldap ekler ve çoklu ana sunucu çoğaltmasını (zmldapenable-mmr) açar. Başlamadan önce:

  • Birinci sunucuda şu yedi yerel yapılandırma anahtarı dolu olmalıdır: ldap_root_password, ldap_replication_password, zimbra_ldap_password, ldap_postfix_password, ldap_amavis_password, ldap_nginx_password, ldap_bes_searcher_password. Profilde [ldap] bölümü varsa değerler oradan yerel yapılandırmaya yazılır; bölüm yoksa ve anahtar boşsa (ldap_bes_searcher_password hariç) kurulum durur.
  • LDAP sertifika zinciri, kendinden imzalı kök dahil, her sunucuda /opt/zimbra/conf/ca dizininde olmalıdır (TLS ile çoğaltma bu dizinden doğrulanır). Genel bir sertifika yetkilisi kullanıyorsanız kök sertifikasını bu dizine ekleyip karma adıyla bağlantısını (c_rehash) oluşturun; zincir iki sunucuda aynı olmalıdır.
  • Çoğaltma bittiğinde iki sunucuda contextCSN aynı ve girdi sayısı eşit olur; kurulum bunu denetlemeden ldap_url sırasını değiştirmez.

Laboratuvardan tam HA'ya geçiş

Var olan iki sunuculu kümede birinci sunucuda:

sudo ./install.sh --yes --modules alwayson --alwayson-upgrade-fullha tanik.zpe.profelis.net \
  --alwayson-witness-ip 192.0.2.30 --alwayson-blob ceph

Profil güncellenir (eski hali yedeklenir). Profili tanığa ve diğer sunucuya kopyalayın; tanığı kurun; diğer sunucuda su - zimbra -c 'zmmailboxdctl stop' (veritabanı taşınırken yazma olmasın); birinci sunucuda ve ardından diğer sunucuda kurulumu çalıştırın. Geçişte:

  • ZooKeeper tek düğümden üç üyeye, OpenSearch tek düğümden kümeye çevrilir (indeks yeniden kurulur: --phase reindex).
  • Veritabanı Zimbra'nın kendi MariaDB'sinden yedek alınarak Galera'ya taşınır (yedek: /var/lib/profelis-alwayson/zimbra-db-before-galera.sql.gz).
  • Var olan ileti dosyaları okunmaya devam eder; S3 deposuna çevrimiçi taşımak için birinci sunucuda --phase blob-migrate (hız sınırlı, kaldığı yerden devam eder).

Boyutlandırma (~20 TB posta)

Depo Koruma Ham / mantıksal 20 TB için ham (doluluk payı dahil) Bir makine kaybında
Ceph, replicated size=3 (varsayılan) 3 senkron kopya 3× ~90-100 TB okuma + yazma sürer
Ceph, EC k=4 m=2 (en az 6 sunucu) silme kodu 1,5× ~45-50 TB okuma + yazma sürer
Ceph, EC k=2 m=1 (3 sunucu) silme kodu 1,5× ~45-50 TB yalnız okuma: HA için uygun değil
Garage replication_factor=3 3 tam kopya 3× ~90-100 TB okuma + yazma sürer
Kurumsal S3 üretici üretici üretici üretici
  • Bu ölçekte önerilen: mevcut kurumsal S3 veya en az 5 depolama sunuculu Ceph (sunucu başına 6 × 3,84 TB NVMe/SSD; size=3 ile ~38 TB kullanılabilir), RGW indeks havuzu ayrı SSD sınıfında.
  • Posta blob'ları küçük nesnelerdir: varsayılan replicated havuzdur; EC her nesneyi parçalara böldüğü için gecikmeyi artırır, yalnız arşiv katmanında önerilir.
  • Ağ: istemci ağı 10/25 GbE, ayrı küme ağı 25 GbE (blob.ceph_cluster_network).
  • Taşıma süresi (ortalama 75 KB ileti, 16 iş parçacığı): TB başına ~6-7 saat; 20 TB ~5-6 gün, çevrimiçi ve hız sınırlı. Önce tek posta kutusuyla ölçün.
  • Laboratuvarda ölçülen: blob-migrate 481 öğelik 5,4 MB'ı yaklaşık 20 sn'de taşıdı. Laboratuvar güvenilir bir hız değeri vermek için çok küçüktür; önce gerçek bir posta kutusuyla ölçün. 28 hesabın yeniden indekslenmesi yaklaşık 11 dk sürdü.
  • Silme kodlamalı (EC) havuzda küçük nesneler için ek yük vardır; RGW indeks havuzu her zaman kopyalı ve SSD üzerinde kalmalıdır. Tanığın diski posta sunucularınınkiyle aynı boyutta olmalıdır (yukarıdaki uyarı).

Bellek (RAM) planı

Boştaki laboratuvar kümesinde ölçülen yaklaşık değerler (hizmet başına, makine başına); üretimde yükle birlikte artar:

Hizmet Bellek
OpenSearch yığın (heap) 1 GB (index.opensearch_heap); lab dışında bellek ve veri boyutuna göre artırın
Ceph MGR 190-255 MB (RSS)
Ceph MON 180-200 MB (RSS)
Ceph RGW ~160 MB (RSS)
Ceph OSD boştaki laboratuvarda 150-170 MB (RSS); varsayılan hedef OSD başına 4 GB'tır, küçük makinede sınırlayın
MaxScale ~18 MB (RSS)
Garbd (Galera hakemi) ~9 MB (RSS)
Galera (MariaDB) db.innodb_buffer_pool ayarı kadar

OpenSearch veri diskini %85'in altında tutun: üstünde kopyalar yerleştirilemez ve bir düğüm kaybında indeks kırmızıya döner. --phase verify bu durumu uyarır.

Posta sunucusu başına Zimbra'nın kendi gereksinimine ek olarak yukarıdaki hizmetleri hesaplayın; tanık yalnız oylama/hakem hizmetleri ile (ve Ceph/Garage ile birlikte depolama üyesi olarak) çalışır.

Yük devri davranışı

Sınama, laboratuvar kümesinde makineyi ağdan yalıtarak yapıldı (sanal makineler kapatılmadı). Hiçbir senaryoda posta kaybı olmadı.

Kaybolan makine Girişler Posta teslimi Toparlanma
İkinci sunucu Girişlerin %95'i birinci sunucu üzerinden başarılı; Galera yeniden kurulurken yaklaşık 30 sn takılma 30/30 teslim Galera katılımı yaklaşık 5 sn; Ceph HEALTH_OK yaklaşık 4 dk; Always On yeniden kaydı yaklaşık 50 sn
Birinci sunucu (vekil düzeltmesinden sonra) 216/216 giriş ikinci sunucu üzerinden (başlık belirteciyle yaklaşık 3,3 sn, çerezle yaklaşık 0,4 sn) 20/20 teslim (en geç olan Postfix ertelemesiyle yaklaşık 140 sn gecikti) MaxScale ikinci düğümü ana yapar ve orada tutar (yapışkanlık); Ceph HEALTH_OK yaklaşık 6 dk
Tanık Girişlerin %91-93'ü 118/118 teslim ZooKeeper lideri değişir; katılım yaklaşık 2 dk
Yalnız dizin (slapd), bir sunucuda yaklaşık %98 60/60 otomatik
Yalnız RGW, bir sunucuda yaklaşık %97 72/72 S3 deposu aynı PUT içinde diğer uç noktaya geçer

Notlar:

  • Vekil düzeltmesinden önce birinci sunucu kaybında girişlerin yalnızca yaklaşık %1'i ikinci sunucudan başarılı oluyordu. Düzeltme vekilde kısa üst sunucu zaman aşımları tanımlar (zimbraReverseProxyUpstreamConnectTimeout 3 sn ve ilgili öznitelikler); kurulum paketi bunları uygular.
  • Tek bir Ceph hizmetini ceph orch daemon stop ile durdurmak --force ister (yönetici, erişilebilirliği düşüreceği için aksi halde reddeder).
  • Laboratuvarda RGW arızası 8,6 sn'de algılandı ve 10,4 sn'de toparlandı.

Güvenlik sıkılaştırması

  • Güvenlik duvarı aşaması Zimbra'nın iç portlarını (11211, 7025/7026, 7072-7074, 7110/7143/7993/7995, 7780, 8443, 389/636) küme adresleriyle sınırlar. 7071 (yönetim) yalnız kümeye ve [firewall] admin_cidr aralığına açıktır.
  • swatch günlük enjeksiyonu ile uzaktan kod çalıştırma sıkılaştırması zmsetup öncesinde ve sonrasında çalışır. Zimbra paketleri ile zmsetup arasında install.sh --pre-zmsetup çalıştırın; sistem hâlâ yamasızsa kurulum başarısız olur.
  • Profelis Guard referans değeri kurulumdan sonra yenilenir.

İşletim için bkz. Always On.

Kapsam

  • Var olan yerel ileti dosyaları paylaşımlı depoya otomatik taşınmaz (bunun için Depolama katmanları).
  • Arama indeksi OpenSearch'e geçer; var olan hesapları yeniden indeksleyin: zmprov rim <hesap> start.
  • Komut satırından Türkçe karakterli arama denerken zimbra kullanıcısında UTF-8 yerel ayar kullanın (LC_ALL=C.UTF-8 zmmailbox …); webmail etkilenmez.