Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutorial 0-provision-azure-cluster errs on Config.ProvisionCluster() #97

Open
MaxWilson opened this issue Sep 29, 2017 · 8 comments
Open

Comments

@MaxWilson
Copy link

Hi,

Newbie here. I hit an issue when trying the first tutorial (0-provision-azure-cluster.fsx). When I execute the line

let deployment = Config.ProvisionCluster()

I get a bunch of successes but also an error:

Binding session to 'D:\code\rtg\MBraceAzure\HandsOnTutorial.FSharp../packages/MBrace.Azure/tools\Newtonsoft.Json.dll'...

Hyak.Common.CloudException: uuid:f38b9357-360a-4df7-ad06-be239ab83090;id=5462713<title type="text"></title>2017-09-29T20:13:14ZCreating an ACS enabled Service Bus namespace failed for the subscription ef4cb8f038de4ee88fbbdef156954514. For additional details refer to https://go.microsoft.com/fwlink/?linkid=852159&amp;clcid=0x409.
at MBrace.Runtime.Utils.Retry.aux@33-3.Invoke(FSharpChoice2 _arg2) in C:\Users\eirik\Development\mbrace\MBrace.Core\src\MBrace.Runtime\Utils\Retry.fs:line 36 at Microsoft.FSharp.Control.AsyncBuilderImpl.args@825-1.Invoke(a a) at MBrace.Core.Internals.AsyncExtensions.Async.RunSync[T](FSharpAsync1 workflow, FSharpOption`1 cancellationToken) in C:\Users\eirik\Development\mbrace\MBrace.Core\src\MBrace.Core\Utils\AsyncExtensions.fs:line 101
at <StartupCode$FSI_0012>.$FSI_0012.main@() in D:\code\rtg\MBraceAzure\HandsOnTutorial.FSharp\0-provision-azure-cluster.fsx:line 33
Stopped due to error

The referenced link (https://go.microsoft.com/fwlink/?linkid=852159&amp;clcid=0x409) says something about a recent change to Azure functionality.

ACS Namespaces you create before June 30, 2017 will not be affected and will be fully supported, however, attempts to create new ACS enabled Service Bus, Event Hubs, or Relay namespaces using PowerShell, ARM templates, and our APIs after June 30 will fail.

This failure blocks the rest of the tutorial, because calls to Config.GetCluster() now fail too.

@MaxWilson MaxWilson changed the title Tutorial 0 fails to create ACS Tutorial 0-provision-azure-cluster errs on Config.ProvisionCluster() Sep 29, 2017
@dsyme
Copy link
Contributor

dsyme commented Sep 29, 2017

@MaxWilson Yes, unfortunately this means the tutorial is no longer valid, and there is no simple getting-started path for MBrace at the moment. We will need to adjust the docs until this is resolved

@MaxWilson
Copy link
Author

MaxWilson commented Sep 29, 2017

Thanks. At least I don't have to bang my head on the wall now. :) My aim is familiarization and experimentation, so I guess I'll just browse the samples and the docs for now without running them, at least in Azure. Hopefully I can get the Thespian samples working in VS 2015...

@isaacabraham
Copy link
Contributor

@MaxWilson In the short term, you can use the Thespian (local) cluster to get up and running. You could also give https://github.com/isaacabraham/mbrace-arm a try.
@dsyme I'll endeavour to at least find out what's causing this over the coming days.

@laygr
Copy link

laygr commented Oct 18, 2017

I ran into the same issue (I suppose many will do) and I was about to give up, but trying MBrace with Thespian sounds better.

@roguetrainer
Copy link

Same here! (Namely newbie seeing similar errors.) Glad it's not (only) my stupidity, & that I found this issue. All working fine with Thespian, so that's good.

I also tried manually creating from the Azure portal, three items:

  1. Cloud Service (classic)
  2. Storage Account
  3. Service Bus,

taking note of the connection strings (for 2 & 3) & then submitting the commands here: http://mbrace.io/starterkit/HandsOnTutorial.FSharp/going-further/200-managing-azure-clusters.html namely:

let serviceBusConnection = " ... enter ServiceBusConnectionString here ..." 
let storageConnection = "... enter StorageConnectionString here ... "
let config = Configuration(storageConnection, serviceBusConnection) 
let cluster = AzureCluster.Connect(config, logger = ConsoleLogger(true), logLevel = LogLevel.Info)

Should that work at this point? Let me just get you the error log... wow, no errors this time. It worked! I have a cluster! :) But no workers. :( When I try to run 1-hello-world, I get

[2017-11-09 14:46:45] WARNING : Could not serialize data dependencies: MBrace.Azure.Management.PublishSettings pubSettings@, MBrace.Azure.Management.Subscription subscription@, MBrace.Azure.Management.SubscriptionManager manager@, MBrace.Azure.AzureCluster cluster@, MBrace.Azure.Management.PublishSettings pubSettings@, MBrace.Azure.Management.Subscription subscription@, MBrace.Azure.Management.SubscriptionManager manager@
[2017-11-09 14:46:45] **WARNING : No worker instances currently associated with cluster. Computation may never complete.**
[2017-11-09 14:46:45] INFO : Creating cloud process "xxxxxx"
[2017-11-09 14:46:46] INFO : Posted CloudProcess<string> 'xxxxxx'.

OK, probably best to look at the new ARM code that @isaacabraham is working on rather than work with the old code?
Really looking forward to getting familiar with MBrace. This is a brilliant & powerful tool.

--

@roguetrainer
Copy link

In case this is useful to anyone else getting familiar with MBrace, I have been successful in creating four artifacts (visible on the Azure Portal) using the instructions in the README.md file, to execute commands in a PowerShell window

## Logs into Azure using your credentials - no need for pub setting 
Login-AzureRmAccount

## Create a "resource group" for the cluster, called MyCluster
New-AzureRmResourceGroup -Name MyCluster -Location "canadacentral"

## Create a 'small' MBrace cluster called MyCluster!
New-AzureRmResourceGroupDeployment -ResourceGroupName MyCluster -TemplateFile .\azuredeploy.json -TemplateParameterFile "small-cluster.json"

Bravo! (I see ProvisioningState : Succeeded.) The four resources created, which are visible from the Azure Portal, are App Service Plan, App Service, Storage Account and Service Bus.

However, I still don't have any workers? (On the basis of running cluster.ShowWorkers(), but perhaps that is a permissions issue?)

As above, I tried the F# commands here: 200-managing-azure-clusters.html namely:

let serviceBusConnection = " ... enter ServiceBusConnectionString here ..." 
let storageConnection = "... enter StorageConnectionString here ... "
let config = Configuration(storageConnection, serviceBusConnection) 
let cluster = AzureCluster.Connect(config, logger = ConsoleLogger(true), logLevel = LogLevel.Info)

which successfully gives me a cluster, but not a deployment? As before I get the warning:
"WARNING : No worker instances currently associated with cluster. Computation may never complete."

At that point, should I be able to go straight to 1-hello-world.fsx & start to execute cloud workflows, such as

let quickText = 
    cloud { return "Hello world!" } 
    |> cluster.Run

or am I missing extra steps (to create workers)? Perhaps I should not expect any code from the HandsOnTutorial to work at this point during the transition to ARM? I hope these comments are useful for other people trying to do the same thing.

@isaacabraham
Copy link
Contributor

Hi. No, that should be all you need to get things working for the ARM-based deployment. What version of VS are you running with?

Also - try getting worker stats from your cluster - what do you see?

The tutorials should work 100% with both ARM + App Service or the old Cloud Service approach. The only real different between them is that the ARM version hosts MBrace in the App Service (IIS) rather than Cloud Services (which are really just VMs with some add-ons). The code should work on both without an issue.

@o1lo01ol1o
Copy link

@roguetrainer I was able to provision and deploy a cluster by manually creating a ServiceBus resource and then passing connection strings for storage and the new bus:

let deployment = Deployment.Provision(pubSettingsFile, Region.East_US, 2, VMSize.A1, logger = ConsoleLogger(true), logLevel = LogLevel.Info, subscriptionId=subscription.Id, storageAccount=storageConnection, serviceBusAccount=serviceBusConnection)

There are some issues with VM sizes on for the smaller tiers and the provisioning takes a little bit of time before you'll get workers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants