1.4. 두 개의 Dovecot 서버 간 복제 구성
양방향 복제를 사용하면 Dovecot 서버를 고가용성으로 만들 수 있으며, Cryostat 및 POP3 클라이언트는 두 서버의 email에 액세스할 수 있습니다. Dovecot는 각 제거의 인덱스 로그에서 변경 사항을 추적하고 안전한 방식으로 충돌을 해결합니다.
두 복제 파트너 모두에서 이 절차를 수행합니다.
복제는 서버 쌍 간에만 작동합니다. 결과적으로 대규모 클러스터에서는 여러 개의 독립적인 백엔드 쌍이 필요합니다.
사전 요구 사항
- 두 서버 모두 동일한 인증 백엔드를 사용합니다. LDAP 또는 SQL을 사용하여 계정을 중앙에서 유지하는 것이 좋습니다.
-
Dovecot 사용자 데이터베이스 구성은 사용자 목록을 지원합니다.
doveadm 사용자 '*'명령을 사용하여 이를 확인합니다. -
Dovecot는 사용자 ID(UID) 대신
vmail사용자로 파일 시스템의 Cryostat에 액세스합니다.
프로세스
/etc/dovecot/conf.d/10-replication.conf파일을 생성하고 이 파일에서 다음 단계를 수행합니다.알림및복제플러그인을 활성화합니다.mail_plugins = $mail_plugins notify replication
mail_plugins = $mail_plugins notify replicationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 복제 섹션을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 설정을 사용하면
dovecot서비스가 시작될 때 Dovecot가 하나 이상의 복제 프로세스를 시작합니다. 또한 이 섹션에서는replicator-doveadm소켓의 설정을 정의합니다.replication-notify-fifo파이프 및replication-notify소켓을 구성하려면서비스 수집기섹션을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 doveadm섹션을 추가하여 복제 서비스의 포트를 정의합니다.service doveadm { inet_listener { port = 12345 } }service doveadm { inet_listener { port = 12345 } }Copy to Clipboard Copied! Toggle word wrap Toggle overflow doveadm복제 서비스의 암호를 설정합니다.doveadm_password = <replication_password>
doveadm_password = <replication_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 두 서버에서 암호가 동일해야 합니다.
복제 파트너를 구성합니다.
plugin { mail_replica = tcp:server2.example.com:12345 }plugin { mail_replica = tcp:server2.example.com:12345 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 최대 병렬
dsync프로세스 수를 정의합니다.replication_max_conns = 20
replication_max_conns = 20Copy to Clipboard Copied! Toggle word wrap Toggle overflow replication_max_conns의 기본값은10입니다.
/etc/dovecot/conf.d/10-replication.conf파일에 보안 권한을 설정합니다.chown root:root /etc/dovecot/conf.d/10-replication.conf chmod 600 /etc/dovecot/conf.d/10-replication.conf
# chown root:root /etc/dovecot/conf.d/10-replication.conf # chmod 600 /etc/dovecot/conf.d/10-replication.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow nis_enabledSELinux 부울을 활성화하여 Dovecot가doveadm복제 포트를 열 수 있도록 허용합니다.setsebool -P nis_enabled on
# setsebool -P nis_enabled onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 복제 파트너만 복제 포트에 액세스할 수 있도록
firewalld규칙을 구성합니다. 예를 들면 다음과 같습니다.firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" firewall-cmd --reload
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow IPv6 주소의 IPv4 및
/128의 서브넷 마스크는 지정된 주소에 대한 액세스를 제한합니다.- 다른 복제 파트너에서도 이 절차를 수행합니다.
Dovecot 다시 로드:
systemctl reload dovecot
# systemctl reload dovecotCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- 한 서버의box에서 작업을 수행한 다음 Dovecot가 다른 서버에 변경 사항을 복제했는지 확인합니다.
복제자 상태를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 사용자의 복제본 상태를 표시합니다.
doveadm replicator status <user_name>
# doveadm replicator status <user_name> username priority fast sync full sync success sync failed <user_user> none 02:05:28 04:19:07 02:05:28 -Copy to Clipboard Copied! Toggle word wrap Toggle overflow