MSDN Blogs
Blog of Microsoft's Eric L. Golpe         .NET Junkie


  • < Confessions of .NET Junkie Eric Golpe />

    Windows Azure CAT Recommended: FailSafe Training Availability

    • 0 Comments

    Our Windows Azure Customer Advisory Team (CAT) is always keen on getting more guidance out to the field and customers, drawn from the joint experiences of CAT and MCS.  A 2-day “FailSafe” training course has just landed on Channel 9 and is available.  This complements our extant content around Cloud Service Fundamentals, as well as the core platform guidance and training content.

    While there are other great references and guidance bits out there, here’s a list of what we’ve been generally recommending as a baseline for customers to be familiar with before engaging in Windows Azure Architecture and Design sessions and reviews – and it has really helped in driving more productive discussions all up.

    clip_image001 FailSafe Training  http://aka.ms/Epljgj [9 hours of design goodness!]

    clip_image001[1] Cloud Service Fundamentals  http://aka.ms/Q4grt2

    clip_image001[2] Windows Azure Training Kit  http://bit.ly/IjTnyh

    clip_image001[3] Windows Azure Videos on Channel 9:  http://aka.ms/Okootg

    clip_image001[4] WebAPI -- http://bit.ly/yKGZWm, http://bit.ly/zSrIcBhttp://bit.ly/LaqZQu, http://bit.ly/wDR7m2

    clip_image001[5] (Async) ADO.NET -- http://bit.ly/166rEhN, http://bit.ly/SvsHQP

    Quick blurb on FailSafe:

    The mission of the FailSafe Initiative is to articulate recommendations and approaches for delivering resilient and scalable cloud architectures. FailSafe delivers general guidance on building resilient and scalable cloud architectures, guidance for implementing those architectures on Microsoft technologies generally, and scenario specific architectures that implement those architectures in context.

    Developed by Microsoft Services and the Windows Azure Customer Advisory Team, this series provides both platform agnostic concepts and patterns as well as Windows Azure specific implementation guidance.

    Enjoy!

  • < Confessions of .NET Junkie Eric Golpe />

    Windows Azure Mobile Services & Windows 8

    • 0 Comments
    The new Windows Azure Mobile Services series helps people get started with each of the Mobile Services features.  In addition to the previous channel9 videos from Scott Guthrie and Josh Twist, this week  8 new getting started and how-to videos for Windows 8 & Mobile Services have been published.  There will be more videos to added to this series for iOS and Windows Phone 8 soon. 
    1 2
    Introduction to Windows Azure Mobile Services Creating your first app using the Windows Azure Mobile Services Quick Start (New)
       
    3 4
    Connecting your Windows Store app to Windows Azure Mobile Services (New) Validate and Modify Data with Server Scripts in Windows Azure Mobile Services(New)
       
    5 6
    Getting Started with Authentication in Windows Azure Mobile Services (New) Authenticate and Authorize users with Server Scripts in Windows Azure Mobile Services (New)
       
    7 8
    Add Push Notifications to your apps with Windows Azure Mobile Services (New) Getting Started with the Windows Azure Mobile Services Scheduler (New)
       
    9 10
    iOS Support in Windows Azure Mobile Services Creating your first iOS app with the Windows Azure Mobile Services Quick Start (New)
       
     
  • < Confessions of .NET Junkie Eric Golpe />

    Windows Azure PaaS – Role instance health and load balancer requests.

    • 0 Comments

    There is a very common question I get asked on a regular basis, and that is “How does Windows Azure determine role health, and how can I take machines in/out of the load balancer rotations?”  There’s lots of information out on the web, but I wanted to re-post some relevant information to get you up to speed quickly.

    Here’s the typical question I get, this one from a customer deploying WCF services:

    How does Azure determine if a web role instance is health or not?  Does it use a health check page and how to configure it?  What is the best practice to notify the load balancer that a particular web role instance needs to be taken out of the pool?  In our case, we want to take the web role instance out of the load balance pool if WCF service has a problem.  Thanks!

    I’ve taken the liberty of consolidating information from MSDN and other blog posts, to make the answers a bit more concise:

    To take the instance out of the load balancer pool, here is a proven practice:
    You can use the RoleEnvironment.StatusCheck event of the Role Environment to change the status of the role instance. A role instance may indicate that it is in one of two states: Ready or Busy. If the state of a role instance is Ready, it is prepared to receive requests from the load balancer. If the state of the instance is Busy, it will not receive requests from the load balancer. By calling the SetBusy method of RoleInstanceStatusCheckEventArgs, you can temporarily set the status of the role instance to Busy, which removes the role instance from the load balancer.
     
    In terms of "health", it is complex logic/interactions with the Fabric Controller, which interacts with monitoring agents on PaaS VM's, running under their own process:
    The Azure platform in the form of the Fabric Controller (FC) provides monitoring for a health of a role instance.
    The table below summarizes some common (but not all detected) problems, their detection mechanism and the action taken by the fabric controller:
    Problem
    How Detected
    Fabric Action
    Role crashes
    Guest VM Fabric Controller agent monitors role termination
    Fabric Controller will request that the agent restart the role.
    Guest VM or agent crashes
    The root Fabric Controller agent will notice an absence of heartbeats from the guest.
    Fabric Controller will restart the VM, and the roles hosted therein.
    Root OS or agent crashes
    The Fabric Controller will notice an absence of heartbeats from the guest.
    After some retry logic,
    Fabric Controller will reallocate the roles assigned to this node to a healthy node.
    Physical hardware problems
    Fabric Controller agent will report disk, memory, or CPU failure to Fabric Controller.
    Fabric Controller will migrate the roles hosted on the node to other nodes, and mark the node “out for repair”.
     
    Timing of course varies for each of these conditions, but generally the Fabric Controller responds within several seconds whenever detected conditions arise.
    Conditions which constitute a role crash include the host process (WaWorkerHost or WaWebHost) terminating for any reason because of an unhandled exception or the role exiting (i.e. a worker role exiting the Run() function).
    Note that child processes invoked are by default tied to the same Process Job Object, and hence any crashing in those children or grandchildren will invoke the same response by default.
     
    In addition, a role instance can indicate also indicate it is unhealthy to the fabric controller which will cause the agent to restart the instance.
    There are however conditions where a failure of a role will not recognized by the Azure fabric controller. These conditions include:
    • Role instance goes into infinite loop
    • Role instance hangs
    • Role instance performance has degraded.
    When the RoleEnvironment.RequestRecycle method is called, the load balancer takes the role instance out of the rotation and the normal shutdown cycle is initiated. New requests are not routed to the role instance while it is restarting.
    Windows Azure raises the Stopping event and calls the OnStop method where you can run the necessary code to prepare the role instance to be recycled. Using the scenario where the performance of a particular role instance has degraded due to some resource leak, for example only processing 1% of its typical throughput. In an on-premise deployment this condition would be typically be detected by system management software (e.g. Operations Manager) using performance counter rules and triggering a restart of an application pool or windows service as its corrective action.
    An application can signal the health of a role instance to Azure by implementing the RoleEnvironment.StatusCheck event. If the handler for StatusCheck returns anything other than RoleInstanceStatus.Ready then the load balancer will stop sending incoming requests to that role instance. It will not recycle your role, however the role runtime API (RoleEnvironment) lets an instance request its own recycle. If you want to force a role recycle based on an internal health check a role must call RoleEnvironment.RequestRecycle. Care must be however taken not to open the service to any denial of service attacks which target the triggering of the condition.
    If you wanted to provide the ability for external system management software to trigger the restart of an instance then this mechanism would need to be built into the role itself to monitor for an external trigger, perhaps some storage that the role instances polls.

     

    Hope this helps make it a bit more concise for folks.

    Eric L. Golpe
    Senior Consultant II  - Microsoft Consulting Services – US Northwest District

  • < Confessions of .NET Junkie Eric Golpe />

    Azure PowerShell Tip

    • 1 Comments

    Many tutorials or operations call for the use of Windows Azure PowerShell cmdlets.  Assuming you have them installed via WebPI with the latest SDK, you might have noticed the Azure PowerShell shortcut simply sets the path to the commandlet module manifest file, and then imports the requisite modules.

    I'm all about PS from the default cmd interpreter, so I usually Windows key and run "PowerShell" directly. By setting the Azure SDK PowerShell path the default PSModule path (which you can view by calling $env:PSModulePath at a PS prompt), you can simply do a "Get-Command *azure*" to autoload the relevant modules, while quickly listing some of the most common cmdlets you can use.

    To set the latest SDK path, you can use $env:PSModulePath = $env:PSModulePath + ";C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\"

    Enjoy!

  • < Confessions of .NET Junkie Eric Golpe />

    Dogfood: The joys of eating healthy, and the joys of Windows Azure

    • 0 Comments

    Been quite awhile since I blogged.  I’ve been inundated with Microsoft work, having spent the last two years an an integral member of our Windows Azure ESWAT team. (ESWAT standing for Enterprise Strategy Worldwide Windows Azure Team.) 

    Now that our fiscal year has passed, I can disclose a bit more of where we have been, as a team that has brought these strategic investments to life, making the Windows Azure platform the greatest cloud-computing bet on the planet.  Still a part of Microsoft Consulting Services (MCS), ESWAT is a HQ-driven team, consisting of 6 geo-dispersed senior resources.  The team was formed two years ago, when I transitioned to it from the Windows Azure Technical Adoption Program, where I led early adoption efforts.  ESWAT works with our larger Microsoft enterprise customers to focus on enterprise architecture and strategy, working on lighthouse and exploratory opportunities, as well as driving our company’s intellectual property that spans whitepapers and Architect Training material for our Business Groups, with additional focus on Microsoft Partners and SIs.  Over the last two years, our team has worked on highly strategic customer wins with large customers in key vertical markets.  In the past year alone, our teams training materials have reached over 8,000 architects worldwide, with our efforts bringing over 110 large-scale deployments to the platform. (What’s large you ask? Think hundreds (and in many cases thousands) of virtual machines running Platform-as-a-Service architected solutions with high complexity.) Some of the key scenarios we have seen customers building out on Windows Azure over the last four years include:

    Scalable Web Sites & Services
    Large Scale Storage
    Federated Identity
    High Performance Computing
    Cloud-Based Enterprise Service Bus Capabilities
    Mobile and Consumer Device Applications
    Hybrid (Private/Public) Cloud Solutions

    Many of these customers have featured case studies you can refer to.

    It’s been awesome to work with the majority of our key customers, and our product group engineering staff over the past four years.
    Last year, the Windows Azure Center of Excellence (CoE) was formed to complement ESWAT’s activities, and “double-down” on our Microsoft Services investment for our customers.  The CoE is home to 8 senior technical resources, whose goal is to  increase Services engagements through driving Windows Azure knowledge, skills and implementation in the MCS delivery field, specifically targeting Solutions and Delivery Consultants that work for Microsoft. The team drives each of these through a combination of pre-sales engagements, readiness, skills development, and information exchange.

    Over a month ago, as we head into our new fiscal year, I made a decision to not continue with ESWAT, or the CoE, and continue my career focus on driving large scale customer engagements in a longer-term capacity.  Windows Azure has grown exponentially, and continues to mature and be a major focus for all of our company and shareholders.  Walking alongside a project that has grown from its incubation years as “Red Dog”, to a diverse “Swiss-Army Knife Cloud Computing Platform” driving our largest efforts within the Server and Cloud Division at Microsoft has been fantastic experience, and I’m sure that experience will continue to grow.  With our pushes to provide Infrastructure-as-a-Service (IaaS) capabilities, a new generation of solutions is cresting the horizon.  Customers can now make use of persistent VM’s spanning a diverse set of operating systems, leverage virtual networking capabilities, seamlessly provision a host of web sites to support core business initiatives, and have full media lifecycle management with large-scale media service solutions. It is no doubt we will see an additional set of of key scenarios being added to those already popular on the platform.

    But one of the most satisfying things to watch is how we, the employees of Microsoft, are using our own technology to solve business problems. You may have noticed on Steven Sinofsky’s blog, that Windows 8 has now released to manufacturing, and internally, our IT folks are busy rolling out Windows 8.  I got the opportunity over the weekend to install our release build of Windows 8, which was delivered to me, outside of our corporate network, with some cool IT UI and tooling, via our very own Windows Azure platform.  This is the first time I haven’t had to take my lazy butt, drive to the office, and do some installation that takes hours upon hours.   In fact, the whole process took me under 15 minutes with my Samsung Series 7 slate, in the comfort of my home desk chair.   That’s an exceptional experience for a company that employ’s over 175k++ people. 

    To make it even sweeter, our Office 2013 Preview, with the latest Word, PowerPoint, Lync and OneNote, all core productivity tools of mine, were pre-installed in the preconfigured OS delivered to my machine, along with other internal tools pre-configured. 

    Now I can gloat in the fact I’m running the latest and greatest, patched to the fullest bill of health, and I can get back to eating my salad and building even more real-world customer solutions with Windows Azure.

Page 1 of 15 (75 items) 12345»