2016-05-23 6 views
-1

Ich versuche, mehrere virtuelle Maschinen in einem Cloud-Service hinzuzufügen.Mehrere virtuelle Maschinen mit unterschiedlichen URLs in einem azure Cloud-Dienst?

Momentan kann ich in diesem Cloud-Service einen Cloud-Service und eine virtuelle Maschine erstellen. Danach versuche ich, demselben Sloud-Dienst in derselben Implementierung eine weitere virtuelle Maschine hinzuzufügen, und dieser Prozess ist ebenfalls erfolgreich, aber was ich nicht verstehen kann, ist, wie man eine andere URL für diese neue virtuelle Maschine setzt !?

Weil jetzt, URL für erste virtuelle Maschine ist myservicename.cloudapp.net, und für die zweite virtuelle Maschine ist das gleiche! Und sie haben dieselbe IP. Wie kann das sein? Wie kann ich auf die zweite virtuelle Maschine zugreifen, wenn sie dieselbe URL hat?

Hafen für erste vm ist: 80 und für die zweite vm ist 81.

Fragen:

  1. Wie individuell vm acces?

  2. Gibt es eine Möglichkeit, URLs wie: myservicename.vmname.cloudapp.net? Damit ersten vm URL ist: myservicename.vmname1.cloudapp.net und URL für die zweite Maschine: myservicename.vmname2.cloudapp.net

Code:

privat async Aufgabe CreateVirtualMachine() { DeploymentGetResponse deploymentResponse = erwarten _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); 

    } 
} 

Antwort

0

Ein Azure Cloud-Service (yourdns.cloudapp.net) hat ein DNS-Namen und eine IP-Adresse. Alle VMs innerhalb dieses Cloud-Dienstes sitzen hinter dieser einzelnen IP-Adresse. Wenn Sie einen Endpunkt eingerichtet haben (z. B. Port 80), kann dieser Endpunkt für alle VMs ausgeglichen sein. Oder ... Sie können eine direkte Port-Karte zu einer bestimmten VM haben (z. B. Port 8080, der zu einer Admin-App auf einem Ihrer VMs geht). Sie werden bemerken, dass für jeden Fall, wie zum Beispiel ssh, jeder vm seinen eigenen ssh-Port erhält, der ein Endpunkt ist, der auf Port 22 einer bestimmten VM abgebildet wird.

Wenn Sie Ihre VMs wollen verschiedene IP-Adressen/DNS-Namen zu müssen, müssen Sie entweder:

  • spalteten sie in einzelnen Cloud-Service (.cloudapp.net)
  • sie Bereitstellen in dem neuen Resource Manager-Modell , wo Sie keine .cloudapp.net Konstrukte mehr haben.
+0

Vielen Dank für Ihre Antwort. – gomila

+0

@gomila Erstens: Sie sollten eine "Upvote" und/oder akzeptieren eine Antwort als die richtige Art zu sagen "Danke" - kein Kommentar. Zweitens: Bitte stellen Sie keine zusätzlichen Fragen, in den Bearbeitungen. Stellen Sie eine andere Frage. Drei: Diese Fragen sind wirklich für ServerFault, nicht StackOverflow. VIER: Aufgrund Ihrer Bearbeitungen haben Sie einige Begriffe verwirrt (z. B. Speicherkonten haben nichts mit VM-Limits zu tun). –

Verwandte Themen