1.4. 두 개의 Dovecot 서버 간 복제 구성
양방향 복제를 사용하면 Dovecot 서버를 고가용성으로 만들 수 있으며, Bookinfo 및 POP3 클라이언트가 두 서버의 kdump에 액세스할 수 있습니다. Dovecot는 각box의 인덱스 로그의 변경 사항을 추적하고 안전한 방식으로 충돌을 해결합니다.
두 복제 파트너 모두에서 이 절차를 수행합니다.
복제는 서버 쌍 간에만 작동합니다. 결과적으로 대규모 클러스터에서는 여러 개의 독립적인 백엔드 쌍이 필요합니다.
사전 요구 사항
- 두 서버 모두 동일한 인증 백엔드를 사용합니다. LDAP 또는 SQL을 사용하여 계정을 중앙에서 유지하는 것이 좋습니다.
-
Dovecot 사용자 데이터베이스 구성은 사용자 목록을 지원합니다.
doveadm user '*'
명령을 사용하여 이를 확인합니다. -
dovecot는 사용자 ID(UID) 대신
vmail
사용자로 파일 시스템의 kdump에 액세스합니다.
절차
/etc/dovecot/conf.d/10-replication.conf
파일을 만들고 여기에 다음 단계를 수행합니다.notify
및replication
플러그인을 활성화합니다.mail_plugins = $mail_plugins notify replication
서비스 복제
기 섹션을 추가합니다.service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 user = vmail } }
이러한 설정으로 Dovecot는
dovecot
서비스가 시작될 때 하나 이상의 replicator 프로세스를 시작합니다. 또한 이 섹션에서는replicator-doveadm
소켓의 설정을 정의합니다.서비스 집계
기 섹션을 추가하여replication-notify-fifo
파이프 및replication-notify
소켓을 구성합니다.service aggregator { fifo_listener replication-notify-fifo { user = vmail } unix_listener replication-notify { user = vmail } }
서비스 doveadm
섹션을 추가하여 복제 서비스의 포트를 정의합니다.service doveadm { inet_listener { port = 12345 } }
doveadm
복제 서비스의 암호를 설정합니다.doveadm_password = replication_password
두 서버에서 암호는 동일해야 합니다.
복제 파트너를 구성합니다.
plugin { mail_replica = tcp:server2.example.com:12345 }
선택 사항: 최대 병렬
dsync
프로세스 수를 정의합니다.replication_max_conns = 20
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
nis_enabled
SELinux 부울을 활성화하여 Doveadm 복제 포트를 열
수 있습니다.setsebool -P nis_enabled on
복제 파트너만 복제 포트에 액세스할 수 있도록
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
IPv6 주소에 대한 서브넷 마스크
/
32- 다른 복제 파트너에서도 이 절차를 수행하십시오.
다시 로드 Dovecot:
# systemctl reload dovecot
검증
- 한 서버의 Webhook에서 작업을 수행한 다음 Dovecot가 변경 사항을 다른 서버에 복제했는지 확인합니다.
복제자 상태를 표시합니다.
# doveadm replicator status Queued 'sync' requests 0 Queued 'high' requests 0 Queued 'low' requests 0 Queued 'failed' requests 0 Queued 'full resync' requests 30 Waiting 'failed' requests 0 Total number of known users 75
특정 사용자의 복제본 상태를 표시합니다.
# doveadm replicator status example_user username priority fast sync full sync success sync failed example_user none 02:05:28 04:19:07 02:05:28 -
추가 리소스
-
dsync(1)
man page -
/usr/share/doc/dovecot/wiki/Replication.txt