在 Azure 中使用公用 IP 创建多 NIC VM
Russ Slaten 2014年
11 月 18日下午 4点
我们最近宣布了支持具有多个网络接口控制器
(NIC) 的虚拟机 (VM)。我仍在努力了解此功能适用的所有新场景,但首先,我希望亲自测试一下这项功能。
我的方案是通过 PowerShell使用实例级公用
IP地址 (PIP)构建一个具有两个 NIC的VM,一个用于后端子网,另一个用于前端子网。PIP向
VM 提供自己的公用IP地址,此地址与分配给 VM所在云服务的虚拟 IP地址(VIP)不同。二者最大的区别在于,PIP是完全开放的,而使用
VIP时需要在该云服务内的 VM上为要访问的所有内容本质上设置端口转发规则。这也意味着,如果您要使用 PIP,您应该在
VM上运行某种防火墙。
方案示意图
步骤概览
1. 选择在 Azure内具有唯一性的唯一名称,以用于下面的步骤
2. 创建虚拟网络 (VNET)
3. 更新 Azure PowerShell
4. 保存 Azure订阅设置文件
5. 运行 PowerShell脚本
6. 验证配置
详细步骤
- 首先选择一个在 Azure 内具有唯一性的名称。我们要将此名称用于 VNET、云服务、VM、存储和 PIP。名称必须全部小写。在本例中,将使用 rslatendemo。
- 下一步,我们需要登录到 Azure 门户并创建一个新的 VNET。请使用与此处相同的参数,因为脚本需要使用这些参数才能完成。
- 转至 Networks(网络)并单击 New(新建)
- 单击 Custom Create(自定义创建)
- 在 Name(名称)中键入您选择的唯一名称,选择 South Central US(美国中南部)作为Location(位置),然后单击Next(下一步)两次
- 配置地址空间: 192.168.0.0/21
- 配置两个新子网:
- 前端: 192.168.0.0/24
- 后端: 192.168.1.0/24
- 单击 OK(确定)
![]()
- 更新您 PC 上的 Azure PowerShell,以便能够使用新的 Azure cmdlet:http://www.windowsazure.cn/documentation/articles/install-configure-powershell/
- 将 Azure 订阅文件保存到本地。您可以在此处下载您的 Azure 订阅文件:https://manage.windowsazure.cn/publishsettings/
- 运行 CreateMultiNICPIPVM.ps1 脚本。
脚本操作
- 使用您的 Azure 设置文件登录
- 创建新存储帐户
- 创建新存储容器
- 创建新云服务
- 在您之前创建的 VNET 中创建一个具有两个 NIC 和一个公用 IP 的新 VM。此 VM 将运行 Windows Server 2012 R2,采用大尺寸 (A3) 以支持多个 NIC,它位于美国中南部地区,并使用您之前在 VNET 中创建的子网。
脚本参数
|
名称 |
描述 |
示例 |
|
azureSettingsFile |
设置文件的路径 |
c:\temp\rslatendemo.publishsettings |
|
azureName |
之前选择的唯一名称 |
rslatendemo |
|
adminUserName |
管理员用户名 |
rslatendemo |
|
adminPassword |
管理员用户密码 |
脚本示例
.\CreateMultiNICPIPVM.ps1–azureSettingsFile c:\temp\rslatendemo.publishsettings –azureName rslatendemo–adminUserName rslatendemo –adminPasswordP@SSw0rd1
验证配置
脚本应该运行并在New-AzureVMcmdlet下方显示 OperationStatus:Succeeded。大约 10分钟后,VM应该会开始运转,您可能需要刷新浏览器才能看到我们使用此脚本创建的对象。
- 登录门户,找到所创建的 VM 并单击它,然后转至 Dashboard(仪表板)。记下用作 VIP 的 IP 地址。我的示例中为 23.102.153.182。
![]()
- 单击 Connect(连接)并通过 RDP 登录到 VM。打开 IE 并在 Bing 中搜索“What is my IP Address”(我的 IP 地址是什么)。您可能需要将 Bing 添加到受信任的站点。记下此 IP,在我的示例中为 23.98.147.247。这便是我的 PIP。
![]()
- 记下 VM 中的两个 NIC
![]()
- 从您自己的 PC,对 PIP 执行 ping 操作,请注意请求超时
- 现在,关闭 VM 中的 Windows 防火墙(临时)或允许 ICMP,然后再次对 PIP 执行 ping 操作
![]()
脚本
param(
[Parameter(Mandatory=$true)]
$azureSettingsFile,
[Parameter(Mandatory=$true)]
$azureName,
[Parameter(Mandatory=$true)]
$adminUserName,
[Parameter(Mandatory=$true)]
$adminPassword
)
#可选参数
$azureLocation = "South Central US"
$azureImageName = "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201410.01-en.us-127GB.vhd"
$azureInstanceSize = "Large"
$azureFESubnetName = "Frontend"
$azureFEStaticIP = "192.168.0.254"
$azureBESubnetName = "Backend"
$azureBEStaticIP = "192.168.1.254"
#函数
function NewAzureStorageAccount
{
param($account, $location)
#检查帐户是否已存在
$blob = Get-AzureStorageAccount -StorageAccountName $account -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -Verbose:$false
#如不存在,请创建
if(!($blob))
{
Write-Host "Creating Storage Account..."
New-AzureStorageAccount -StorageAccountName $account -Location $location -Verbose:$false -WarningAction SilentlyContinue | Out-Null #在继续之前确保已完成创建
while ((Get-AzureStorageAccount -StorageAccountName $account -WarningAction SilentlyContinue).StorageAccountStatus -ne "Created")
{
Start-Sleep 5
}
Write-Host "Storage Account Created"
}
else
{
Write-Host "Storage account already exists, skipping"
}
}
function NewAzureStorageContainer
{
param($name)
#检查容器是否已存在
$container = Get-AzureStorageContainer -Name $name -ErrorAction SilentlyContinue
#如不存在,请创建
if(!($container))
{
Write-Host "Creating Storage Container..."
New-AzureStorageContainer -Name $name -Verbose:$false | Out-Null
Write-Host "Storage Container Created"
}
else
{
Write-Host "Storage container already exists, skipping"
}
}
function NewAzureService
{
param($name, $location)
#检查服务是否已存在
$service = Get-AzureService -ServiceName $name -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -Verbose:$false
#如不存在,请创建
if(!($service))
{
Write-Host "Creating Cloud Service..."
New-AzureService -ServiceName $name -Location $location -Verbose:$false -WarningAction SilentlyContinue | Out-Null
Write-Host "Cloud Service Created"
}
else
{
Write-Host "cloud service already exists, skipping"
}
}
#导入 Azure PowerShell 模块
Import-Module Azure
#导入 Azure 设置文件
Import-AzurePublishSettingsFile -PublishSettingsFile $azureSettingsFile | Out-Null
#创建存储
NewAzureStorageAccount -account $azureName -location $azureLocation
#使用存储设置 Azure 订阅
Set-AzureSubscription -CurrentStorageAccountName $azureName -SubscriptionName ((Get-AzureSubscription).SubscriptionName)
#创建存储容器
NewAzureStorageContainer -name vhds
#创建云服务
NewAzureService -name $azureName -location $azureLocation
#设置 VM 大小和映像
$vm = New-AzureVMConfig -Name $azureName -InstanceSize $azureInstanceSize -ImageName $azureImageName
#设置 VM 凭据
Add-AzureProvisioningConfig -VM $vm -Windows -AdminUsername $adminUserName -Password $adminPassword
#设置 VM 前端网络子网、静态 IP 和公用 IP
Set-AzureSubnet -SubnetNames $azureFESubnetName -VM $vm
Set-AzureStaticVNetIP -IPAddress $azureFEStaticIP -VM $vm
Set-AzurePublicIP -PublicIPName $azureName -VM $vm
#设置 VM 后端网络子网和静态 IP
Add-AzureNetworkInterfaceConfig -Name $azureBESubnetName -SubnetName $azureBESubnetName -StaticVNetIPAddress $azureBEStaticIP -VM $vm
#创建 VM
New-AzureVM -ServiceName $azureName -VNetName $azureName -VM $vm
如果你有任何疑问,
欢迎访问MSDN社区,由专家来为您解答Windows
Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。
希望此脚本可以作为示例,帮助您在环境中自动创建此类 VM。
如果你有任何疑问,
欢迎访问MSDN社区,由专家来为您解答Windows
Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。
在 Azure 中使用公用 IP 创建多 NIC VM的更多相关文章
- 如何在 Azure 中均衡 Windows 虚拟机负载以创建具有高可用性的应用程序
负载均衡通过将传入请求分布到多个虚拟机来提供更高级别的可用性. 本教程介绍了 Azure 负载均衡器的不同组件,这些组件用于分发流量和提供高可用性. 你将学习如何执行以下操作: 创建 Azure 负载 ...
- 如何在 Azure 中均衡 Linux 虚拟机负载以创建高可用性应用程序
负载均衡通过将传入请求分布到多个虚拟机来提供更高级别的可用性. 本教程介绍了 Azure 负载均衡器的不同组件,这些组件用于分发流量和提供高可用性. 你将学习如何执行以下操作: 创建 Azure 负载 ...
- 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像
Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...
- 在 Azure 中的 Linux VM 上创建 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆栈
本教程介绍如何在 Azure 中的 Linux VM 上实现 MongoDB.Express.AngularJS 和 Node.js (MEAN) 堆栈. 通过创建的 MEAN 堆栈,可以在数据库中添 ...
- 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构
若要将应用程序开发的生成和测试阶段自动化,可以使用持续集成和部署 (CI/CD) 管道. 本教程介绍如何在 Azure VM 上创建 CI/CD 管道,包括如何: 创建 Jenkins VM 安装并配 ...
- 上传通用化 VHD 并使用它在 Azure 中创建新 VM
本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure.从该 VHD 创建映像,然后从该映像创建新 VM. 可以上传从本地虚拟化工具或其他云导出的 VHD. 对新 ...
- 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败
创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...
- 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...
- 在 Windows Azure 网站中配置动态 IP 地址限制
我们最近对 Windows Azure 网站进行了升级,并启用了IIS8的动态 IP 限制模块.现在,开发人员可以为其网站启用并配置动态 IP 限制功能(或简称 DIPR). 可以通过以下链接查看此 ...
随机推荐
- 使用OpenXml操作Excel,以下方法用于在添加列时修改Cell的CellReference属性。
以下方法实现了递增Excel中单元格的CellReference的功能,只支持两位字母. public static string CellReferenceIncrement(string cell ...
- c# 代理IP获取通用方法
调用: ConcurrentQueue<string> proxyIpQueue = new ConcurrentQueue<string>(); Grab_ProxyIp(p ...
- [翻译]15个最常见的WCF面试问题
WCF和ASMX WebService的区别是什么? 最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯.但WCF可以使用任意协议(HTTP, ...
- TCO 2014 Round 1C 概率DP
TCO round 1C的 250 和500 的题目都太脑残了,不说了. TCO round 1C 950 一个棋子,每次等概率的向左向右移动,然后走n步之后,期望cover的区域大小?求cover, ...
- SVN弱密码扫描(Python)
寂寞如雪的用脑过度,所以来写个博客分享一下.#虽然上一篇博客我还没写完 SVN的弱密码,看起来很复杂,但实际上很简单啊= =虽然不像pymssql/mymssql这种,Python提供了很好用的包,但 ...
- 判断webpart类型 How can I tell what type a web part is?
using(new SPSite("http://mysite/myweb").OpenWeb()){ //give relative path of the webpartpag ...
- R语言编程艺术# 数据类型向量(vector)
R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...
- [转载]MongoDB查询优化原则
.在查询条件.排序条件.统计条件的字段上选择创建索引,可以显著提高查询效率. .用$or时把匹配最 多 结果的条件放在最前面,用$and时把匹配最 少 结果的条件放在最前面. .使用limit()限定 ...
- PAT-乙级-1027. 打印沙漏(20)
1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...
- uva 10608
简单并查集 水水..... #include <cstdio> #include <cstring> #define maxn 30005 int fa[maxn],ans[ ...