十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750
专注于为中小企业提供成都做网站、网站设计、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业雅安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
需求描述:
使用一个公网IP发布CA、Exchange及OOS到外网,提供给Internet用户访问,本案采用IIS ARR实现相关应用的发布。
环境描述:
Exchange2016服务器两台,对外域名yuntcloud.net,两台服务器采用DAG,DAG的VIP为192.168.0.30
CA为主域服务器,IP:192.168.0.194
OOS服务器两台,采用NLB群集,单播,VIP:192.168.0.32
IIS ARR为反向代理服务器,两台,采用NLB群集,单播,VIP:192.168.0.31
操作步骤如下:
步骤1、安装ARR
在IISARR服务器上安装有两块网卡,一个用于内部网络,一个用于外部网络。(可以根据需要使用一块网卡也可以)
iis-arr-01的内网IP:192.168.0.115,外网IP:192.168.0.133
iis-arr-02的内网IP:192.168.0.112,外网IP:192.168.0.132
(微软ARR NLB环境官方文章是单网卡,没加域,修改计算机Netbios名称)
如果没有使用内部DNS服务器,应该更新hosts文件,确保可以解析Exchange、OOS和发布的URL名称。
操作系统使用windows server 2012 R2,计算机名命名为iis-arr-01.zh-yunner.com和iis-arr-02.zh-winner.com(注:不用加域,也是支持Windows server 2016环境,为什么我没选2016而是用2012 R2环境,我也不记得为什么了,反正2012 R2和2016都是受支持的)
软件下载及相关介绍及操作具体可参考如下网站:
https://www.iis.net/downloads/microsoft/application-request-routing
https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/achieving-high-availability-and-scalability-arr-and-nlb
https://blogs.technet.microsoft.com/exchange/2013/07/19/part-1-reverse-proxy-for-exchange-server-2013-using-iis-arr/
https://blogs.technet.microsoft.com/nexthop/2013/02/19/using-iis-arr-as-a-reverse-proxy-for-lync-server-2013/
https://technet.microsoft.com/zh-cn/library/jj219455.aspx
http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/
步骤2、IIS-ARR-01更改Netbios名称,不需要加域
步骤3、防火墙启用文件共享
步骤4、防火墙启用远程桌面
步骤5、在内部接口上创建连接到客户端或服务器所在的所有内部网络的永久静态路由,我们设置指向内部网络的永久静态路由,参考命令如下:
route add 192.168.0.0 mask 255.255.0.0 192.168.0.253 -p
[注:由于我环境的两个IIS ARR服务器均为虚拟机,内网卡和外网卡的网段一致,已经有了到网关的路由,所以就不添加了]
在两个IIS ARR服务器安装NLB组件,
步骤6、由于都是hyper-V虚拟机,故采用单播,且启用MAC地址欺骗。(两块网卡都启用MAC地址欺骗)
步骤7、使用WAN口网卡做NLB,外网访问的时候因为是连接到WAN口
步骤8、添加IIS ARR群集IP:192.168.0.31
步骤9、选择单播,保持默认即可,完整Internet名称此处不用填写
步骤10、添加IIS ARR两台机器到NLB群集
步骤11、下面为ARR的两台虚拟机及群集VIP的ARP信息,如果采用多播的话,我们需要ARP静态绑定到出接口G 0/0/1(我们目前的环境为防火墙为华为USG6350防火墙,三层交换机为华为S5700,在下联二层交换机,ARR虚拟机的两台宿主服务器都接在二层交换机,连接到上级的三层交换机接口G 0/0/1)
所以如果采用多播的方式的话ARP需要绑定并设置出接口端口为G 0/0/1,由于是测试环境,目前使用的是单播。
因为内部访问不用经过ARR反向代理,所以Mail、autodiscover、crl、oos及所有域名记录都指向到自己本身地址。
192.168.0.30为两台Exchange2016的DAG的VIP地址
192.168.0.31为两台ARR的NLB的VIP地址
192.168.0.32为两台OOS的NLB的VIP地址
192.168.0.194为CA服务器IP,用于发布crld吊销列表
步骤12、DNS服务器上新增两条A记录,IIS-ARR-01的内网卡IP:192.168.0.115,IIS-ARR-02的内网卡IP:192.168.0.112
步骤13、iis-arr-01和iis-arr-02 host文件都新加exchange内部和外部虚拟目录名称mail.yuntcloud.net和iis-arr两台计算机的fqdn完整计算机名称及Netbios名称,不填写可能因为解析不了造成NLB群集成员丢失,Exchange服务器的FQDN及OOS、CRL名称也需要加上。
步骤14、在IIS ARR服务器上安装ARR3.0。
https://www.iis.net/downloads/microsoft/application-request-routing
步骤15、安装完成后,在IIS管理器中出现了Server Farms
步骤16、选择IIS-ARR-01的default web site,我们需要给IIS ARR的两台服务器绑定证书
步骤17、拷贝之前我们已经导出的Exchange证书,选择IIS根目录,切换到证书,选择导入证书
步骤18、导入后入下图
步骤19、在默认站点中绑定证书
步骤20、如果需要使用pop和imap,注意域名外网发布,建议外网mail和pop使用同一个公网IP,客户端pop模式可以设置pop或者mail域名。
域名名称信息如下:
证书使用者
CN = mail.yuntcloud.net
OU = IT
O = 风云再起信息科技有限公司
L = 珠海市
S = 广东省
C = CN
使用者可选名称
DNS Name=mail.yuntcloud.net
DNS Name=AutoDiscover.yuntcloud.net
DNS Name=zh-winner.com
DNS Name=yuntcloud.net
DNS Name=pop.yuntcloud.net
DNS Name=imap.yuntcloud.net
DNS Name=smtp.yuntcloud.net
DNS Name=ex2016.zh-winner.com
DNS Name=ex2016-02.zh-winner.com
DNS Name=oos.yuntcloud.net
步骤21、同时安装CA根证书,安装后我们点击看证书路径,可以发现CA根证书已经导入好
步骤22. 下面开始配置Exchange服务器所需要的服务器场,配置Server Farms(注:以下为给每个Exchange目录设置一个目录路径,可以对每个http路径健康检测,因为我们的环境都是使用同一个域名mail,如是和我环境一致,请跳过此步骤)
针对每个单独的协议,创建单独的Server Farms和URL重写规则,这样就可以对每个协议执行健康检查,重而提供真正的反向代理和负载均衡配置。
下面是IIS ARR实现每个协议的健康检查
1)确保每个发布的协议都使用不同的命名
Get-OWAVirtualDirectory | FL Server, InternalURL, ExternalURL
Server : TS-E2013-CA-01
InternalUrl : https://mail.contoso.com/OWA
ExternalUrl : https://mail.contoso.com/OWA
Server : TS-E2013-CA-02
InternalUrl : https://mail.contoso.com/OWA
ExternalUrl : https://mail.contoso.com/OWA
Get-ECPVirtualDirectory | Fl Server, InternalURL, ExternalURL
Server : TS-E2013-CA-01
InternalUrl : https://ecp.contoso.com/ECP
ExternalUrl : https://ecp.contoso.com/ECP
Server : TS-E2013-CA-02
InternalUrl : https://ecp.contoso.com/ECP
ExternalUrl : https://ecp.contoso.com/ECP
Get-WebServicesVirtualDirectory | fl Server, InternalURL, ExternalURL
Server : TS-E2013-CA-01
InternalUrl : https://ews.contoso.com/EWS/Exchange.asmx
ExternalUrl : https://ews.contoso.com/EWS/Exchange.asmx
Server : TS-E2013-CA-02
InternalUrl : https://ews.contoso.com/EWS/Exchange.asmx
ExternalUrl : https://ews.contoso.com/EWS/Exchange.asmx
Get-ActiveSyncVirtualDirectory | fl server, InternalURL, ExternalURL
Server : TS-E2013-CA-01
InternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync
ExternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync
Server : TS-E2013-CA-02
InternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync
ExternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync
Get-OABVirtualDirectory | fl server, InternalURL, ExternalURL
Server : TS-E2013-CA-01
InternalUrl : https://oab.contoso.com/OAB
ExternalUrl : https://oab.contoso.com/OAB
Server : TS-E2013-CA-02
InternalUrl : https://oab.contoso.com/OAB
ExternalUrl : https://oab.contoso.com/OAB
Get-OutlookAnywhere | fl server, *hostname*
Server : TS-E2013-CA-01
ExternalHostname : oa.contoso.com
InternalHostname : oa.contoso.com
Server : TS-E2013-CA-02
ExternalHostname : oa.contoso.com
InternalHostname : oa.contoso.com
2)创建Server Farms,每个协议的服务器场创建完成后,添加健康测试URL
健康测试格式https://FQDN/ProtocolName/HealthCheck.htm
Server Farm | Health Test URL |
autodiscover.contoso.com | https://autodiscover.contoso.com/Autodiscover/HealthCheck.htm |
OA.contoso.com | https://oa.contoso.com/rpc/HealthCheck.htm |
mail.contoso.com | https://mail.contoso.com/owa/HealthCheck.htm |
ECP.contoso.com | https://ecp.contoso.com/ecp/HealthCheck.htm |
EWS.contoso.com | https://ews.contoso.com/ews/HealthCheck.htm |
OAB.contoso.com | https://oab.contoso.com/oab/HealthCheck.htm |
EAS.contoso.com | https://eas.contoso.com/Microsoft-server-ActiveSync/HealthCheck.htm |
Mp.contoso.com | https://mp.contoso.com/mapi/HealthCheck.htm |
步骤23、我们这里使用的同样的虚拟目录,ex2016和ex2016-02服务器内部和外部都使用mail.yuntcloud.net
步骤24、切换到server farms,选择create server farm
步骤25、server farm name:mail.yunrcloud.net(或者是任何一个可标识此server farm的名称都可以)
步骤26、添加两台Exchange服务器名称
步骤27、添加后如下图,当然这里我们也可以从对应的服务器场随时移除指定服务器
步骤28、点击是
步骤29、选择建好的服务器场mail.yuntcloud.net
步骤30、继续选择caching,反选Enable disk cache
步骤31、Health Test设置,如果对应的Server Farms是单机环境此处可以为空,如果有多台服务器,此处则需填写相关URL,才能对相关服务器执行健康检测
Health Test URL:https://mail.yuntcloud.net/owa/healthcheck.htm
Interval(seconds):5
Time-out(seconds): 30
Acceptable status codes: 200
步骤31、我的环境是IIS ARR 3.0,Load balance保持默认即可,如果是IIS ARR 2.5, 此处选择Least Current Request.
步骤32、monitoring and management,我们可以看到添加的两台服务器状态,health status为unhealthy,说明这个服务器相关服务不正常或者宕机,客户端请求就不会在向对应的服务器继续发送。
步骤33、proxy设置
Time-out(seconds): 200
Response buffer threshold:0
步骤34、routing rules,反选enable ssl offloading
步骤35、不带SSL的因为用不到,此处删除或者禁用
步骤36、选择URL重写,编辑入站规则
步骤37、添加条件
条件输入:{HTTP_HOST}
模式:mail.yuntcloud.net
步骤38、添加后如下
步骤39、操作,操作属性,选择对应的服务器场
步骤40、类似步骤设置服务器场,autodiscover.yuntcloud.net
步骤41、设置完后,回到IIS根目录,设置允许的最大内容长度如下
步骤42、设置http到https的重定向
因为我们习惯输入网址mail.yuntcloud.net或者是http://mail.yuntcloud.net,所以我们需要在新建各规则,80跳转到https
名称:Redirect To HTTPS
步骤43、编辑入站规则
条件 {SERVER_PORT},类型 与模式匹配,模式 80
条件 {HTTP_HOST},类型 与模式匹配,模式 mail.yuntcloud.net
步骤44、操作 方案https://mail.yuntcloud.net/{R:0},停止处理后续规则
步骤45、两台ARR机器同样的操作,设置后,就实现了80到443的跳转
步骤46、因为IIS ARR只能代理80和443类似的HTTP端口,所以外网80和443端口指向到IIS ARR的NLB VIP地址,SMTP、POP及IMAP不能通过IIS ARR实现反向代理,所以只能指向到DAG的VIP:192.168.0.30,内网不用反向代理
步骤47、内网DNS记录如下:
步骤48、内网端口映射如下:
192.168.0.31为IIS ARR的NLB VIP地址
192.168.0.30为DAG的VIP地址
步骤49、外网域名设置如下:
所有相关域名都指向到公网IP:221.4.214.186
步骤50、客户端POP和IMAP设置如下:
分别关机IIS ARR中的一台和Exchange 2016中的一台,外网outlook均能在2分钟内完成故障转移和切换,停掉Exchange的OWA IIS应用池,outlook和owa将不会在访问故障的Exchange服务器,说明IIS ARR实现了应用层的7层负载均衡。(注:NLB为第三层网络层的负载均衡,只能识别到IP的非正常才切换,第四层负载均衡为IP加端口的传输层负载均衡的硬件负载均衡设备)
步骤51、如果需要IIS ARR发布Exchange同时发布OOS,我们需要首先修改ARR的证书以便包括Exchange和OOS的相关证书名称,为了统一,我把Exchange、OOS及ARR都更换为包括所有名称的证书。
步骤52、ARR的证书包括OOS的域名记录
证书使用者
CN = mail.yuntcloud.net
OU = IT
O = 风云再起信息科技有限公司
L = 珠海市
S = 广东省
C = CN
使用者可选名称
DNS Name=mail.yuntcloud.net
DNS Name=AutoDiscover.yuntcloud.net
DNS Name=zh-winner.com
DNS Name=yuntcloud.net
DNS Name=pop.yuntcloud.net
DNS Name=imap.yuntcloud.net
DNS Name=smtp.yuntcloud.net
DNS Name=ex2016.zh-winner.com
DNS Name=ex2016-02.zh-winner.com
DNS Name=oos.yuntcloud.net
步骤53、ARR的HOST记录如下
步骤54、创建office online server 对应的服务器场
参考如下网址:
http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/
步骤55、创建所需的服务器场,如果更换证书,需要重建对应的服务器场
New-OfficeWebAppsFarm -InternalURL "https://oos.yuntcloud.net" -ExternalURL "https://oos.yuntcloud.net" -CertificateName arr -SSLOffloaded -AllowHttp -EditingEnabled
(注:-SSLOffloaded允许卸载到负载平衡器的 SSL 端接)
步骤56、加oos02到服务器场
New-OfficeWebAppsMachine -MachineToJoin "oos.zh-winner.com"
步骤57、我们可以看到oos及oos02都加到了同一个服务器场
步骤58、场名:oos.yuntcloud.net
步骤59、添加对应的OOS服务器
步骤60、Caching设置如下
步骤61、Heath Test设置如下(如果有2台以上的服务器组成服务器场,这个就需要设置,否则关机一台后服务将可能打不开或者反应特别慢)
URL:https://oos.yuntcloud.net/hosting/discovery/healthcheck.htm
步骤62、Health status不健康的不会发送代理请求,否则即使关机也会显示为healthy,会继续接受发送请求。
步骤63、Proxy设置如下,time-out设置为200
Response设置为0
Routing Rules禁用SSL offloading
禁用或者删除没SSL的规则
步骤64、如果考虑同时使用HTTP的话,我们就保留这条规则
步骤65、相关设置如下,这样设置后,在外面,oos也能通过80端口访问
步骤66、继续设置带SSL的规则
使用选择正则表达式,模式(.*)
选择条件,添加,条件输入{HTTP_HOST},与模式匹配,模式:oos.yuntcloud.net
步骤67、操作选择路由到服务器场,选择对应的oos场
步骤68、我们可以继续发布CA的吊销列表
步骤69、添加server farm name:crl.yuntcloud.net
步骤70、添加dc01.zh-winner.com到对应的服务器场
步骤71、选择是
禁用带SSL的CRL规则
入站规则
条件输入:{HTTPS}
模式:^OFF$
步骤72、继续发布CA的Certsrv目录
在万网新增dc01记录,用于客户端自行下载CA根证书
步骤73、ARR的HOST文件设置如下,添加crl及dc01的内网FQDN地址
步骤74、create server farm…
步骤75、server farm name:dc01.yuntcloud.net
步骤76、server address:dc01.zh-winner.com
步骤77、选择是
反选Enable disl cache
Time-out:200
Response buffer threshold:0
反选Enable SSL offloading
URL重写禁用带SSL的
使用选择正则表达式,模式(.*)
添加条件如下,禁止https的访问,只允许http访问
编辑入站规则如下
最后设置效果如下
操作,选择对应的服务器场