【IT168 应用技巧】
问:我打算将环境由 Microsoft Exchange 2007 升级到 Exchange 2010。此实现必须在所有级别都是完全冗余的。因为我们的组织有大约 3,000 名用户,所以,我计划开始时在两台计算机上安装 Exchange。每台计算机都有集线器传输 (HT)、客户端访问服务器 (CAS) 和邮箱 (MB) 服务器角色。这两台计算机也都是数据库可用性分组 (DAG) 的成员,因此数据库将在这些服务器之间进行复制。
通过使用当前的 Exchange 环境,我知道,如果 HT 和 MB 角色在同一台计算机上,Microsoft Exchange 邮件提交服务将始终首选本地 HT 服务器。它不像没有 HT 服务器角色的 MB 服务器那样以循环方式使用 Active Directory 站点中的其他 HT 服务器。
如果 Exchange 2010 也采用这种方式,则会出现问题。在 DAG 成员中保留传输转储程序没有意义。如果成员服务器不可用,并且邮箱数据库故障转移到其他 DAG 成员,则无法重新提交传输转储程序中的消息。
答:我理解您的疑虑。首先,我要向您保证,Exchange 产品组已经考虑到这种情况。在 Exchange 2010 开发阶段的早期,团队就进行了设计更改。如果 Exchange 邮件提交服务检测到它正在 DAG 的邮箱服务器部分中运行,它将不首选本地 HT 服务器,而是在同一 Active Directory 站点的其他 HT 服务器之间实现负载平衡。如果它找不到任何其他 HT 服务器,则会回退到本地 HT 服务器。
在 MB 角色中运行的 Exchange 邮件提交服务并不是开发人员更改的唯一内容。他们还修改了 HT 角色,如果安装 HT 角色的服务器中还有 MB 角色并且该服务器属于 DAG,则可将邮件重新路由到 Active Directory 站点中的其他 HT 服务器。产品组对这方面都进行了更改,以确保在 HT 和 MB 角色共存于作为 DAG 成员的同一台服务器上时实现高可用性。
客户端访问设计
问:我们要重新设计 Exchange 2010 解决方案,因此必须确定要创建的客户端访问服务器 (CAS) 阵列的数目。我们将有两个数据中心,其中每个数据中心都有自己的 Active Directory 站点。我们应该为每个站点创建一个阵列还是创建多个阵列?
而且,我们将使用 DAG 保护邮箱数据库,并将使每个数据库的副本跨两个站点分布。如果要故障转移或切换到已连接用户的另一个站点,是否需要手动重新配置 DNS 以使客户端指向另一站点的 CAS 阵列?
答:决定 CAS 阵列数的过程应该比较简单,不能为每个 Active Directory 站点创建一个以上 CAS 阵列。如果您尝试创建多个阵列,将看到图 1 所示的错误消息。
▲
图 1 尝试在一个 Active Directory 站点中创建第二个 CAS 阵列时将看到的错误消息。
因为通过环境中的任何 CAS 阵列都可以访问邮箱数据库,所以无需多个 CAS 阵列。即使可以创建多个 CAS 阵列,也只会使用第一个阵列。
关于您的其他问题,只要站点 1 的 CAS 阵列中至少有一台 CAS 服务器可用,就不必通过重新配置 DNS 来使客户端在切换或故障转移后指向另一站点的阵列。站点 1 中的可用 CAS 服务器将通过 RPC 直接与邮箱服务器(为站点 1 中的用户存储活动数据库)进行通信。
客户端创建
问:关于在 Active Directory 站点中创建 Exchange 2010 CAS 阵列,是否有任何非常好的实践可与大家分享?
答:我建议您在创建任何邮箱数据库或将任何邮箱移至站点中的 Exchange 2010 邮箱服务器之前,先创建 CAS 阵列。Exchange 2010 邮箱数据库有一个名为 RpcClientAccessServer 的特性。如果创建数据库时,Active Directory 站点中没有 CAS 阵列,则会用 Active Directory 站点中 Exchange 2010 CAS 服务器的服务器 FQDN 填充此特性。如果在创建任何邮箱数据库之前创建 CAS 阵列,则会为此特性提供 CAS 阵列的 FQDN,如图 2 所示。
▲
图 2 邮箱数据库的 RpcClientAccessServer 特性。
为什么应该这样做?Outlook 客户端(无论是 Outlook 2003、2007 还是 2010)将不自动提取更改。如果使用的是 Outlook 2007 或 2010,通过使旧 RPC 终结点不可用或执行配置文件修复,可以更新配置文件。但 Outlook 2003 不能更改终结点,也不提供配置文件修复功能。这样,您不得通过执行以下操作手动更改配置文件:删除用户名,重新添加该用户名,然后单击“检查名称”按钮。这种做法本身就不适用,还涉及最终用户,因此,您确实应该提前创建 CAS 阵列。
CAS 阵列负载平衡
问:我们计划对 CAS 阵列使用硬件负载平衡器而不是 Windows NLB,因此,我们想了解是否可以为新 Exchange 2010 RPC 客户端访问服务设置静态端口。硬件负载平衡器的供应商建议不要使用动态端口。如果可以为此服务设置静态端口,您建议使用哪些特定端口?
答:与以前的版本一样,在 Exchange 2010 中也可以为 RPC CA 服务设置静态端口。您需要为该服务以及 Exchange 通讯簿服务设置静态端口,因为 Outlook 通过 MAPI 与这两种服务进行通信。同时,仍会与邮箱服务器进行公共文件夹连接。
若要在 CAS 服务器中为 RPC CA 服务设置静态端口,您需要在 CAS 阵列的每台 CAS 服务器中打开注册表并导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeRPC。新建一个名为 ParametersSystem 的项,并在此项下创建名为 TCP/IP Port 的 REG_DWORD。该 DWORD 的值应为要使用的端口号(请参阅图 3)。
关于静态 RPC 端口,建议您使用企业网络中未分配和未使用的端口,除此之外没有非常好的做法。Microsoft IT 选择使用公司的企业网络中的 TCP/IP 端口 7575。您应该使用最适合的端口。
若要为 Exchange 通讯簿服务设置静态端口,请在记事本中打开文件 microsoft.exchange.addressbook.service.exe.config,该文件位于 C:\Program Files\Microsoft\Exchange Server\V14\Bin 中。然后,将端口值更改为要使用的 TCP/IP 端口。RPC CA 和 Exchange 通讯簿服务不能使用同一 TCP/IP 端口。
▲
图 3 在 CAS 服务器中为 RPC CA 服务配置静态端口。
配置端口后,您需要重新启动 Microsoft Exchange 通讯簿和 Microsoft Exchange RPC 客户端访问服务。若要为公共文件夹连接设置静态端口,其执行步骤与更改 RPC CA 服务所用的 TCP/IP 端口相同。唯一的不同在于,您还必须对 Exchange 2010 邮箱服务器执行这些步骤,因为公共文件夹连接需针对邮箱服务器角色中的 RPC CA 服务进行。为公共文件夹连接设置端口后,您需要在每台邮箱服务器上重新启动 Microsoft Exchange RPC 客户端访问服务。
Outlook 连接
问:据我所知,只有 Outlook 2007 和 2010 可以连接 RPC CA 服务或 CAS 阵列。真的是这样吗?
答:过去 Exchange 2010 文档曾指出,使用 Outlook 2003 客户端不能连接 RPC CA 服务或 CAS 阵列。这是所谓的文档错误。Outlook 2003 客户端是完全受支持的。您只需要确保在 Outlook 配置文件中启用 RPC 加密或在 CAS 服务器中禁用 RPC 加密要求。从安全角度出发,Microsoft 建议您在 Outlook 配置文件中启用 RPC 加密。使用组策略可以执行此操作。有关步骤,请参阅知识库文章“Outlook 与 Exchange 2010 邮箱由于 RPC 加密要求而产生的连接问题。”
使用 Windows NLB 的负载平衡
问:在使用 Windows 网络负载平衡 (WNLB) 对发往 Exchange 2010 CAS 阵列的通信进行负载平衡时,WNLB 的 FQDN 是否需要与 CAS 阵列的 FQDN 相匹配?
答:根本不要求这样。例如,在使用 Windows NLB 对发往 CAS 阵列的通信进行负载平衡时,可为 Windows NLB 指定一个 FQDN(例如 casarray01.contoso.com),并为 CAS 阵列分配 outlook.contoso.com。您可以这样做,这是完全受支持的。只要 CAS 阵列的内部 DNS 记录指向 WNLB 的虚拟 IP,就可以正常工作。