前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >国内账号部署Azure私有云,该如何搞定App Service?

国内账号部署Azure私有云,该如何搞定App Service?

作者头像
盆盆
发布2019-04-24 14:12:41
2.5K0
发布2019-04-24 14:12:41
举报
文章被收录于专栏:华来四Azure混合云

今天我们就来聊聊如何用中国区账号搞定App Service这个PaaS的部署!

可能您会说,前段时间不是已经写过一篇类似的文章了吗?(参考这里Azure Stack App Service部署测试),由于那篇文章介绍的是TP3 Refresh,而正式版略有些不同,二来有读者反馈希望能写得更加详细一些,所以借着这次正式版发布,再写篇长文章。

在介绍之前,我们先来看看现在的App Service的功能改进:

  • ADFS模式部署的Azure Stack,也可以部署Azure Function,也可以配置SSO
  • App Service的Worker Tier支持虚拟机扩展集,这样服务管理员可以利用其横向扩展的能力,如附图所示。
  • WebApp/Mobile/API支持Java,如附图所示。

部署前准备工作

首先必须部署SQL资源提供程序(简称SQL RP),请参考以下步骤(本文不再赘述):

https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-sql-resource-provider-deploy

必须注意的是,正式版POC,部署SQL资源提供程序时,默认不再部署SQL实例,所以我们需要自己部署一个SQL实例。可以使用以下Azure Stack的ARM模板部署一台新的虚拟机,但是盆盆个人推荐直接部署在SQL RP这台虚拟机(虚拟机名称默认是SQLVM)上,以便节省一台虚拟机。

https://github.com/Azure/AzureStack-QuickStart-Templates/tree/master/sql-2014-standalone

如果您选择手动部署SQL实例,不妨设置SQL的SA账号密码,还可以把本地管理员(例如sqlrpadmin)设置为SQL管理员。

同时还需要确保Azure Stack默认Windows Server 2016镜像已经安装了KB4025339(对应的msu文件约1GB大小),App Service需要这个补丁,否则App Service的整个部署时间可能长达3-4小时(感谢Larry提醒)!可以到微软官网搜索下载这个补丁,并且用以下方法把补丁离线导入到Windows Server 2016的VHD虚拟硬盘里。

首先确保我们已经导入默认的Windows erver 2016镜像,具体步骤可以参考以下文档:

https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-add-default-image

然后进入到以下目录,双击以下的“Server2016DatacenterFullEval.vhd”文件,这就是Windows Server 2016默认镜像。假设将该VHD文件挂载到H盘符。

"C:\ClusterStorage\Volume1\Shares\SU1_ObjStore\CRP\PlatformImages\d8d72463-412f-4419-a321-d69e3116f3ac\"

然后用管理员权限运行命令行窗口,执行以下命令:

Dism /image:H:\ /add-package /PackagePath:"PathofKB4025339"

命令执行完成后,确保右键单击挂载的H盘符,选择弹出,以退出挂载状态。

生成证书

首先到以下地址下载App Service的部署帮助脚本

http://aka.ms/appsvconmasrc1helper

解压缩后,执行其下的Create-AppServiceCerts.ps1。按照屏幕提示指定PFX证书的私钥保护密码、域名和证书服务器地址。所得证书保存在该脚本所在的目录。

执行App Service安装程序

首先到以下地址下载App Service安装程序:

http://aka.ms/appsvconmasrc1installer

用AzureStack\AzureStackAdmin身份登录主机,并双击打开安装程序,然后在对话框上选择部署选项。

指定Azure Stack的管理员和租户的ARM端点,并指定Azure AD的租户名称。安装程序会自动获取这些信息,一般情况下无需修改。

在以下对话框上点击Connect

会弹出Azure AD账号验证对话框,在此输入Azure Stack部署时的Azure中国区账号和密码。

Azure AD账号验证通过以后,选择所需的Azure Stack管理员订阅名称(默认是Default Provder Subscription),以及数据中心位置(默认是Local)。

然后指定App Service资源管理程序的资源组名称、保存安装脚本和文件的存储账号名称、以及SQL服务器的名称(SQL虚拟机的Public IP对应的域名)、SQL管理员账号和密码。

接下来指定先前所创建的三个证书,以及对应的PFX证书私钥的保护密码。证书名称可以参考附图。

