What does Azure Web Apps architecture look like?

I had several outages from 10 to 15 minutes, because, apparently, Microsoft had a “bug” on their repositories. They told me that this is because of the shared file system between the instances (what makes it the only point of failure?)

I did not understand this and asked how the file share is involved , because I would assume a really dumb stateless IIS application that communicates with SQL Azure for its data.

I would suggest the following situation:

Architecture i suggested

This is their answer to my question (I did not include the picture)

File bundles are not necessary for your web application to communicate with other resources, but they are on our side where the content of the application resides. This is what we had in mind when we talked about storage inaccessible on our file servers. The reason for the restart for your application, which is located on both instances, is because the resources are shared, the underlying storage will be the same for both instances. This is the reason why it falls, others will also follow in the end. If you really want the availability of the application for improvement, you can always use a traffic manager. However, there is no guarantee that even with an in-place traffic manager, the application does not go down, but it improves the overall availability of your application. We also recently released an update for production that should take care of restarts caused by storage errors ideally, but in order for this function to be deleted, you need to make sure that there is enough memory to be available in cases where this function should be involved. We have a couple of options that you can to avoid unexpected restart of the application due to at our end:

  • You can evaluate whether you want to switch to a larger instance so that we can have enough memory for the recirculation function of the floor, which should be feet.

  • If you do not want to switch to a larger instance, you can always use the local cache described by us in our previous email.

Due to the time difference, communication takes age. Can someone tell me what is wrong in my thoughts?

The only thing I think about is that when you include two instances, they run on the same physical server. But for me it really makes little sense.

I have two instances of one core, 1.75 GB of memory .

+4
web-applications architecture azure failover azure-web-sites
source share
2 answers

My presumption for application service plans was that they were automatically divided into an accessibility set (see brief description below) Largely based on the sales spiel web application , which states

The App service provides availability and automatic scaling in the global data center infrastructure. Easily scale applications up or down on demand and get high availability within and across geographic regions.

Following David Abbo's answers and comments, the basic architecture of web applications seems to be that the virtual machines themselves are divided into accessibility groups. However, all instances use the same file server to share the underlying disk space. This file server is an important single point of failure.

To reduce this, Azure created a WEBSITE_LOCAL_CACHE_OPTION , which will cache the contents of the file server in separate instances of the web application. Use caching instead of robust technical principles of high availability.

The problem is that as a client, we have no visibility in this problem, we have no idea if there is a plan to fix it or if it will ever be fixed, since it seems unlikely that Azure is going to release a document that recognizes how much it was designed, even if it means that it is fixed.

I also can not imagine that this issue will be different from ASM and ARM. It seems extremely unlikely that a high availability backend solution was initially installed, which they unloaded when ARM arrived. Therefore, it is very likely that cloud services will suffer from the same problem.

The small potential is that now that we know that this is a problem, one possible solution would be to deploy multiple web applications and have a traffic manager between them. Even if they are in the same region, different applications must have different server file servers.

My first step would be to reply to this email with a link to a web application page (and to this question) with a copy of the quote and ask how to enable high availability inside . geographic region.

After that, you probably need to rebuild your solution!

Available sets

For virtual machines, Azure allows you to specify an availability set . The availability set automatically divides virtual machines into separate update and failure areas. This means that the servers will be in different server racks and these server racks will not receive updates at the same time. (it's a little trickier than that, but what a basics!)

+5
source share

Azure Web Apps uses a shared file storage. The best way to think that all instances of your application are mapped to the same network resource in which your files are located. Therefore, if you modify files according to some average values ​​(for example, FTP, msdeploy, git, ...), all instances instantly receive new files (since there is only one set of files).

And to answer your last question, each instance runs on a separate virtual machine.

+4
source share

All Articles