常用公有云接入——AZURE

一、概念

1、订阅

可以使用订阅为组织内的团队提供访问开发环境(即测试、生产、开发、临时部署等)和项目的权限。针对每个应用程序环境创建不同的订阅,并为每个订阅分配不同的服务管理员帐户,这是保护每个环境安全的一个好方法。订阅可以与任意数目的服务相关联,而帐户所有者则能在其帐户中创建订阅,并能为每个订阅分配服务管理员帐户。

2、资源组

一个容器,用于保存 Azure 解决方案的相关资源。 资源组包括你想要作为一个组进行管理的那些资源。 根据对组织有利的原则,决定如何将资源分配到资源组。 

3、Compute(计算)

虚拟机,仅包含CPU与内存。

4、网络接口

网络接口 (NIC) 是 VM 与虚拟网络 (VNet) 之间互相连接的桥梁。 VM 必须至少有一个 NIC,但可以根据所创建 VM 的大小包含多个 NIC。 了解 Windows 或 Linux 的每个 VM 大小支持的 NIC 数。

5、IP 地址

可将以下类型的 IP 地址分配到 Azure 中的 NIC:

公共 IP 地址:用来与 Internet 以及未连接到 VNet 的其他 Azure 资源进行入站和出站通信(不提供网络地址转换 (NAT))。 向 NIC 分配公共 IP 地址是可选操作。 公共 IP 地址会产生少许费用,并且每个订阅可使用的最大公共 IP 地址数目有限制。
专用 IP 地址:用于在 VNet、本地网络和 Internet 中通信(提供 NAT)。 必须至少将一个专用 IP 地址分配给 VM。 若要详细了解 Azure 中的 NAT,请阅读了解 Azure 中的出站连接。
可将公共 IP 地址分配到 VM 或面向 Internet 的负载均衡器。 可将专用 IP 地址分配到 VM 和内部负载均衡器。 可以使用网络接口将 IP 地址分配给 VM。

6、虚拟网络和子网

子网是 VNet 中的一系列 IP 地址。 可将一个 VNet 划分为多个子网,以便于组织和提高安全性。 VM 中的每个 NIC 连接到一个 VNet 中的一个子网。 连接到 VNet 中的子网(不管是相同的子网还是不同的子网)的 NIC 可以互相通信,不需任何额外的配置。

设置 VNet 时,需指定拓扑,包括可用的地址空间和子网。 如果 VNet 要连接到其他 VNet 或本地网络,则必须选择不重叠的地址范围。 这些 IP 地址是专用的,无法从 Internet 访问,这种限制在过去只适用于不可路由的 IP 地址,例如 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16。 现在,Azure 将所有地址范围都视为只能在 VNet 内部、互连 VNet 内部以及从本地位置访问的专用 VNet IP 地址空间的一部分。

 

二、虚拟机创建方式

门户、PowerShell、Azure CLI、REST API 或客户端 SDK 

 

三、创建虚拟流程

1、注册账号

2、登录AZURE

3、创建订阅

4、创建资源组

5、创建虚拟机

附:登录Azure CLI

附:门户

 

四、Java SDK

有关使用用于 Java 的 Azure 库进行开发的模式和最佳做法

1、Maven依赖

<dependency><groupId>com.microsoft.azure</groupId><artifactId>azure</artifactId><version>1.3.0</version>
</dependency>

2、AZURE会话

  • subscription:使用 Azure CLI 2.0 中源自 az account show 的 id 值。
  • client:使用从服务主体(创建用来运行应用程序)获取的输出中的 appId 值。 如果没有用于应用的服务主体,请使用 Azure CLI 2.0 创建一个。
  • key:使用服务主体 create CLI 输出中的 password 值
  • tenant:使用服务主体 create CLI 输出中的 tenant 值

public static Azure getAzure(){String clientId = "your appId";String tenant = "your tenant";String password = "your password";String subscription = "your subscription";ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(clientId, 
tenant, password, AzureEnvironment.AZURE);return Azure.configure().withLogLevel(LogLevel.NONE).authenticate(credentials).withSubscription(subscription);}

