2013-12-13 4 views
0

Как мне показать все конечные точки в облаке Azure, а не только конечные точки в текущем экземпляре роли?Список всех конечных точек экземпляра в Azure Cloud

Я пробовал следующий код, но он перечисляет только конечные точки на текущем Azure, например, а не на каких-либо других Azure случаев:

void ListCloudInstances() 
{ 
    var instances = new StringBuilder(""); 

    foreach (var role in RoleEnvironment.Roles) 
    { 
     instances.AppendFormat("<h2>Role <em>{0}</em></h2><br/>", role.Value.Name); 
     if (role.Value.Instances.Count == 0) 
      instances.AppendFormat("<small>Role <em>{0}</em> has no role instances</small><br/><br/>", role.Value.Name); 

     foreach (var roleInstance in role.Value.Instances) 
     { 
      var currentRoleMarker = RoleEnvironment.CurrentRoleInstance.Id == roleInstance.Id ? " *" : String.Empty; 
      instances.AppendFormat("<h3>Role <em>{2}</em> instance <em>{0}</em>{1}</h3><br/>", 
       roleInstance.Id, currentRoleMarker, roleInstance.Role.Name); 

      // List some metadata about the role instance 
      instances.AppendFormat("<p>Role instance fault domain: {0}</p>", roleInstance.FaultDomain); 
      instances.AppendFormat("<p>Role for the instance: {0}</p>", roleInstance.Role.Name); 
      instances.AppendFormat("<p>Role instance update domain: {0}</p><br/>", roleInstance.UpdateDomain); 

      // List the endpoints 
      instances.AppendFormat("<h4>Role <em>{1}</em> instance <em>{0}</em> endpoints</h4><br/>", roleInstance.Id, 
       roleInstance.Role.Name); 

      foreach (RoleInstanceEndpoint instanceEndpoint in roleInstance.InstanceEndpoints.Values) 
      { 
       if (roleInstance.Role.Name == "Www") 
        instances.AppendFormat("<p><a href=\"{0}://{1}/Admin/Settings.aspx\" target=\"_blank\">{1}</a></p>", 
         instanceEndpoint.Protocol, instanceEndpoint.IPEndpoint); 
       else instances.AppendFormat("<p>Instance endpoint IP address, port, and protocol : {0} {1}</p>", 
        instanceEndpoint.IPEndpoint, instanceEndpoint.Protocol); 
      } 
     } 
    } 

    instances.AppendFormat("<small>* Current role instance is {0}</small>", RoleEnvironment.CurrentRoleInstance.Id); 

    CloudHtml.Text = instances.ToString(); 
} 

Выхода из работы на нескольких проектах роли, где каждая роль имеет несколько экземпляры:

Роль MultiThreadedWorkerRole

Роль MultiThreadedWorkerRole не имеет экземпляров ролей

Роли Www

Роль Www экземпляр deployment22 (203) .CloudService1.Www_IN_1 *

Роль домен ошибки экземпляра: 1

Роль для экземпляра: Www

экземпляр Роли домена обновления : 1

Роль Www instance deployment22 (203) .CloudService1.Www_IN_1 конечные точки

127.255.0.3:82

127.255.0.3:444

  • текущего экземпляра роль deployment22 (203) .CloudService1.Www_IN_1

Если я повторно запустил вышеуказанный запрос, я случайно получаю вывод из развертывания экземпляров ролей22 (203) .CloudService1.Www_IN_0 в deploy22 (203) .CloudService1.Www_IN_4, как было решено, каким экземпляром обрабатывает веб-форму ASP.NET, которая выполняет приведенный выше фрагмент кода. Пример:

Роль MultiThreadedWorkerRole

Роль MultiThreadedWorkerRole не играет никакой роли экземпляров

Роль WwW

Роль Www экземпляра deployment22 (203) .CloudService1.Www_IN_0 *

экземпляр Роль домен неисправностей: 0

Роль для экземпляра: Www

Роль домена обновления экземпляра: 0

Роль Www экземпляра deployment22 (203) .CloudService1.Www_IN_0 конечные точки

127.255.0.2:82

127.255.0.2:444

  • текущего экземпляра роль deployment22 (203) .CloudService1.Www_IN_0

ответ

0

Я считаю, что k еу в следующей отметкой на documentation of the RoleEnvironment's Roles property -

По крайней мере, один внутренний конечная точка должна быть определена для роли, чтобы дать возможность экземпляров, чтобы быть известным во время выполнения

Я просто попытался его создавая облачный проект с двумя ролями и повторяя роли с использованием RoleEnvironment.Roles, без каких-либо внутренних конечных точек доступны только экземпляры текущей роли.

После добавления внутренней конечной точки к другой роли ее экземпляры были загружены для меня. Howeber - только внутренние конечные точки были указаны в коллекции экземпляра роли InstanceEndpoints. Я не мог видеть внешние конечные точки, которые они выставили.

Смежные вопросы