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¶
- 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.
- Zimbra yama paketi (zmpatch) 604 dahil uygulanmış olmalıdır. Kurulum aracı yama yoksa Always On'u açmaz.
- 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_cidraralığı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.confolarak üretilir ve kurulum hemen devam eder. --yesvermezseniz 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.10ekleyin.
İ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¶
- Her sunucuda kurulum sonunda
dogrulama: ok=… fail=0görünür. Elle:scripts/alwayson/alwayson-install --phase verify. /opt/profelis-alwayson/bin/profelis-alwayson-companion statuscanlı düğümleri ve sağlık kontrollerini (LMTP, HTTPS, ortak depo, indeks) gösterir; drain: hayır olmalıdır.- 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.

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.
-
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/sdcYö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.shadı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ı (1/3)
Rehberli kurulum: menü, rol seçimi ve özet ekranı (2/3)
Rehberli kurulum: menü, rol seçimi ve özet ekranı (3/3) -
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. -
Tanıkta (Zimbra gerekmez; tanıkta ilgisiz bir Zimbra varsa ona dokunulmaz):
sudo ./install.sh # rol: tanık (veya: scripts/alwayson/alwayson-install --yes) -
Birinci sunucuda kurulumu sürdürün, sonra diğer sunucularda
sudo ./install.sh --yes --modules alwayson. - 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_passwordhariç) kurulum durur. - LDAP sertifika zinciri, kendinden imzalı kök dahil, her sunucuda
/opt/zimbra/conf/cadizininde 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
contextCSNaynı ve girdi sayısı eşit olur; kurulum bunu denetlemedenldap_urlsı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=3ile ~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-migrate481 öğ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 (
zimbraReverseProxyUpstreamConnectTimeout3 sn ve ilgili öznitelikler); kurulum paketi bunları uygular. - Tek bir Ceph hizmetini
ceph orch daemon stopile durdurmak--forceister (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_cidraralığı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 ilezmsetuparasındainstall.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.