3、创建虚拟机

 VirtualMachine linuxVM = azure.virtualMachines().define("testLinuxVM").withRegion(Region.CHINA_NORTH).withNewResourceGroup("sampleVmResourceGroup").withNewPrimaryNetwork("10.0.0.0/24").withPrimaryPrivateIpAddressDynamic().withoutPrimaryPublicIpAddress().withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS).withRootUsername(userName).withSsh(sshKey).withUnmanagedDisks().withSize(VirtualMachineSizeTypes.Standard_A1).create();   

4、创建虚拟机(挂载系统磁盘,静态公网IP,数据盘)

 public static void main(String[] args){String usename = "zhangsan";String password = "AZa1234567890@";String osDiskName = "first-os-disk";String dataDiskName = "first-data-disk";String region = "westus";String resourceGroup = "first-resource-group";String vhdImage = "https://XXimage.blob.core.windows.net/images/CentOS_7.3_64.vhd";String vmName = "first-vm" ;String ipName = "first-ip";String networkName = "first-network";String subNet = "first-subnet";String vmType = "Standard_A0";int osDiskSize = 30;int dataDiskSize =500;//普通盘//DiskSkuTypes osSkuTypes = DiskSkuTypes.fromStorageAccountType(StorageAccountTypes.STANDARD_LRS);//StorageAccountTypes osDiskType = StorageAccountTypes.STANDARD_LRS;Azure azure = getAzure();//根据VHD创建系统盘/*Disk osDisk = azure.disks().define(osDiskName).withRegion(region).withExistingResourceGroup(resourceGroup).withLinuxFromVhd(vhdImage).withSizeInGB(osDiskSize).withSku(osSkuTypes).create();*///静态公网IP延迟创建Creatable<PublicIPAddress> publicIPAddressCreatable = azure.publicIPAddresses().define(ipName).withRegion(region).withExistingResourceGroup(resourceGroup).withStaticIP();//数据盘DiskSkuTypes diskSkuTypes = DiskSkuTypes.fromStorageAccountType(StorageAccountTypes.STANDARD_LRS);Creatable<Disk> dataDiskCreatable = azure.disks().define(dataDiskName).withRegion(region).withExistingResourceGroup(resourceGroup).withData().withSizeInGB(dataDiskSize).withSku(diskSkuTypes);//存在网络//Network network = azure.networks().getByResourceGroup(resourceGroup,networkName);VirtualMachine vm  = azure.virtualMachines().define(vmName).withRegion(region)//.withNewResourceGroup(resourceGroup).withExistingResourceGroup(resourceGroup).withNewPrimaryNetwork("10.0.6.0/24")//.withExistingPrimaryNetwork(network)//.withSubnet(subNet).withPrimaryPrivateIPAddressDynamic().withNewPrimaryPublicIPAddress(publicIPAddressCreatable)//.withoutPrimaryPublicIPAddress().withPopularLinuxImage(KnownLinuxVirtualMachineImage.CENTOS_7_2)//.withSpecializedOSDisk(osDisk, OperatingSystemTypes.LINUX).withNewDataDisk(diskCreatable)//.withOSDiskStorageAccountType(osDiskType)//.withOSDiskName(osDiskName)//.withOSDiskSizeInGB(osDiskSize).withRootUsername(usename).withRootPassword(password).withNewDataDisk(dataDiskCreatable).withSize(vmType).create();}

5、删除虚拟机(虚拟删除不会删除关联的资源)

        String resourceGroup = "first-resource-group";String vmName = "first-vm" ;String vmId = "xxxx";VirtualMachine vm = azure.virtualMachines()//.getByResourceGroup(resourceGroup,vmName).getById(vmId);vm.deallocate();//停机,释放资源azure.virtualMachines().deleteById(vm.vmId());azure.disks().deleteById(vm.osDiskId());for(VirtualMachineDataDisk disk: vm.dataDisks().values()){azure.disks().deleteById(disk.id());}azure.networkInterfaces().deleteById(vm.getPrimaryNetworkInterface().id());azure.publicIPAddresses().deleteById(vm.getPrimaryPublicIPAddressId());

6、查询虚拟机

虚拟机信息

//单一查询
VirtualMachine vm = azure.virtualMachines().getById(id);
//批量查询
PagedList<VirtualMachine> vms = azure.virtualMachines().list();
for (VirtualMachine vm : vms) {System.out.println("Found virtual machine with ID " + vm.id());
}

查询状态

VirtualMachine vm = azure.virtualMachines().getById(id);
PowerState powerState = vm.powerState();
boolean isRun = powerState == PowerState.RUNNING;
boolean isStoped = powerState == PowerState.STOPPED;
boolean isStoping = powerState == PowerState.STOPPING;
boolean isStarting = powerState == PowerState.STARTING;

查询磁盘

    public static void get (){String id = "xxx";Azure azure = getAzure();VirtualMachine vm  = azure.virtualMachines().getById(id);//系统盘Disk osDisk = azure.disks().getById(vm.osDiskId());//数据盘List<VirtualMachineDataDisk> dataDisk = vm.dataDisks().values().stream().collect(Collectors.toList());}

7、虚拟机操作

VirtualMachine vm = azure.virtualMachines().getById(id);
vm.start();//启动
vm.powerOff();//停止
vm.restart();//重启

8、更新虚拟信息

VirtualMachine vm = azure.virtualMachines().getById(id);
NetworkInterface networkInterface = vm.getPrimaryNetworkInterface();
//设置私有ip为静态
networkInterface .update().withPrimaryPrivateIPAddressStatic(net.primaryPrivateIP()).apply();
//设置系统盘大小以及设置机型vm.update().withOSDiskSizeInGB(50).withSize("Standard_D2_v2").apply();

 

五、REST API

Azure REST API参考

OAuth 2.0 代码授权

虚拟机API

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录几个常用部署项目的命令,以备后用!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”查询运行项目的进程ps -aux|grep farbeat杀死进程kill -9 1600336进入目录cd /www/wwwroot/farbeat/查看文件ls将日志输出在nohup文件中的方式启动项目(注意.jar文件的名字)nohup java -…

分布式测试工具Beetle.DT的部署并进行HTTP,SQL,TCP压测

由于Beetle.DT是一个分布式压力测试工具&#xff0c;所以在使用上并不像普通工具那样安装运行这么简单&#xff1b;由于工具涉及到测试管理中心&#xff0c;节点和管理端等工具&#xff1b; 所以必须要进行相应的部署才能运行。接下来详解一下如果安装Beetle.DT并进行简单的HTT…

常用公有云接入——谷歌

一、概念 1、项目 一个账号有唯一的项目&#xff0c;所有虚拟机都在project里面建。 2、计算引擎 虚拟机资源。 二、创建方式 1、页面控制台 2、gcloud命令行 3、REST API 4、SDK 三、Java SDK 1、创建API服务凭据&#xff0c;并下载P12文件 2、Maven <dependency&…

elementui实现表格单选功能

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不可以多选。效果如下所示&#xff1a; 原来…

element-ui实现表格单选的功能

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是&#xff1a;2022年4月20日13:33:23需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不…

ASP.NET Core Razor 视图组件

视图组件简介 在新的ASP.NET Core MVC中&#xff0c;视图组件类似于局部视图&#xff0c;但它们更强大。视图组件不使用模型绑定&#xff0c;仅依赖于您在调用时提供的数据。 视图组件特性&#xff1a; 呈现页面响应的某一部分而不是整个响应包括在控制器和视图之间发现的关…

三个好用的并发工具类

转载自 三个好用的并发工具类 以前的文章中&#xff0c;我们介绍了太多的底层原理技术以及新概念&#xff0c;本篇我们轻松点&#xff0c;了解下 Java 并发包下、基于这些底层原理的三个框架工具类。 它们分别是&#xff1a; 信号量 Semaphore 倒计时门栓 CountDownLatch …

Error Handling in ASP.NET Core

前言 在程序中&#xff0c;经常需要处理比如 404&#xff0c;500 &#xff0c;502等错误&#xff0c;如果直接返回错误的调用堆栈的具体信息&#xff0c;显然大部分的用户看到是一脸懵逼的&#xff0c;你应该需要给用户返回那些看得懂的界面。比如&#xff0c;“当前页面不存在…

基于python的selenium

一.安装 安装WebDriver 查看chrome版本号&#xff0c;设置-帮助-关于Google chrome&#xff0c;找到版本号。 可以到这个网站进行下载对应版本的chromedriver,如果chrome浏览器版本过高,可以下载最新版的chromedriver进行使用 Chrome for Testing availability 下载下来之后…

多信息登录、检测用户信息是否完善且引导补全

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注&#xff1a;穆雄雄的博客 前言 现在是2022年4月28日13:41:29&#xff01; 今天分享两块内容。 1.需求&#xff1a;用户可以通过手机号、邮箱来注册我们的系统&#xff0c;用户完成之后&#xff0c;可以去完善自己的个人信息…

PNG 图片压缩原理解析

转载自 PNG 图片压缩原理解析 什么是PNG PNG的全称叫便携式网络图型&#xff08;Portable Network Graphics&#xff09;是目前最流行的网络传输和展示的图片格式&#xff0c;原因有如下几点&#xff1a; 无损压缩&#xff1a;PNG图片采取了基于LZ77派生算法对文件进行压缩&…

element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日11:47:15&#xff01;劳动节假期已经过去了三天了&#xff0c;今天是被封家里的第7天&#xff0c;也是解封的第一天。 说实话&#xff0c;在家里的工作效率一点都…

TypeScript 2.5 发布,增加语言级重构

在 TypeScript 2.5 版本中&#xff0c;Microsoft 专注于提高开发人员的生产力&#xff0c;其范围已经超出了代码编辑器所提供的常见功能。 习惯于类型语言&#xff08;如 C&#xff03;&#xff09;的开发人员喜欢使用那些可以轻松执行常见重构的工具。现在 TypeScript 可以利…

element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日13:35:15&#xff01;文接上篇。[element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单的操…

Entity Framework Core Like 查询揭秘

在Entity Framework Core 2.0中增加一个很酷的功能&#xff1a;EF.Functions.Like()&#xff0c;最终解析为SQL中的Like语句&#xff0c;以便于在 LINQ 查询中直接调用。 不过Entity Framework 中默认提供了StartsWith、Contains和EndsWith方法用于解决模糊查询&#xff0c;那…

element ui实现多层级复杂表单的操作(添加与回显)之回显功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日17:02:30&#xff01;文接上两篇。 [element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单…

在Mac的Docker中运行DotNetCore2.0

最近学习Angular4&#xff0c;服务端准备使用DotNetCore API来实现&#xff0c;本文简单介绍下在Mac中怎样将DotNetCore程序部署在Docker中&#xff0c;并使用Nginx做反向代理让程序可以跑起来。 具体步骤如下 安装Docker拉取DotNetCore镜像使用VS For Mac创建DotNetCore应用…

springboot实现复杂业务下的更新操作

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月4日19:25:55&#xff01;今天写了个这样的功能&#xff1a; 某用户在一天内有多个训练项目&#xff0c;比如&#xff1a;晨跑&#xff0c;有氧训练&#xff0c;跳绳这…

elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月5日22:48:21&#xff01; 今天在使用element-ui中的el-dialog的时候遇到了个这样的问题&#xff1a;页面上点击添加的按钮&#xff0c;弹出el-dialog对话框&#xff…

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结

转载自 MySQL 中的重做日志&#xff0c;回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件&#xff0c;分别是&#xff1a;重做日志&#xff08;redo log&#xff09;、回滚日志&#xff08;undo log&#xff09;、二进制日志&#xff08;binlog&#xff09;、错误日志…