然后指定App Service各个角色服务器的大小和实例数。如果服务器资源足够(不低于128GB),可以选择多个Shared Worker Role。

指定App Service的Windows操作系统镜像,此处建议镜像里已经安装了KB4025339。

指定各个角色的管理员名称和密码。

查看先前所作的选项,并勾选左下方的复选框。

然后安装程序会自动在Azure Stack里创建Blob存储,下载所需的文件、模板和脚本,并上传到Blob存储中,部署App Service资源提供程序(RP),注册DNS、注册App Service RP、注册应用市场项目。在盆盆的环境里,约需要1.5小时。

接下来在Azure Stack的管理员门户上,进入App Service的资源组(默认是AppService_Local),远程桌面登录到CN0-VM,打开桌面上的Web Cloud Management Console。点击左侧的Web Cloud、Managed Servers,可以看到中间详细窗格里的Web Worker的状态是修复中。

等到至少有一台Web Worker的状态为Ready,就可以开始配置SSO了。

配置SSO

在先前下载的脚本里,编辑CreateIdentityApp.ps1这个脚本,将其中的“$AzureStackGraphEnvironment”配置为“AzureChinaCloud”。

确保已经安装Azure Stack的PowerShell环境,可以参考以下文档:

https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-powershell-install

并且已经下载好Azure Stack Tools:

https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-powershell-download

打开PowerShell命令行窗口,进入到Azure Stack Tools所在的目录,然后执行以下命令(YourDomainName请用您自己的Azure中国区域名替换)

Import-Module .\Connect\AzureStack.Connect.psm1 Add-AzureRMEnvironment -Name "AzureStackAdmin" -ArmEndpoint https://adminmanagement.local.azurestack.external $TenantID = Get-AzsDirectoryTenantId -AADTenantName "YourDomainName.partner.onmschina.cn" -EnvironmentName AzureStackAdmin Login-AzureRmAccount -EnvironmentName "AzureStackAdmin" -TenantId $TenantID

然后进入到App Service脚本所在的目录,执行CreateIdentityApp.ps1这个脚本。会提示我们输入Azure中国区的租户名称,并验证Azure AD账号。

接下来指定SSO证书的路径、PFX证书的私钥保护密码、租户ARM端点和Azure Stack域名。

遗憾的是这个脚本在Azure中国区创建了名为"App Service"的服务主体后,会出现报错,应该是无法用Get-AzureRmRoleAssignment这个命令获取该服务主体的RBAC权限(错误信息显示对应脚本的第168行)。

打开CreateIdentityApp.ps1这个脚本,进入到第168行,发现该行命令主要用来获取该服务主体的RBAC权限信息,并用New-AzureRmRoleAssignment这个命令来设置其RBAC权限。可能是由于中国区Azure不支持该PowerShell命令,所以报错。由于我们可以在Azure中国区手动执行这些操作,所以完全可以删掉168-171这段脚本,并保存为新的脚本。

进入Azure中国区的新门户,进入更多服务、订阅、访问控制标识和访问管理。然后选择添加。指定角色为“参与者”,指定服务主体名称为“App Service”,确保该服务主体的App ID和脚本显示的一样。

接下来需要设置该Azure AD服务主体的密钥,这只能在Azure中国的传统门户里执行。可以进入Azure Active Directory,进入“应用程序”,确保显示“我公司拥有的应用程序”,定位到该服务主体的“配置”页面,确保其客户端ID和脚本所显示的一致。在“密钥”部分,指定2年,然后单击底部的保存。

记下所显示的服务主体密钥。

然后重新执行修改后的CreateIdentityApp.ps1脚本,即可生成一个新的脚本UpdateConfigOnController.ps1。这里必须进行修改。请确保将其下的OpenIdConfigurationUrl从"login.microsoftonline.com"改为"login.partner.microsoftonline.cn",如附图所示。

将该脚本UpdateConfigOnController.ps1,和先前生成的SSO证书,复制粘贴到cn01-vm中。打开桌面上的Web Cloud Management Console。在Configuration、Settings部分指定ApplicationClientSecret是先前我们所生成的服务主体密钥。

最后别忘记在Web Cloud Management Console的Web Cloud、Managed Servers,选择修复Managed Server和FrontEnd Server,等状态都显示为Ready,即可完成所需的配置。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 华来四Azure混合云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档