zoukankan      html  css  js  c++  java
  • Azure 新的管理模式 —— Resource Manager

    Azure 新的管理模式 —— Resource Manager

    警告

    您当前查看的页面是未经授权的转载!
    如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/azrue-resource-manager-introduction.html

    提示

    更新时间:2016年01月02日。

    Azure 资源管理器 ( Azure Resource Manager ) 是微软新提供的一种管理Azure资源的一种模式。 这种管理的思想不仅出现在命令行和PowerShell中,也出现在新版的 Azure Portal 中。 与传统的Service Management模式面向服务不同,资源组模型提供了更好的抽象。

    在最新版Azure中,不同的资源将在逻辑上划分成不同的资源组(Resource Group)。 每个订阅可以包含多个资源组。

    注解

    Azure 资源管理器同样适用于由世纪互联运营的 Windows Azure,但不是支持所有内容。

    为什么使用资源管理器

    在使用命令行(Powershell)进行自动化管理的时候,可以使用传统的面向功能的命令,也可以使用面向资源的命令。

    使用资源管理器模型有如下的优点:

    • 将不同的资源抽象成一个资源组,方便对其进行整体管理
    • 可以同步调整一个资源组内资源是使用情况
    • 使用声明式的语法(json)来创建资源
    • 使用 OAuth 2.0 或基于角色进行权限分配
    • 账单可以安装资源组进行整合(只是方便查看,付费仍需按照订阅来)

    在资源管理器模型下,虚拟机已经不需要再依赖于云服务了。 虚拟机的网卡也不再只有一块,我们可以根据需要来方便的管理虚拟机了。

    提示

    讲个历史,早期的Azure是不提供虚拟机的,也就是说在设计之出没有考虑到IaaS层。 后来根据客户的要求,硬生生添加上去了,是嵌套进云服务中的,有点不和逻辑。 同时导致存储服务不太能跟上大量IOPS的要求, 而后又搞出一套高级存储服务来提供支持。

    资源管理模型

    在使用资源组(Resource Group)之前, 首先应该了解Azure的管理模型。

    https://qinblog.blob.core.windows.net/images/resource-manager-overview.png
    • 订阅

    先从我们最熟悉订阅开始,无论是通过MSDN,还是自己花钱,我们都会首先创建一个订阅。 订阅是计费的单位,我们需要为每个订阅指定付款方式(信用卡、MSDN权益预付等), 随后我们就可以在这个订阅下面创建虚拟机等资源啦。

    提示

    如果你真的只是把Azure当作一个虚拟机平台,那就太浪费了。(而且价格也比阿里云等的贵,尤其是由世纪互联运营的)

    • 资源组

    当我们使用管理Portal创建一个虚拟机的时候,默认会创建一个资源组,并把虚拟机放入其中。 当我们为此虚拟机创建了虚拟IP(VIP)/公用IP(PIP)时,这个IP地址也会加入虚拟机所在的资源组。 对虚拟机附加的磁盘也会放到相同的资源组内。 这就方便了我们对这个虚拟机的管理,比如删除时只要删除资源组即可,而不用像以前一样需要逐个服务地删除。

    如果你启用了负载均衡, 还会涉及到故障域的概念(确保位于不同物理机架)和更新域(依次完成应用的升级), 而这些都要求在相同的资源组中。

    • Azure活动目录(Azure Active Directory)

    其实,在创建订阅之前,是先创建了一个活动目录的。 如果你使用微软账号创建的订阅,会被分配一个类似 @<youraccuont>live.onmicrosoft.com 的域名作为活动目录的域名。 如果你使用世纪互联的服务,会被分配一个类似 @<yourdomain>.partner.onmschina.cn 的域名作为活动目录的域名。

    被分配的域名不可更改,但我们可以使用自己的域名作为主域名。

    活动目录是微软管理用户、用户组和计算机的手段,现在利用Azure活动目录来进行Azure订阅的管理。

    如果你的企业(或者你自己)有了一个活动目录,可以把它与Azure同步,这样就可以同步用户了(甚至可以使用单点登录,不过配置起来不容易)。

    • 角色

    引入活动目录的目的就是为了给用户(用户组、应用程序)一个角色。 我们可以对一个角色进行权限的定制,这样就有了基于角色的访问控制。

    • 管理

    当你(或者你的程序)需要管理Azure资源的时候, 使用自己的用户名/密码(或者用户名/证书)来登录, 随后可以使用不同的管理工具进行管理。

    注解

    对于一个用户而言,用户名类似与 admin@qin.nz ,而对于应用程序而已,用户名类似与 C97C267B-698B-44B0-8A7F-F0F3CCADE557

    如何使用

    • 如果你和我一样,在Windows平台上使用 Azure PowerShell, 那么可以使用包含 -AzureRm 的 Cmdlet,可以使用如下命令查找可用的命令。
    Get-Command -Name *-AzureRm*
    
    • 如果你在需要在不同平台上使用 Azure CLI ,默认使用的是面向功能的命令模式,需要切换到 Azure Resource Manager (arm) 模式。
    azure config mode arm
    

    警告

    本文暂时仅使用 Azure PowerShell 做介绍

    登录

    • 对于使用Microsoft Azure的,直接运行命令并在网页中登录。
    Login-AzureRmAccount
    
    • 对于使用世纪互联的Azure,请使用下面的命令:
    Login-AzureRmAccount -EnvironmentName AzureChinaCloud
    
    • 对于想尝试登录美国政府用的Azure,可以试试下面的命令:
    Login-AzureRmAccount -EnvironmentName AzureUSGovernment
    

    选择订阅

    如果你的账号可以管理多个订阅,而你需要操作的又不是默认订阅,使用下面的命令切换。 (我踩过这个坑,还浪费了一次全球Azure的技术支持)

    Select-AzureRmSubscription -SubscriptionId <your-subscription-id>
    

    资源组

    在新的 Azure Portal 中,当我们创建一个新的资源的时候都需要选择或新建一个资源组。

    以前的门户中没有明确的给出资源组的概念,如果在同一数据中心创建了很多个免费的Web应用(以前称为网站),当需要升级其中一个的时候, 不得不通过Powershell先更改资源组后才能实现仅升级一个Web应用。

    注意

    请谨慎选择资源组,虽然大部分资源在随后可以更改资源组(使用命令行或Powershell),但并不是所有的资源在选定资源组后都可以更改。

    使用下面的命令可以查看现有的资源组。

    Get-AzureRmResourceGroup
    

    Resource providers (资源提供商)

    资源管理器的方式是对资源进行了抽象;

    Get-AzureRmResourceProvider
    

    同时,把不同的Azure功能抽象成不同的资源提供商,以我的账号为例,我注册了以下提供商的资源(未完整列出)。 注意到,其中不仅有Microsoft开头的,还有第三方的资源,如 Sendgrid 和 ClearDB 。

    注解

    由世纪互联运营的 Windows Azure 目前只有10种资源提供商,数量远低于 Microsoft Azure 提供的。

    • Microsoft.ApiManagement
    • Microsoft.AppService
    • Microsoft.ClassicStorage
    • Microsoft.Compute
    • Microsoft.OperationalInsights
    • Microsoft.Network
    • Sendgrid.Email
    • SuccessBricks.ClearDB
    • microsoft.support

    不同的资源提供商不一定在所有数据中心都提供服务,如 Microsoft.OperationalInsights 仅在 East US 和 West Europe 提供。

    某一个提供商可以提供多种类型的资源,每种资源类型也可能在不同数据中心提供。 如 Microsoft.Network 可以提供如下的资源类型(未完整列出):

    • virtualNetworks 虚拟网络(可用于私有云和公有云对接)
    • publicIPAddresses 公有IP
    • loadBalancers 负载均衡
    • dnszones DNS托管
    • dnszones/A DNS托管(IPv4地址解析)
    • dnszones/CNAME DNS托管(别名解析)

    每一种资源都是可以通过 REST API 来进行管理的。 Azure 作为边开发边商用的东西,API 是经常变的!版本号都是根据年月来命名的。

    权限控制

    细粒度的权限控制是我想要研究一下资源管理器的根本原因。

    角色(Role)

    Microsoft Azure 内置了以下几种角色(世纪互联提供其中23种),可以使用 Get-AzureRmRoleDefinition 查看最新角色。

    • API Management Service Contributor
    • Application Insights Component Contributor
    • Automation Operator
    • BizTalk Contributor
    • Classic Network Contributor
    • Classic Storage Account Contributor
    • Classic Virtual Machine Contributor
    • ClearDB MySQL DB Contributor
    • Contributor
    • Data Factory Contributor
    • Data Lake Analytics Developer
    • DevTest Labs User
    • DNS Zone Contributor
    • DocumentDB Account Contributor
    • Intelligent Systems Account Contributor
    • Network Contributor
    • New Relic APM Account Contributor
    • Owner
    • Reader
    • Redis Cache Contributor
    • Scheduler Job Collections Contributor
    • Search Service Contributor
    • Security Manager
    • SQL DB Contributor
    • SQL Security Manager
    • SQL Server Contributor
    • Storage Account Contributor
    • Traffic Manager Contributor
    • User Access Administrator
    • Virtual Machine Contributor
    • Web Plan Contributor
    • Website Contributor

    操作 (Action / Operation)

    截至2015年底,Microsoft Azure支持的操作类型多达970种(世纪互联支持316种), 某一种角色包含了多种类型的操作。 可以使用以下命令查看全部操作。

    Get-AzureRmProviderOperation -OperationSearchString *
    

    例如,”读取当前订阅包含的资源列表”

    Operation         : Microsoft.Resources/subscriptions/resources/read
    OperationName     : Get Subscription Resources
    ProviderNamespace : Microsoft Resources
    ResourceName      : Subscription Resource
    Description       : Gets resources of a subscription.
    

    角色与操作

    对于内置的角色而已,每一中角色都包含了允许的一组操作。

    例如 Reader 角色可以访问所有以 read 结尾的操作。

    Name             : Reader
    Id               : acdd72a7-3385-48ef-bd42-f606fba81ae7
    IsCustom         : False
    Description      : Lets you view everything, but not make any changes.
    Actions          : {*/read}
    NotActions       : {}
    AssignableScopes : {/}
    

    DNS Zone Contributor 除了可以管理DNS记录外, 还有登录验证的读取,资源组的读取,Insights提醒管理的权限, 还可以像微软提出技术支持请求。

    Name             : DNS Zone Contributor
    Id               : befefa01-2a29-4197-83a8-272ff33ce314
    IsCustom         : False
    Description      : Lets you manage DNS zones and record sets in Azure DNS, but does not let you
                       control who has access to them.
    Actions          : {Microsoft.Authorization/*/read, Microsoft.Insights/alertRules/*,
                        Microsoft.Network/dnsZones/*, Microsoft.Resources/deployments/*,
                        Microsoft.Resources/subscriptions/resourceGroups/read,Microsoft.Support/*}
    NotActions       : {}
    AssignableScopes : {/}
    

    授予权限

    用户/用户组/应用程序可以被授予多个角色,而每个角色具有一些操作的权限,从而使用户/用户组/应用程序有权操作Azure。

    例如:授予用户(要求AD中已存在) user@qin.nz 全局读取权限(由角色 Reader 定义)

    New-AzureRmRoleAssignment -RoleDefinitionName Reader -SignInName user@qin.nz
    

    到此为止,我已经把 Azure 中的资源管理器模型的设计思想和简单的使用思路做了介绍。 但并没有对其中细节的技术问题给出解决方案,请各位参考下面的更多资源。

    声明 知识共享许可协议

    Azure 新的管理模式 —— Resource Manager勤奋的小孩 创作,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
    本许可协议授权之外的使用权限可以从 http://space.cnblogs.com/msg/send/qin-nz 处获得。

  • 相关阅读:
    使用ssh公钥实现ssh免密码登录
    如何定义领域模型(概念模型)
    17.python字符编码检测——chardet
    21.python对象的浅拷贝和深拷贝
    15.序列化python对象
    18.python的打包和发布
    16.python的网络编程
    13.python的文件操作
    linux下python、django框架的配置
    14.python的xml操作
  • 原文地址:https://www.cnblogs.com/qin-nz/p/azrue-resource-manager-introduction.html
Copyright © 2011-2022 走看看