Áp dụng phương án này nếu bạn muốn nâng cấp cả OS lẫn phần mềm Zimbra.
Thực hiện các bước sau để nâng cấp.
1. Tạo một server mới.
Khi tạo server mới, bạn có thể dùng hostname mới. Gỉa sử bạn đang dùng Zimbra 9, các hệ điều hành mới nhất cho Zimbra 9 là Ubuntu 20 và Redhat/Rocky Linux 8.
2. Bật MMR trên server cũ.
Gỉa sử hostname server cũ là old.server.com và server mới là new.server.com. Sau khi hoàn tất bước này thi old.server.com sẽ dùng dịch vụ LDAP trên new.server.com.
Trước khi bật MMR trên LDAP, bạn cần có các ldap password trên server cũ. Chạy lệnh sau với quyền zimbra:
zmlocalconfig -s ldap_amavis_password ldap_bes_searcher_password ldap_nginx_password ldap_postfix_password ldap_replication_password ldap_root_password zimbra_ldap_password
Bật MMR trên server cũ, với quyền zimbra:
/opt/zimbra/libexec/zmldapenable-mmr -s 1 -m ldap://new.server.com:389/
zmcontrol restart
Câu lệnh trên cho ldap server cũ (hiện tại) biết rằng nó sẽ hoạt động ở chế độ mmr với sid = 1 và có 1 master khác trong pool là new.ldap.com đang lắng nghe ở cổng 389.
3. Cài đặt Zimbra với phiên bản giống với phiên bản hiện tại (trên server cũ) trên server mới với tất cả các module, khởi tạo đồng bộ LDAP (replication).
Trên server mới, tải phiên bản zimbra giống phiên bản đang sử dụng, chuẩn bị sẵn file license. Tiến hành cài đặt (bạn cần cấu hình hosts file, dns server, disable ipv6, v.v… – tham khảo các bài viết trên blog zimico).
./install.sh -l /path/license.xml
Lưu ý: không cài đặt các module NG trên server mới.
Cài đặt các module sau:
Do you agree with the terms of the software license agreement? [N] Y
Install zimbra-ldap [Y]
Install zimbra-logger [Y]
Install zimbra-mta [Y]
Install zimbra-dnscache [Y]
Install zimbra-snmp [Y]
Install zimbra-store [Y]
Install zimbra-apache [Y]
Install zimbra-spell [Y]
Install zimbra-convertd [Y]
Install zimbra-memcached [Y]
Install zimbra-proxy [Y]
Install zimbra-archiving [N]
Install zimbra-drive [Y] N
Install zimbra-imapd (BETA - for evaluation only) [N]
Install zimbra-network-modules-ng [Y] N
Install zimbra-chat [Y] N
Vào chế độ cài đặt cấu hình, bạn cần thực hiện các bước sau:
– Chọn 1 – common configuration, chọn 2 và 4 để cấu hình ldap.
1) Common Configuration:
2) Ldap master host: <old.server.com>
4) Ldap Admin password: <ldap_root_password>
Select, or 'r' for previous menu [r] r
Hệ thống sẽ kiểm tra kết nối đến master ldap, nếu không còn dấu * tức là kết nối tốt.
Chọn r để trở về menu chính, chọn 2 – zimbra-ldap.
2 zimbra-ldap.
1) Status: Enabled
2) Create Domain: yes
3) Domain to create: Domain.com
4) Ldap replication type: replica
5) Ldap root password: set
** 6) Ldap replication password: Not Verified
** 7) Ldap postfix password: Not Verified
** 8) Ldap amavis password: Not Verified
** 9) Ldap nginx password: Not Verified
Chọn 4 – ldap replication type: đổi thành mmr
Please enter the LDAP replication type (replica, mmr) [replica] mmr
Sau đó bạn cần cập nhật password cho các thành phần khác dùng password đã lấy trên server cũ.
** 6) Ldap replication password: Not Verified
** 7) Ldap postfix password: Not Verified
** 8) Ldap amavis password: Not Verified
** 9) Ldap nginx password: Not Verified
Cuối cùng bạn thiết lập mật khẩu cho admin trong mục 7 với mật khẩu admin hiện tại.
7) zimbra-store: Enabled
** 4) Admin Password UNSET
Sau khi hoàn thành thiết lập và cài đặt xong, bạn cần kiểm tra tính đồng bộ giữa 2 LDAP mới và cũ bằng cách thay đổi vài attribute trên server cũ, xem trên server mới, thiết lập lại trên server mới và kiểm tra lại trên server cũ.
Trên server mới:
zmprov ca test-user@domain.com <test-password>
zmprov ga <test-user@domain.com> zimbraZimletUserPropertiesMaxNumEntries
#name test-user@domain.com
zimbraZimletUserPropertiesMaxNumEntries: 150
Trên server cũ, thay đổi 1 attribute của account test này:
zmprov ma <test-user@domain.com> zimbraZimletUserPropertiesMaxNumEntries 160
Trên server mới, xem attribute này có được cập nhật không.
zmprov -l ga <test-user@domain.com> zimbraZimletUserPropertiesMaxNumEntries
Trên server mới, thay đổi attribute này và xem trên server cũ có được cập nhật không
zmprov ma <test-user@domain.com> zimbraZimletUserPropertiesMaxNumEntries 150
Trên server cũ (dùng option -l để server lấy thông tin từ ldap, nếu không nó sẽ lấy thông tin từ bộ đệm cache):
zmprov -l ga <test-user@domain.com> zimbraZimletUserPropertiesMaxNumEntries
4. Trỏ server cũ đến LDAP mới, và loại bỏ LDAP trên server cũ.
Tiến hành gỡ bỏ LDAP trên server cũ khỏi MMR bằng cách cập nhật ldap_master_url và ldap_url trên cả 2 server mới và cũ.
su - zimbra
zmlocalconfig -e ldap_master_url="ldap://new.server.com:389"
zmlocalconfig -e ldap_url="ldap://new.server.com:389"
Nếu xuất hiện lỗi: Unable to start TLS: SSL connect attempt failed error:0A000086:SSL routines::certificate verify failed when connecting to ldap master. Tiến hành tắt các thông số sau trên các server để bỏ qua bước xác minh ldap:
zmlocalconfig -e ldap_starttls_required=false
zmlocalconfig -e ldap_starttls_supported=0
zmlocalconfig -e ssl_allow_untrusted_certs=true
zmcontrol restart
Trên server cũ, gỡ bỏ dịch vụ LDAP:
zmprov ms <old.zimbra.com> -zimbraServiceEnabled ldap -zimbraServiceInstalled ldap
Khởi động lại dịch vụ Zimbra trên cả 2 server cũ và mới:
zmcontrol restart
Tắt ldap trên server cũ:
ldap stop
Lưu ý: hiện tại server mới đang dùng selfsign certificate.
Đăng nhập vào webadmin và thử cấu hình, chỉnh sửa các thông tin account, cos để xem có lỗi gì không trên cả 2 server.
Cài đặt commercial ssl certificate cho server mới bằng cách copy các file trong thư mục /opt/zimbra/ssl/zimbra/commercial/ trên server cũ sang server mới, đảm bảo permission được set cho zimbra cho tất cả các file. Trên server mới, tiến hành cài đặt cert với quyển root:
/opt/zimbra/bin/zmcertmgr deploycrt comm commercial.crt commercial_ca.crt
Cập nhật ssh key để cho phép kết nối ssh giữa các server để sync dữ liệu. Với quyền zimbra, chạy lệnh sau trên mỗi server:
zmsshkeygen
Sau khi key đã được tạo, chạy lệnh sau trên mỗi server để đồng bộ key
zmupdateauthkeys
Trạng thái: Ở giai đoạn này, cả hai máy chủ đều đang chạy cùng một phiên bản nhưng old.server.com đang trỏ đến LDAP mới. Tất cả các hoạt động khác ngoài LDAP đều diễn ra trên old.server.com. Trên new.server.com, các dịch vụ Proxy, MTA và hộp thư đang chạy và có thể truy cập nhưng ở trạng thái nhàn rỗi. Việc cài đặt có thể được kiểm tra bằng cách truyền dữ liệu qua MTA và Proxy của new.server.com, các máy chủ này sẽ chuyển hướng kết nối đến máy chủ nơi các tài khoản đang cư trú. Giao diện quản trị cũng có thể truy cập trên cả hai hệ thống. Old.server.com sẽ chứa các mô-đun NG và new.server.com sẽ không có. Vì lý do này, tất cả các tài khoản cần được quản lý bằng giao diện quản trị của old.server.com.
5. Nâng cấp phiên bản Zimbra trên server mới lên phiên bản Daffodil 10.1
Thêm Onlyoffice repo vào nếu bạn muốn dùng OnlyOffice, với quyền root.
# Trên redhat8/Rocky Linux 8
cat > /etc/yum.repos.d/zimbra-onlyoffice.repo <<EOF
[zimbra-onlyoffice]
name=Zimbra Onlyoffice RPM Repository
baseurl=https://repo.zimbra.com/rpm/onlyoffice/rhel8
gpgcheck=1
enabled=1
EOF
#chạy lệnh sau để update repo
yum --disablerepo=* --enablerepo=zimbra-onlyoffice clean metadata
yum check-update --disablerepo=* --enablerepo=zimbra-onlyoffice --noplugins
# Trên Ubuntu 20
cat > /etc/apt/sources.list.d/zimbra-onlyoffice.list << EOF
deb [arch=amd64] https://repo.zimbra.com/apt/onlyoffice focal zimbra
deb-src [arch=amd64] https://repo.zimbra.com/apt/onlyoffice focal zimbra
EOF
#chạy lệnh sau để update repo
apt-get update
Tải phiên bản zimbra Daffodil 10.1 về server mới, tiến hành cài đặt với lệnh ./install.sh
Chương trình cài đặt sẽ hỏi bạn các gói cần upgrade và các gói cài đặt thêm. Ví dụ bạn cài thêm gói Onlyoffice và cài gói Chat.
Do you wish to upgrade? [Y] Y
Install zimbra-archiving [N] N
Install zimbra-onlyoffice [N] Y
Install chat and video features [N] Y
Installing:
zimbra-core
zimbra-ldap
zimbra-logger
zimbra-mta
zimbra-dnscache
zimbra-snmp
zimbra-store
zimbra-apache
zimbra-spell
zimbra-convertd
zimbra-memcached
zimbra-proxy
zimbra-onlyoffice
zimbra-license-tools
zimbra-license-extension
zimbra-network-store
zimbra-modern-ui
zimbra-modern-zimlets
zimbra-zimlet-document-editor
zimbra-zimlet-classic-document-editor
zimbra-patch
zimbra-mta-patch
zimbra-proxy-patch
zimbra-ldap-patch
zimbra-rabbitmq-server
The system will be modified. Continue? [N] Y
Hoàn tất quá trình cài đặt.
Bởi vì bạn đã gỡ bỏ LDAP trên server cũ và server mới vẫn đang hoạt động ở chế độ MMR, sẽ có thông báo lỗi trong log file. Điều này không ảnh hưởng gì cả, nếu muốn bạn thiết lập cronjob để xóa các log này mỗi 2h.
*/2 0 * * * sed -i -e '/ldap_start_tls failed\|rc -1 retrying/d' /var/log/zimbra.log
Đến giai đoạn này, LDAP trên server mới đã dùng Daffodil 10.1, các thành phần khác trên server mới ở trạng thái idle.
6. Thực hiện các cấu hình tùy biến trên server mới (như đã làm trên server cũ).
Bởi vì hostname đã trên server mới khác với hostname trên server cũ, bạn cần cập nhật login URL vào domain virtual host list. Với quyền zimbra:
zmprov md <Domain.com> +zimbraVirtualHostname <new.server.com>
Cập nhật các tùy chỉnh bạn đã làm trên server cũ (thường là MTA/postfix) trên server mới.
7. Tái định hướng các kết nối đến server mới.
Tải về module migration và cài đặt trên server mới
#Trên redhat/centos, với quyền root
yum clean metadata
yum check-update
yum install zimbra-modules-porter
#Trên ubuntu
apt-get update
apt-get install zimbra-modules-porter
Di chuyển cấu hình HSM.
Tùy vào kiến trúc lưu trữ dữ liệu của bạn cho Primary storage và Secondary (hsm) storage ra sao mà bạn cần thiết lập 2 thông số trên server cũ là:
zimbraMailboxMoveSkipBlobs (true = blob data sẽ không được di chuyển)
zimbraMailboxMoveSkipHsmBlobs (true = primary store được di chuyển, secondary store (hsm) không được di chuyển).
Ví dụ trong trường hợp bạn dùng NG HSM và có primary store và secondary store trên 2 phân vùng ổ cứng, không sử dụng S3 làm secondary store.
zmprov mcf zimbraMailboxMoveSkipBlobs FALSE
zmprov mcf zimbraMailboxMoveSkipHsmBlobs FALSE
Trường hợp bạn dùng S3 (external storage) cho secondary store thì thiết lập như sau. Khi này sẽ chỉ di chuyển dữ liệu trên primary store và giữ nguyên dữ liệu trên S3.
zmprov mcf zimbraMailboxMoveSkipBlobs FALSE
zmprov mcf zimbraMailboxMoveSkipHsmBlobs TRUE
Với quyền zimbra user trên server mới, thực hiện lệnh sau để xuất dữ liệu cấu hình hsm:
zmmodulesport system export --modules=hsm --filename=hsm-data --server=old.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/hsm-export.log
Thực hiện lệnh sau để import dữ liệu hsm.
zmmodulesport system import --modules=hsm --filename=hsm-data --server=new.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/hsm-import.log
Di chuyển cấu hình Delegated Admin.
Với quyền zimbra, xuất cấu hình delegated admin
zmmodulesport system export --modules=admin --filename=admin-data --server=old.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/da-export.log
Với quyền zimbra, import cấu hình delegated admin
zmmodulesport system import --modules=admin --filename=admin-data --server=new.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/da-import.log
Di chuyển cấu hình sao lưu dự phòng.
Cấu hình được xuất ra chỉ thể hiện thông tin tham khảo những COS nào đang được cấu hình backup. Bạn cần cấu hình backup trên server mới bằng tay dựa trên các thông tin này.
zmmodulesport system export --modules=backup --filename=backup-data --server=old.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/br-export.log
File backup-data.tgz được tạo ra trong thư mục /opt/zimbra/tmp/modules/backup/. Bạn xem nội dung file này để nắm thông tin cấu hình tương tự trên các mailbox server mới.
Di chuyển cấu hình mobile.
zmmodulesport system export --modules=mobile --filename=mobile-data --server=old.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/mobile-export.log
File mobile-data.tgz sẽ được tạo ra trong /opt/zimbra/tmp/modules/mobile/.
Thực hiện kiểm tra server mới
Tạo vài account test trên server mới.
Login vào account test và tiến hành gửi nhận thử nội bộ giữa các account này.
Di chuyển trước vài account từ server cũ sang server mới (sẽ trình bày sau đây).
Client sync (imap, pop, cos, mobile,…) từ proxy trên server mới.
Việc kiểm tra này đảm bảo server mới hoạt động ổn định trước khi bạn tái định tuyến kết nối đến MTA và Proxy mới.
Tái định tuyến kết nối đến MTA, Proxy trên server mới
Chỉnh sửa Firewall NAT về server mới và/hoặc chỉnh sửa DNS record trỏ về server mới.
Cấu hình các thông số tùy biến khác như bạn đã làm trên MTA cũ. Một số thông số quan trọng như:
a. Update zimbraMailTrustedIP
b. Update zimbraHttpThrottleSafeIps
c. Check zimbraMtaMyNetworks (subnet should already be included) at the server level
d. Check zmocalconfig for admin@<fqdn_of_this_host>, change to admin@hostname.com
zmlocalconfig -e ldap_master_url="ldap://new.server.com:389"
zmlocalconfig -e ldap_url="ldap://new.server.com:389"
Trên server mailbox cũ, với quyền zimbra chạy lệnh sau để cho mailbox server cũ biết sẽ dùng mta server mới nào để gửi email đi:
zmprov ms old.mailbox.com zimbraSmtpHostname new.mta.com
Trên server mới, lấy ZimbraID
zmprov gs new.server.com zimbraId
Sử dụng zimbraid vừa lấy để cập nhật cho các COS
for c in $(zmprov gac); do zmprov mc $c zimbraMailHostPool <zimbraId>; done;
Đến đây các account thuộc các COS sẽ luôn có mailbox đặt trên server mới.
8. Di chuyển tài khoản (migrate account).
Export Zimbra Drive Data
Nếu bạn dùng zimbra Drive, bạn cần export và import lại dữ liệu Drive. Bạn cần phân bổ không gian lưu trữ trên /opt/zimbra đủ lớn để quá trình di chuyển dữ liệu diễn ra thuận lợi. Ví dụ bạn có Drive 10GB thì cần chuẩn bị dung lượng /opt/zimbra khoảng 30GB.
zmmodulesport account export --modules=drive --filename=drive-data --server=old.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/drive-export.log
Sau khi đã export các data, chúng ta chuẩn bị cho bước import.
Di chuyển account.
Sử dụng lệnh zmmboxmove để di chuyển các account. ví dụ:
zmmboxmove -a <user-account@domain.com> -f <old.server.com> -t <new.server.com> --sync
Lệnh trên cho 1 account, bạn có thể dùng script để di chuyển đồng thời nhiều account. Ví dụ
for account in $(zmprov -l gaa); do zmmboxmove -a $account -f <old.server.com> -t <new.server.com> --sync
for calaccount in $(zmprov -l gacr); do zmmboxmove -a $calaccount -f <old.server.com> -t <new.server.com> --sync
Sau khi di chuyển xong các account, ta di chuyển các distribution list.
for l in $(zmprov gadl); do zmprov mdl $l zimbraMailHost new.server.com; done
Tiến hành xóa dữ liệu trên server cũ sau khoảng 1 tuần xác nhận server mới đã chạy tốt.
zmpurgeoldmbox -a user@domain.com -s old.server.com
Import Mobile data
Trên server mới, với quyền zimbra thiết lập:
zmprov md domain.com +zimbraMobileBlockedDevices "*"
zmprov mcf +zimbraMobileBlockedDevices "*"
Tiến hành import mobile data. Trên server mới:
zmmodulesport system import --modules=mobile --filename=mobile-data1-batch1 --server=new.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/mobile-import.log
Import Drive Data
Với quyền zimbra trên server mới tăng kích thước file cho phép upload và thời gian upload.
zmprov mcf zimbraFileUploadMaxSize 104857600
zmprov mc default zimbraAdminAuthTokenLifetime 24h
zmmailboxdctl restart
Tiến hành import dữ liệu
zmmodulesport account import --filename=drive-data --modules=drive --server=new.server.com --username=admin@domain.com --password=admin_passwd >> /opt/zimbra/log/drive-import.log
9. Loại bỏ server cũ.
Tại thời điểm này, server mới đã đảm nhiệm 100% tải và server cũ có thể được gỡ bỏ. Trên server cũ chạy
zmcontrol stop
Cho phép hệ thống chạy một thời gian, khi bạn chắc chắn hệ thống đã hoạt động tốt, gỡ bỏ zimbra trên server cũ, với quyền root:
cd /opt/zimbra/libexec/installer/
./install.sh -u
Loại bỏ server cũ khỏi ldap
Trên server mới chạy lệnh:
su - zimbra
zmprov ds old.server.com
Cập nhật convertd URL, trên server mới gõ lệnh:
su - zimbra
zmprov mcf zimbraConvertdURL 'http://new.server.com:7047/convert'
Khi xóa server cũ, logger hostmap sẽ không tự động cập nhật. Bạn kiểm tra và nếu cần thiết thì tiến hành gỡ bỏ server cũ khỏi log map.
zmloggerhostmap
zmloggerhostmap -d old old.server.com
zmloggerhostmap -d old.server.com old.server.com
Gỡ bỏ zimbra docs.
Nếu bạn chạy zimbra docs trên một server riêng, bạn có thể gỡ bỏ server này khỏi LDAP trong Daffodil 10.1
su - zimbra
zmprov ds docs.server.com
Quy trình nâng cấp hệ thống hoàn thành.