2

Я использую следующую строку подключения для подключения веб-роли Azure к экземпляру SQL, запущенного на виртуальной машине. Он работает отлично!Строка подключения для Azure Web-Role, соединяющая SQL Server с виртуальной машиной

<add key="VMConnectionString" value="Server=tcp:<mydomain>.cloudapp.net,1433;Database=myDatabase;User Id=myUserID;Password=**********;" /> 

Мой вопрос, я должен использовать внутренний IP-адрес виртуальной машины (например, 10.1.0.0/16) вместо публичного DNS, чтобы уменьшить время ожидания? Нужно ли включать веб-роль и виртуальную машину в одну виртуальную сеть в Azure? Я попытался использовать внутренний IP-адрес виртуальной машины, как указано на портале, но не смог подключиться, несмотря на то, что порт полностью открыт. Я должен добавить, что это без виртуальной сети.

+0

Я не думаю, что вы можете полагаться на внутренний IP-адрес, поскольку они могут измениться при перезагрузке VM. – Chandermani

+0

Что относительно Azure Virtual Networks? Я сейчас смотрю эту статью: http://michaelwasham.com/2012/08/06/connecting-web-or-worker-roles-to-a-simple-virtual-network-in-windows-azure/ – QFDev

ответ

4

Теперь мне удалось связать виртуальную машину с SQL Server с внутренним IP 10.0.0.4, сначала создав виртуальную сеть на Azure Portal и развернув новую виртуальную машину в эту сеть.

С помощью веб-роли вы не можете указывать параметры виртуальной сети при настройке через портал. Таким образом, чтобы привести веб-роль в сеть, вы должны определить это в .cscfg файла:

<NetworkConfiguration> 
    <VirtualNetworkSite name="VirtualNetworkName" /> 
    <AddressAssignments> 
    <InstanceAddress roleName="MyWebRole"> 
     <Subnets> 
     <Subnet name="AppSubnet" /> 
     </Subnets> 
    </InstanceAddress> 
    </AddressAssignments> 
</NetworkConfiguration> 

Теперь вы можете определить внутренний IP в SQL Server VM в портале и добавить это в строку подключения определенный в моем приложении web.config. Опубликуйте приложение в Azure и убедитесь, что вы правильно настроили конечные точки и открыли брандмауэр, и он должен работать нормально.

После выполнения нескольких тестов производительности есть коэффициент усиления маржи, получаемый от использования внутреннего IP-адреса через общедоступный DNS. Я рекомендую руководство connecting web roles to a VM в качестве хорошей контрольной точки.

Ещё одна вещь. При использовании DNS (например, myvm.cloudapp.net) в строке подключения я не мог найти предсказуемый способ узнать, из какого IP-адреса будет вызываться веб-роль. Поэтому было трудно открыть порт 1433 на виртуальной машине, чтобы просто разрешить веб-роль. С внутренним IP-адресом я просто открыл всю подсеть.

+1

просто FYI: VirtualNetwokName не обязательно является именем группы аффинности vnet. Фактически это имя виртуальной сети, созданной в Azure. –

+0

Вы правы, я изменил имя, чтобы избежать путаницы. – QFDev

+0

Спасибо @QFDev! Это очень помогло мне! –

1

Вам нужно будет использовать Public Virtual IP-адрес: Does Windows Azure offer static IP for VMs?

Однако я собираюсь спросить, почему вы устанавливаете свой собственный экземпляр сервера SQL на виртуальной машине в Windows Azure, а не с помощью SQL Azure?

Если вы хотите разместить свой собственный SQL Server, на данном этапе я бы рекомендовал использовать экземпляр Amazon EC2, поскольку у них есть больше функций, таких как постоянный статический IP-адрес. Однако вам также потребуется передать все остальное в тот же центр обработки данных, что и сайт, попавший в SQL Server в разных центрах обработки данных, действительно плох латентно.

+0

SQL Azure был бы нашим идеальным выбором, и это, безусловно, намного дешевле, чем запуск SQL на виртуальной машине.Проблема в понижении производительности довольно серьезная! Никакой ошибки SQL Azure, кстати, просто наше приложение не оптимизировано для облачных вычислений, а VM + SQL - это удобная промежуточная площадка, по крайней мере, время для восстановления и оптимизации для SQL Azure. AWS сейчас выключен, мы слишком далеко позади Azure. – QFDev

+0

Какое снижение производительности вы испытываете? –

+1

Адам, после публикации этого вопроса мы вернулись к SQL Azure. Во многом из-за затрат на запуск нескольких виртуальных машин для высокой доступности. Мы профилировали нашу БД и обнаружили, что, добавив несколько индексов и дозируя запросы, мы смогли значительно повысить производительность. Теперь мы рассматриваем миллисекундные различия между нашим локальным сервером и нашим решением в SQL Azure! Хотя я в конечном итоге решил проблему здесь, оказалось, что это не оптимальное решение для нас. – QFDev

2

Включили ли вы конечные точки для виртуальных машин в портале? Это простая операция, так как вы просто выбираете порт и протокол. Вот статья, которая объясняет, как:

http://www.windowsazure.com/en-us/manage/windows/how-to-guides/setup-endpoints/

Я также рекомендовал бы использовать запись, mydomain.cloudapp.net, вместо вип как вип может измениться, когда вы перераспределить. При перезагрузке vip не изменится.

+0

Да, конечные точки существуют в VM для 1433 (SQL) и 3389 (RDP). Дело не в том, что я не могу подключиться к SQL Server на виртуальной машине, строка подключения написана отлично. Но я считаю, что использование внутреннего IP (например, 10.1.0.0/16) будет более быстрым и более прямым. – QFDev

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