常用公有云接入——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 值
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
總結
以上是生活随笔為你收集整理的常用公有云接入——AZURE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭程序或窗口的几种方法电脑如何关闭运行
- 下一篇: 常用公有云接入——谷歌