一个 Azure 云服务中具有不同 url 的多个虚拟机?
Multiple virtual machines with different url's in one azure cloud service?
我正在尝试在一个云服务中添加多个虚拟机。
目前,我可以在这个云服务中创建一个云服务和一个虚拟机。在此之后,我试图在同一个部署中将另一个虚拟机添加到同一个 sloud 服务,这个过程也成功了,但我不明白的是如何为这个新虚拟机设置不同的 url !?
因为现在第一个虚拟机的url是myservicename.cloudapp.net,第二个虚拟机也是一样!!他们有相同的IP。怎么会这样?当第二个虚拟机具有相同的 url 时如何访问它?
第一个虚拟机的端口是:80,第二个虚拟机的端口是 81。
问题:
如何访问个人虚拟机?
有没有办法让 url 像:myservicename.vmname.cloudapp.net?
所以第一台虚拟机 url 是:myservicename.vmname1.cloudapp.net,第二台机器的 url 是:myservicename.vmname2.cloudapp.net
代码:
私有异步任务 CreateVirtualMachine()
{
DeploymentGetResponse deploymentResponse = await _computeManagementClient.Deployments.GetBySlotAsync("myservicename", DeploymentSlot.Production);
if (deploymentResponse == null)
{
var parameters = new VirtualMachineCreateDeploymentParameters
{
DeploymentSlot = DeploymentSlot.Production,
Name = "mservicename",
Label = "myservicename"
};
parameters.Roles.Add(new Role
{
OSVirtualHardDisk = new OSVirtualHardDisk
{
HostCaching = VirtualHardDiskHostCaching.ReadWrite,
SourceImageName = "imagename"
},
RoleName = "vmname",
RoleType = VirtualMachineRoleType.PersistentVMRole.ToString(),
RoleSize = VirtualMachineRoleSize.Small,
ProvisionGuestAgent = true
});
parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
{
ComputerName = "vmname",
ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
HostName = "vmname",
AdminUserName = "adminusername",
AdminPassword = "adminpass",
UserName = "username",
UserPassword = "userpass",
DisableSshPasswordAuthentication = false,
});
parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
{
ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
InputEndpoints = new List<InputEndpoint>()
{
new InputEndpoint()
{
Name = "HTTP",
Protocol = InputEndpointTransportProtocol.Tcp,
LocalPort = 80,
Port = 80
}
}
});
var response = await _computeManagementClient.VirtualMachines.CreateDeploymentAsync("mservicename", parameters);
}
else
{
var createParameters = new VirtualMachineCreateParameters
{
OSVirtualHardDisk = new OSVirtualHardDisk
{
HostCaching = VirtualHardDiskHostCaching.ReadWrite,
SourceImageName = "imagename"
},
RoleName = "vmname",
RoleSize = VirtualMachineRoleSize.Small,
ProvisionGuestAgent = true,
ConfigurationSets = new List<ConfigurationSet>
{
new ConfigurationSet
{
ComputerName = "vmname",
ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
HostName = "vmname",
AdminUserName = "adminusername",
AdminPassword = "adminpass",
UserName = "username",
UserPassword = "userpass",
DisableSshPasswordAuthentication = false
},
new ConfigurationSet
{
ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
InputEndpoints = new List<InputEndpoint>()
{
new InputEndpoint()
{
Name = "HTTP",
Protocol = InputEndpointTransportProtocol.Tcp,
LocalPort = 81,
Port = 81
}
}
}
}
};
var responseCreate = await _computeManagementClient.VirtualMachines.CreateAsync("mservicename", deploymentResponse.Name, createParameters);
}
}
Azure 云服务 (yourdns.cloudapp.net
) 具有 一个 DNS 名称和 一个 IP 地址。该云服务中的所有虚拟机都位于该单一 IP 地址后面。如果您设置了端点(例如端口 80),那么您可能会在所有 VM 之间对该端点进行负载平衡。或者...您可能有一个端口直接映射到特定的虚拟机(例如,端口 8080 转到您的一个虚拟机上的管理应用程序)。您会注意到,对于像 ssh 这样的东西,每个虚拟机都有自己的 ssh 端口,这是一个映射到特定虚拟机上的端口 22 的端点。
如果您希望您的虚拟机具有不同的 IP addresses/dns 名称,您需要:
- 将它们拆分为单独的云服务 (
.cloudapp.net
)
- 在新的资源管理器模型中部署它们,您不再有
.cloudapp.net
构造。
我正在尝试在一个云服务中添加多个虚拟机。
目前,我可以在这个云服务中创建一个云服务和一个虚拟机。在此之后,我试图在同一个部署中将另一个虚拟机添加到同一个 sloud 服务,这个过程也成功了,但我不明白的是如何为这个新虚拟机设置不同的 url !?
因为现在第一个虚拟机的url是myservicename.cloudapp.net,第二个虚拟机也是一样!!他们有相同的IP。怎么会这样?当第二个虚拟机具有相同的 url 时如何访问它?
第一个虚拟机的端口是:80,第二个虚拟机的端口是 81。
问题:
如何访问个人虚拟机?
有没有办法让 url 像:myservicename.vmname.cloudapp.net? 所以第一台虚拟机 url 是:myservicename.vmname1.cloudapp.net,第二台机器的 url 是:myservicename.vmname2.cloudapp.net
代码:
私有异步任务 CreateVirtualMachine() { DeploymentGetResponse deploymentResponse = await _computeManagementClient.Deployments.GetBySlotAsync("myservicename", DeploymentSlot.Production);
if (deploymentResponse == null)
{
var parameters = new VirtualMachineCreateDeploymentParameters
{
DeploymentSlot = DeploymentSlot.Production,
Name = "mservicename",
Label = "myservicename"
};
parameters.Roles.Add(new Role
{
OSVirtualHardDisk = new OSVirtualHardDisk
{
HostCaching = VirtualHardDiskHostCaching.ReadWrite,
SourceImageName = "imagename"
},
RoleName = "vmname",
RoleType = VirtualMachineRoleType.PersistentVMRole.ToString(),
RoleSize = VirtualMachineRoleSize.Small,
ProvisionGuestAgent = true
});
parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
{
ComputerName = "vmname",
ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
HostName = "vmname",
AdminUserName = "adminusername",
AdminPassword = "adminpass",
UserName = "username",
UserPassword = "userpass",
DisableSshPasswordAuthentication = false,
});
parameters.Roles[0].ConfigurationSets.Add(new ConfigurationSet
{
ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
InputEndpoints = new List<InputEndpoint>()
{
new InputEndpoint()
{
Name = "HTTP",
Protocol = InputEndpointTransportProtocol.Tcp,
LocalPort = 80,
Port = 80
}
}
});
var response = await _computeManagementClient.VirtualMachines.CreateDeploymentAsync("mservicename", parameters);
}
else
{
var createParameters = new VirtualMachineCreateParameters
{
OSVirtualHardDisk = new OSVirtualHardDisk
{
HostCaching = VirtualHardDiskHostCaching.ReadWrite,
SourceImageName = "imagename"
},
RoleName = "vmname",
RoleSize = VirtualMachineRoleSize.Small,
ProvisionGuestAgent = true,
ConfigurationSets = new List<ConfigurationSet>
{
new ConfigurationSet
{
ComputerName = "vmname",
ConfigurationSetType = ConfigurationSetTypes.LinuxProvisioningConfiguration,
HostName = "vmname",
AdminUserName = "adminusername",
AdminPassword = "adminpass",
UserName = "username",
UserPassword = "userpass",
DisableSshPasswordAuthentication = false
},
new ConfigurationSet
{
ConfigurationSetType = ConfigurationSetTypes.NetworkConfiguration,
InputEndpoints = new List<InputEndpoint>()
{
new InputEndpoint()
{
Name = "HTTP",
Protocol = InputEndpointTransportProtocol.Tcp,
LocalPort = 81,
Port = 81
}
}
}
}
};
var responseCreate = await _computeManagementClient.VirtualMachines.CreateAsync("mservicename", deploymentResponse.Name, createParameters);
}
}
Azure 云服务 (yourdns.cloudapp.net
) 具有 一个 DNS 名称和 一个 IP 地址。该云服务中的所有虚拟机都位于该单一 IP 地址后面。如果您设置了端点(例如端口 80),那么您可能会在所有 VM 之间对该端点进行负载平衡。或者...您可能有一个端口直接映射到特定的虚拟机(例如,端口 8080 转到您的一个虚拟机上的管理应用程序)。您会注意到,对于像 ssh 这样的东西,每个虚拟机都有自己的 ssh 端口,这是一个映射到特定虚拟机上的端口 22 的端点。
如果您希望您的虚拟机具有不同的 IP addresses/dns 名称,您需要:
- 将它们拆分为单独的云服务 (
.cloudapp.net
) - 在新的资源管理器模型中部署它们,您不再有
.cloudapp.net
构造。