Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    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?

    Scheduled Pinned Locked Moved Support
    6 Posts 4 Posters 42 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      carl.westman_8110
      last edited by carl.westman_8110

      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

      https://github.com/Wesztman

      dean-houstonD M 2 Replies Last reply Reply Quote 1
      • C Offline
        carl.westman_8110
        last edited by carl.westman_8110

        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

        https://github.com/Wesztman

        1 Reply Last reply Reply Quote 0
        • dean-houstonD Offline
          dean-houston inedo-engineer @carl.westman_8110
          last edited by

          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

          C 1 Reply Last reply Reply Quote 0
          • C Offline
            carl.westman_8110 @dean-houston
            last edited by

            @dean-houston

            Ahh, thanks for pointing that out :)

            https://github.com/Wesztman

            1 Reply Last reply Reply Quote 0
            • J Offline
              jpot_0131
              last edited by

              Hi Carl,

              Would you mind sharing the startup command that you're using? Can't get it to work properly.

              Ty,
              Jeremy

              1 Reply Last reply Reply Quote 0
              • M Offline
                marco.vonballmoos_9276 @carl.westman_8110
                last edited by

                @carl-westman_8110 I was wondering whether you'd be willing to share your Bicep script or could give some tips from it? I'm looking to set up pretty much exactly what you have: Azure Container App / Azure SQL DB / Azure Storage and would very much appreciate seeing how you did it without having to reverse-engineer everything.

                Thanks for a short answer, even if you can't share.

                1 Reply Last reply Reply Quote 0

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                • 1 / 1
                • First post
                  Last post
                Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation