Azure Stack混合云的POC正式版已经发布了,盆盆已经写了十余篇有关Azure Stack的文章,您可以点击公众号右下方的菜单去阅读,有图有真相!
今天来讲讲在Azure上部署Azure Stack的技巧。
首先为什么要在Azure上部署Azure Stack?
大家知道Azure Stack的POC环境对硬件要求略高,而且由于部署在内网,访问起来也略有不便。所以Azure国际版推出支持嵌套虚拟化的Ev3和Dv3机型后,就可以拿来作为Azure Stack的部署平台。
这里推荐直接用Azure虚拟机作为Azure Stack的宿主机,本文不准备详细介绍如何在Azure上部署Azure Stack,而是着重于介绍其技巧。要了解如何在Azure上部署Azure Stack的详细步骤,可以在公众号里回复masonazure,即可查看详细步骤。
什么时候绕过物理机检测?
默认情况下,Azure Stack部署脚本会对主机进行检测,以便确认是否属于物理机,如果发现是虚拟机,则会拒绝执行。这里可以修改检测脚本,以便绕过物理机检测。
什么时候修改?需要等部署脚本执行,开始解压缩nuget包以后,到以下路径找到BareMetal.Tests.ps1脚本,将其中的3个$isVirtualizedDeployment参数前的"-not"删除。
C:CloudDeploymentRolesPhysicalMachinesTests
确保域控和宿主机时间同步
Azure Stack基础架构部署时,首先会创建域控,然后尝试将宿主机加入域。这时候可能会出现WINRM报错,如附图所示。
需要借助Hyper-V控制台登录到域控,执行Enable-WSManCredSSP -Role Server
同时盆盆还发现域控和宿主机可能会有时间不同步的问题,请登录到域控,在Server Core窗口里输入sconfig,然后输入9,即可查看时区和时间,请将时区和时间设置为和宿主机一样。
接下来回到宿主机,执行以下命令:
Set-Item wsman:localhostclienttrustedhosts -Value * Enable-WSManCredSSP -Role Client -DelegateComputer *
然后启动本地组策略编辑器,进入Local Computer Policy > Computer Configuration > Administrative Templates > System > Credential Delegation
启用Allow Delegating Fresh Credentials with NTLM-only Server Authentication 策略项并设置值为 WSMAN/*
完成后,用-rerun参数从断点重新启动Azure Stack的部署。
MonitoringAgent配置错误
如果Azure Stack部署时出现MonitoringAgent配置错误,应该是由于WINRM配置问题,导致部署脚本无法在宿主机上启动PowerShell Remote Session。
确保在宿主机上运行以下命令:
Enable-WSManCredSSP -Role Server Set-Item wsman:localhostclienttrustedhosts -Value * Enable-WSManCredSSP -Role Client -DelegateComputer *
并且确保在宿主机上启用以下组策略项,并都指定为wsman/*:
Allow Delegating Fresh Credentials Allow Delegating Fresh Credentials with NTLM-only Server Authentication
然后用-rerun参数从断点重新启动Azure Stack的部署。
如何实现和谐关机
由于Azure VM代价昂贵,所以不用时,一定记得关机。
但是如何关机,则大有讲究。不能直接关闭宿主机,否则可能导致Azure Stack工作不正常,这样就只能重装了!
可以在宿主机里,用以下命令,用PriviligedEndpoint登录到Azs-ERCS01这台虚拟机,然后执行Stop-AzureStack关机,这样系统会按照正确的顺序自己执行关机步骤,并且在下次启动时,执行正确的开启任务。将此处的密码改为部署时指定的参数。
$CloudAdminPass = ConvertTo-SecureString "YourPassword" -AsPlainText -Force $CloudAdminCreds = New-Object System.Management.Automation.PSCredential ("azurestackcloudadmin", $CloudAdminPass) enter-pssession -computername azs-ercs01 -credential $CloudAdminCreds -ConfigurationName PrivilegedEndpoint
等Azure VM(也就是宿主机)关机以后,建议回到Azure门户,对虚拟机执行deprovision的操作,以进一步降低费用。
开机出错怎么办?
如果按照上述说明执行和谐关机,然后重新开机,有时候还会出现问题怎么办?
有时候我们会遇到以下故障,租户门户和管理员门户有可能无法正常访问。
这时候需要查看这两个门户的IIS网站是否正常启动。管理员门户对应Azs-WAS01虚拟机,租户门户对应Azs-WASP01虚拟机,由于两台虚拟机都是Server Core,所以我们需要在宿主机里通过IIS管理器远程管理。
首先需要修改这两台虚拟机的注册表,确保将以下注册表键值设置为1。并且确保开启Web远程管理服务
然后用IIS管理器远程连接到这两台虚拟机。
分别查看应用程序池,并启动其中状态为Stopped的应用程序池。
接下来还需要确认XRP的微服务状态正常,请在宿主机里访问以下网址:
http://azs-xrp01:19007
然后在弹出对话框里指定用户名为azurestackadmin,密码为部署时指定的参数。
确保打开的Service Fabric Explorer界面里看不到任何错误,可能需要多刷新几次,如果发现CRP等服务有故障,只能重新部署。
然后回到管理员门户,查看是否有Alert。