メールヘッダでExchange Onlineの構成を推測

注:この投稿は検証結果を元にした推測の部分を多大に含みます 今回は、Exchange Onlineのサーバ構成について考えてみたいと思います。

メールのヘッダには、様々な情報が付与されています。これを読み解くことによって、メールの送信遅延がどこで発生しているのか、どういうサーバを経由して届いたのかを調べることができます。

例えば、以前の記事 重複メッセージの除去(Exchange Online) で送信したテストメールを見ると、以下の様なReceivedヘッダが付与されています。

Received: from SG2PR03MB0537.apcprd03.prod.outlook.com (25.160.235.149) by
 SIXPR03MB0541.apcprd03.prod.outlook.com (25.160.173.25) with Microsoft SMTP
 Server (TLS) id 15.1.99.14 via Mailbox Transport; Sun, 8 Mar 2015 13:39:47
 +0000

Received: from SIXPR03CA012.apcprd03.prod.outlook.com (10.141.119.22) by
 SG2PR03MB0537.apcprd03.prod.outlook.com (25.160.235.149) with Microsoft SMTP
 Server (TLS) id 15.1.106.15; Sun, 8 Mar 2015 13:39:46 +0000

Received: from DB3FFO11FD006.protection.gbl (2a01:111:f400:7e04::167) by
 SIXPR03CA012.outlook.office365.com (2a01:111:e400:a82b::22) with Microsoft
 SMTP Server (TLS) id 15.1.106.15 via Frontend Transport; Sun, 8 Mar 2015
 13:39:46 +0000

Received: from xxxx.localdomain (xx.xx.xx.xx) by
 DB3FFO11FD006.mail.protection.outlook.com (10.47.216.95) with Microsoft SMTP
 Server id 15.1.112.13 via Frontend Transport; Sun, 8 Mar 2015 13:39:43 +0000

Receivedヘッダは、リレーされる度に下から上にだんだんと追加されていきます。Office 365の中では、主に以下の様な流れで記録されています。
20150309_02

まず、①では外部からMXレコードを引いた値でEOPに送信されます。これは、APACには限定されず、世界中のEOPで受信する形になるようです。今回はDB3~というホスト名で受信していますので、恐らくヨーロッパリージョンのダブリンのEOPで受け取ってからAPACに転送されているのだと思います。

Exchangeでは、外部からのメールはCAS(クライアントアクセスサーバ)で動作しているフロントエンドトランスポートが受ける形になります。直近数百通のメールを見る限りで、後述するDAGより大きな単位で束ねられたシンガポール・香港のCASサーバ群に負荷分散されて到着しているようです。ここはロードバランサーにより行われていると推測します。

次に、メールボックスの存在するDAG(データベース可用性グループ)に対してルーティングされます。DAGは、Exchange Server 2013と基本的なアーキテクチャが同じという前提であれば、最大16台のメールボックスサーバで構成されるクラスタサーバ群になります。同じく直近のメールのヘッダを追う限りでは香港①/香港②/シンガポール①/シンガポール②でそれぞれ4台ずつ構成されている様です。

最後にメールボックストランスポートから実際のメールボックスに対してメールが配信されます。メールボックスデータベースは、1つのActiveと複数のPassiveによって構成されていますが、メールボックストランスポートからは現在Activeとなっているメールボックスサーバにメールが配送されます。

これらをまとめると、以下の様なメールフローになります。CASのサーバ名は非常に数が多かったのでサンプルを、メールボックスサーバの中で実際に見つからなかったが、名前付けルールから推測したものを( )で表示しています。(※たまたま通らなかっただけかもしれませんし、故障やメンテナンスで切り離されていたのかもしれません。)
20150309_01

次に、 重複メッセージの除去(Exchange Online) で紹介している過去一定期間に受信したメールの重複チェック用のデータですが、これは各メールボックスストアごとに保存されており、メンテナンスや故障対応などのためにデータベースのActiveが別のサーバに切り替わるとリセットされます。

以下、3/4以降のメールについて、最後のReceivedヘッダの記録されているサーバ(つまり、メールボックスのストアされているサーバ)と時刻のリストです。24時間ではない間隔で来ているメールはそれぞれ短時間(数十分)の間SG2~→SIX~に切り替わり、切り戻りが発生しており、メンテナンスで同一データセンター内でActiveが切り替わったと推測されます。

  • Mar 4 16:07:39 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com
  • Mar 5 16:08:08 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com
  • Mar 6 16:08:36 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com
  • Mar 7 01:23:47 JST 2015: SIXPR03MB0541.apcprd03.prod.outlook.com
  • Mar 7 01:58:48 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com
  • Mar 8 01:54:17 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com
  • Mar 8 22:39:42 JST 2015: SIXPR03MB0541.apcprd03.prod.outlook.com
  • Mar 8 22:54:42 JST 2015: SG2PR03MB0539.apcprd03.prod.outlook.com

Activeが切り替わった場合でも、OutlookからExchange Onlineへの接続は透過的に行われていますので、ユーザーが気づくことは少ないかと思われます。

サイト障害を考えると、シンガポール、香港ともに2つずつはメールボックスDBを配置するのが必要だと思いますので、HK2~、HKX~のどれかにもPassiveが存在しており、最低、平常時は1 Active – 3 Passive以上の冗長性は確保されているものと思われます。更に運用によって(すぐにオンラインに戻す必要はないと前提で運用設計する場合)はDC内に2つ以上のPassiveを構成している可能性もありますね。

 

また、これらのユーザーの所属するサーバ群はたまに変わるようです。 (私のメールボックスは、2/6のAM6:00-7:00頃に HK2PR03MB0833 から切り替わっています。)

これは、オンプレミスで利用するのと同じで、それぞれのユーザーの利用量や負荷についてはバラツキがあり、これを解消する為のリバランス処理や障害対応(主に、検索インデックス関係)が多いと思われます。

2 thoughts on “メールヘッダでExchange Onlineの構成を推測

  1. Pingback: 重複メッセージの除去(Exchange Online) | 日々徒然

  2. Pingback: DuplicateDeliverによる配信不可 | 日々徒然

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です