2つのノード(backend1およびbackend2)で構成されるフェイルオーバー時に1つのcyrus murder(aggregator)マスターとIMAPバックエンドクラスターがあります。
私はcorosync/pacemakerを使用して設定します:
バックエンドIMAPクラスターの場合。
2つのIMAPバックエンド間で/ var/lib/imapと/ var/pool/imapを同期するにはdrbdを使用しすぎています。
たとえば、cyrus-imapdサービスはbackend1で実行されます。 serAがINBOXにフォルダーとサブフォルダーを作成すると、backend1はmupdateプロトコルを使用してアグリゲーターを要求します。それは肯定的に応答し、アグリゲーターのmailboxs.dbには、フォルダーと、フォルダーが格納されているバックエンドの名前があります。
backend1が停止しても、backend2が引き継ぎます。 serAフォルダーの作成時に、cyrus-imapdは、フォルダーを作成できるかどうかをアグリゲーターに要求します。 serAのメールボックスがbackend1によって管理されていることをアグリゲーターが知っているため、アグリゲーターは否定的に応答しました。 backend1とbackend2が「同じ」であることはわかりません。そのため、メールボックスを削除するようにbackend2を注文しました。ただし、データが複製されると、maiboxはbackend1に表示されなくなります。
だから私の質問は次のとおりです:imapd.confまたは私の2つのバックエンドのIMAPを同じ名前で表示できるようにするオプションはありますか?
Imapd.confの両方のマシンで同じ「servername」オプションを設定する必要があるようです。
{"servername"、NULL、STRING}/*これは、POP、IMAP、およびLMTPデーモンのグリーティングメッセージに表示されるホスト名です。設定されていない場合は、gethostname(2)から返された結果が使用されます。 * /
ただし、それだけではありません。サーバーを識別するために殺人によっても使用されます。