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的管理模型。

  • 订阅

先从我们最熟悉订阅开始,无论是通过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 处获得。

Azure 新的管理模式 —— Resource Manager的更多相关文章

  1. Azure Resource Manager 概述

    应用程序的基础结构通常由许多组件构成:可能有虚拟机.存储帐户和虚拟网络,或 Web 应用.数据库.数据库服务器和第三方服务. 这些组件不会以独立的实体出现,而是以单个实体的相关部件和依赖部件出现. 如 ...

  2. SQL Server 2014 虚拟机的自动备份 (Resource Manager)

    自动备份将在运行 SQL Server 2014 Standard 或 Enterprise 的 Azure VM 上自动为所有现有数据库和新数据库配置托管备份到 Azure. 这样,便可以配置使用持 ...

  3. 排查在 Azure 中创建新 Linux 虚拟机时遇到的 Resource Manager 部署问题

    本文内容 常见问题 收集活动日志 问题:自定义映像:预配错误 问题:自定义/库/应用商店映像:分配失败 后续步骤 尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. ...

  4. 规划将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager

    尽管 Azure 资源管理器提供了许多精彩功能,但请务必计划迁移,以确保一切顺利进行. 花时间进行规划可确保执行迁移活动时不会遇到问题. Note 以下指导的主要参与者为 Azure 客户顾问团队,以 ...

  5. 有关平台支持的从经典部署模型到 Azure Resource Manager 的迁移的技术深入探讨

    本文将深入探讨如何从 Azure 经典部署模型迁移到 Azure Resource Manager 部署模型. 本文将介绍资源和功能级别的资源,让用户了解 Azure 平台如何在两种部署模型之间迁移资 ...

  6. 在 Azure Resource Manager 中为虚拟机设置密钥保管库

    Note Azure 具有两种不同的部署模型,用于创建和处理资源:Resource Manager 模型和经典模型.本文介绍使用 Resource Manager 部署模型.Azure 建议对大多数新 ...

  7. 为 Azure Resource Manager 中的虚拟机设置 WinRM 访问权限

    Azure 服务管理中的 WinRM 与 Azure Resource Manager Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 本 ...

  8. 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移

    本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...

  9. 有关从经典部署模型迁移到 Azure Resource Manager 部署模型的常见问题

    此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...

随机推荐

  1. Blender 之 Splash 代码分析

    注:以下内容基于 Blender 2.7x 版本工程,其它低版本可能有改动. Blender启动完成时,会出现一个画面,英文叫Splash.默认是打开的,可以在设置里关闭.在文件菜单里点击用户首选项( ...

  2. oracle内存粒度

    一,什么是内存粒度? When a database instance starts up, the amount of memory allocated is determined by the a ...

  3. 【leetcode】LRU Cache

    题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...

  4. YUV格式介绍

    原文链接:http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html YUV格式有两大类:planar和packed.对于plana ...

  5. 用WinForm写的员工考勤项目!!!!!!

    先说几句,作为一个还在学习的程序员,掌握的知识有限:但我利用自身所学,给一些像我一样还在学习的码农提供我的绵薄之力! 写的不好,但是尽力了,希望大牛指点.多多吐槽!!! 好了开始说项目需求: 实现新增 ...

  6. trigger() --工作中问题nav样式

    自动执行某元素的某个事件 $("#div").trigger("click");  //让系统自动执行单击事件 适用于nav样式中,下面横线绝对定位于nav.o ...

  7. .NET 项目代码风格要求

    原文:http://kb.cnblogs.com/page/179593/ 项目代码风格要求 PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份&l ...

  8. BZOJ2763 [JLOI2011]飞行路线(SPFA + DP)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=2763 Description Alice和Bob现在要乘飞机旅行,他们选择了一家 ...

  9. 纯css来实现提示框

    用js用多了,就疏忽了最基本的css了---用title属性来实现提示框.下面言归正传------如何用css实现提示框: 1.利用title属性来实现鼠标滑过某个元素时,实现提示整段内容的功能(利用 ...

  10. XCode设置自己windows习惯的快捷键(比如Home、End键)

    Xcode的preference(command+,)中可以设置Key Bindings.绑定自己习惯的快捷键.实测系统快捷键设置同样名字也可以生效,但操作比较繁琐这里就不介绍了. 1.打开Xcode ...