web-dev-qa-db-ja.com

フェイルオーバー時のCyrus殺人とIMAPバックエンドクラスター

2つのノード(backend1およびbackend2)で構成されるフェイルオーバー時に1つのcyrus murder(aggregator)マスターとIMAPバックエンドクラスターがあります。

私はcorosync/pacemakerを使用して設定します:

  • 仮想IP
  • cyrus-imapdサービスを開始および停止します

バックエンド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によって管理されていることをアグリゲーターが知っているため、アグリゲーターは否定的に応答しました。 backend1backend2が「同じ」であることはわかりません。そのため、メールボックスを削除するようにbackend2を注文しました。ただし、データが複製されると、maiboxはbackend1に表示されなくなります。

だから私の質問は次のとおりです:imapd.confまたは私の2つのバックエンドのIMAPを同じ名前で表示できるようにするオプションはありますか?

2
Cédric

Imapd.confの両方のマシンで同じ「servername」オプションを設定する必要があるようです。

{"servername"、NULL、STRING}/*これは、POP、IMAP、およびLMTPデーモンのグリーティングメッセージに表示されるホスト名です。設定されていない場合は、gethostname(2)から返された結果が使用されます。 * /

ただし、それだけではありません。サーバーを識別するために殺人によっても使用されます。

1
Bron Gondwana