智能运维! Exchange 2013/2016 邮箱自动分布探秘 - 以及智能优化

Exchange 2013/2016 在创建用户邮箱,开启用户邮箱或者移动用户邮箱这三个场景时,如果没有指定目标邮箱数据库,系统会自动随机分配邮箱到可用的邮箱数据库。这个过程由Mailbox Resources Management Agent cmdlet extension agent 来完成,对于用户来说是透明的。 那么问题来了, 系统会平均分配吗?可以定制邮箱数据库范围吗?可以根据系统负载配置权重吗?可以针对网络条件配置优先级吗?等等.... 对,技术人就是应该破除ignorance, 不断打破沙锅问到底.

我们简单看一下Exchange 是怎样完成这个任务的:

1. 当创建用户邮箱,开启用户邮箱或者移动用户邮箱这三个场景发生时, Exchange 会获取到Exchange organization的邮箱数据库列表(可简单理解为get-mailboxdatabase);

2. 邮箱数据库上有excludefromProvision属性的,这些数据库会从列表中移除:

3. 在管理scope之外的邮箱数据库也会从列表中移除; 这个管理范围我们之后可以讨论,Exchange 设计了非常完善的管理分级和角色级别的权限管理机制,已经非常完善了; 

4. 在操作主机AD站点外的数据库会从列表中移除。这是为了优化之后用户登录邮箱的网络流量,系统自动认为管理在哪site操作,用户在哪site; 

5. 从剩下的数据库列表中,Exchange 随机选择一个健康可用的完成任务; 

机制分析: 

从上面的过程可看出: 

a. Exchange不做轮询/权重评估等负载均衡或者评估邮件服务器负载

b. 自动分布机制无法做系统集成的智能配置,可能出现某个数据库积累大量用户而其他数据库用户少的情况。虽然从结果的概率论来讲,应该是偏向平均分配的。但技术人员要在逻辑上就去保证是智能的; 

注: 我们前面讲了,邮箱自动分配是Mailbox Resources Management Agent cmdlet extension agent 完成的,如果管理员不需要该功能而希望手动完成邮箱指配,那么可以禁用Mailbox Resources Management Agent cmdlet extension agent 。

那么如何在利用该功能便利性的同时赋予该功能一定的智能呢? 这是个好问题!

考虑到Mailbox Automatic distribution的工作机制,我们可以人工对这一过程做些干预,以实现智能化改造,减轻运维负担并提高效率. 比如:因为excludefromProvision/管理范围/site可以影响到邮箱数据库是否参与自动分配过程,我们就可以利用这些设置,来动态的优化邮箱分配过程。以利用excludefromProvision属性为例: 

 

思路:

我们想要实现基本的平均分配因为服役的邮箱服务器硬件配置一致。所以同样的用户数量,相近或者一致的负载是我们想要的结果。那么我们可以设置一个理想的用户数量规划,比如有10台邮箱服务器,每台服务器运行10个主数据库(这里只讨论主活动数据库,不考虑DAG带来的数据库数量影响),每个服务器理想服务用户数量是1000,每个数据库服务100个用户。 那么我们可以制作一个脚本来定期统计数据库用户数量,超过100的就设置excludefromProvision,使它们不再接受新用户。而如果之前超过100用户的数据库因邮箱移除等使数量下降到了100以下,就移除excludefromProvision,让他们再次加入到自动分配过程中来。通过这种方式最终实现邮箱服务器/邮件数据库被平均使用的效果,实现了智能优化。

脚本参考如下:

Param(
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[String]
$DistinguishedName
)
Process
{
[ADSI] $objDB = “GC://$($DistinguishedName -replace ‘/’,’\/’)”
if ( ($objDB.objectClass -ne $null) -and ($objDB.objectClass.Contains(“msExchPrivateMDB”)) )
{
$count = [Math]::Max(0,([Int] ($objDB.homeMDBBL.Count)) – 1)
}
if ($count -gt 7) {Set-mailboxDatabase $DistinguishedName -IsExcludedFromProvisioning $True}
else {Set-mailboxDatabase $DistinguishedName -IsExcludedFromProvisioning $false}
write-host "done!"
}

如果需要更加完善的智能优化,可以加入利用管理范围以及site规划等丰富邮箱自动分配的功能和逻辑; 通过这种优化,可以实现让Exchange 自动统一管理用户分配,确保邮箱服务器资源合理利用,提高管理运维效率。
 
看到这里就结束了? 哪有那么简单!在这次的摸索过程中遇到了很多技术问题, 比如:
 
1. powershell 到管道和文件处理的问题;
2. 前面一直讲管理范围和Mailbox Resources Management Agent cmdlet extension agent, 他们又是什么东西? 
3.  脚本里细心的读者会发现我们并没有简单的使用 get-mailbox等传统的Exchange 原生cmdlet来统计数量,这又是为什么? 
4. 如果有些高层管理的专用邮箱数据库我们不希望加入到邮箱自动分配的过程中,该怎么让脚本去甄别隔离 (从思路上来说,搞特殊待遇是不行地,要一视同仁。然实际情况千差万别)

 

大家如果有问题欢迎留言。希望有机会可以深入解析开去。如果有更新我也会再写一篇文章丰富该Exchange功能便利广大使用者!大家也可以关注这个公众号获取动态更新的信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值