Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

Scaling Proget as an Azure Container Web App, what about the SQL DB?



  • Hi there!

    We run Proget as an Azure Container Web App atm with great success. To this we have an Azure SQL DB and we have mounted an Azure storage account file share at /var/proget to get all the files stored in Azure and backed up there. Everything deployed with Bicep, which is awsome 😄

    There are some cool features for Azure Web Apps though that I would like to utilize to maximize the robustness and up time of our Proget instance for our developers.

    One such feature is the "scale out" together with "Health check". This (if I understand correctly) would allow me to run multiple instances of the Proget container and Azure will ping them to see if they are healthy. If one is deemed unhealthy it will be brought down and replaced.

    I however have some concerns about what happens if I scale out the web app to multiple instances but they all have the same SQL database and file share? The file share shouldn't be an issue, but what about the database? Can it handle writing and reading from multiple instances of an Azure Container Web App? Do you have any experience or best practices regarding this? 😊 I'm not very experienced with DB:s, and my biggest concern is that there will be any deadlock, corrupt data and overall breakage of the data in the DB, but maybe that is not a concern.

    Also when on the topic, do you have any recommended path to probe/ping for checking health of both the Proget instance and the SQL DB connection?

    12845eed-a8cb-4c86-85ce-e6915341eaa8-image.png

    I guess some endpoint which tries to read something from the DB and returns a non 200-299 code if the read fails would be good. It should be something "static" and not a path to a package which could be removed any time in the future.

    (If there are concerns with the DB I guess a single instance with "auto replace" by the health check is good enough, but this would cause a one hour downtime which would be nice to not have 😊)

    It should be noted that we do not have any kind of load on Proget since we are pretty few devs, I would only like to use these features to increase the uptime and robustness of the app 😊 since people will come and complain at me if Proget is down 😜

    Cheers
    Carl



  • As an answer to my question about health (and for anyone coming here in the future), I should've just read the docs properly, it was very clear what to check 😅 I love Proget! These things just exists and are well documented 🥰

    https://docs.inedo.com/docs/proget-reference-api-health


  • inedo-engineer

    Hi @carl-westman_8110,

    Thank you so much for the kind words, and it sounds like you're on the right track for setup/configuration!

    ProGet is designed for the scenario you described (i.e. a multiple instances that point to the same database/files), and we call it a server cluster:
    https://docs.inedo.com/docs/installation-high-availability-load-balancing

    The above instructions are for Windows, but the same principle would apply for Azure Web Apps, Kubernetes, etc. We just don't have documentation or the ability to support the underlying platform. What I mean by that, if the "scale out" feature in Azure doesn't do what it's supposed to, you would need to contact Azure support.

    All that said, do note that a ProGet clustered installation requires a ProGet Enterprise license:
    https://docs.inedo.com/docs/proget-administration-license

    Hope that helps,

    -- Dean



  • @dean-houston

    Ahh, thanks for pointing that out :)


Log in to reply
 

Inedo Website HomeSupport HomeCode of ConductForums GuideDocumentation