Ответ 1
Итак, я наконец добрался до этого удара! (приносят извинения за задержку, люди все время ожидали, что эта работа - неразумные дураки!)
Во-первых, на самом деле это не ответ! просто исследуйте проблему, и вы, вероятно, знаете все это уже, но, возможно, кто-то, кто ее прочитает, увидит то, что я пропустил.
Я создал три виртуальных машины, в одном облачном сервисе и lo-and-behold! он сделал именно то, что вы предсказали, когда вы закрыли его.
Во-первых, оба портала, похоже, дают надежные ответы, даже когда запрос .Net сообщает RoleStatusUnknown.
Глядя на Xml, который выходит из запроса
https://management.core.windows.net/{subscriptionid}/services/hostedservices/vm01-u3rzv2q6/deploymentslots/Production
получаем
<RoleInstance>
<RoleName>vm01</RoleName>
<InstanceName>vm01</InstanceName>
<InstanceStatus>RoleStateUnknown</InstanceStatus>
<InstanceSize>Basic_A1</InstanceSize>
<InstanceStateDetails />
<PowerState>Started</PowerState>
Затем я запустил Powershell, чтобы узнать, делает ли это то же самое, что и было (не неожиданно, так как он вызывает ту же точку REST). с Get-AzureVm
возвращением
ServiceName Name Status
----------- ---- ------
vm01-u3rzv2q6 vm01 CreatingVM
vm01-u3rzv2q6 vm02 RoleStateUnknown
vm01-u3rzv2q6 vm03 RoleStateUnknown
В соответствующие моменты, которые снова, как видно.
Удивительно, что было время, я тогда запускал этот
while ($true) { (get-azurevm -ServiceName vm01-u3rzv2q6 -Name vm01).InstanceStatus ; get-azurevm ; (date).DateTime }
ReadyRole
vm01-u3rzv2q6 vm01 ReadyRole
vm01-u3rzv2q6 vm02 ReadyRole
vm01-u3rzv2q6 vm03 ReadyRole
07 March 2016 04:31:01
07 March 2016 04:31:36
StoppedDeallocated
vm01-u3rzv2q6 vm01 Stoppe...
vm01-u3rzv2q6 vm02 RoleSt...
vm01-u3rzv2q6 vm03 RoleSt...
07 March 2016 04:31:49
07 March 2016 04:33:44
StoppedDeallocated
vm01-u3rzv2q6 vm01 Stoppe...
vm01-u3rzv2q6 vm02 ReadyRole
vm01-u3rzv2q6 vm03 ReadyRole
07 March 2016 04:33:52
Итак, кажется, что машина отключается, тогда процесс должен начать обновлять облачную службу, которая берет на себя способность запрашивать ее статус, что кажется, ровно две минуты.
Где-то в API должно быть место, где оно сообщается правильно, потому что у порталов нет этой проблемы.
Я провел некоторое время в тупике, ища "InstanceView" для виртуальной машины, но, похоже, этого не существует для классических развертываний.
Моя следующая мысль состоит в том, чтобы собрать простой клиент для отдыха, который берет сертификат управления и видит, можно ли взломать URI немного, чтобы дать что-нибудь более интересное. (его где-то там!)
Что может быть полезно, так это то, что эта проблема не затрагивает PowerState
. Таким образом, вы можете иметь дополнительную проверку для этого, в то время как у вас есть ошибка RoleStateUnknown
, ее далеко не идеальная, но в зависимости от того, что вы хотите сделать, это может сработать.
В противном случае я бы сказал, что это явно ошибка в Azure, и определенно может быть вызван призыв к поддержке.