I need to read and publish messages to a Rabbit MQ instance from multiple app services on Azure.
Could anyone please suggest the Azure service that I should be using to host the Rabbit MQ instance?
Checkout RabbitMQ as a service on https://www.cloudamqp.com/
It's available on Azure, the free plan is somewhat restricted on regions but the paid plans are much better supported across Azure regions.
There is no Managed option available in Azure, you can consider installing in two ways,
Create individual Linux VM’s, Install RabbitMQ on it, Connect the RabbitMQ nodes installed in each VM.
Install RabbitMQ Cluster package provided by Bitnami in Azure.
Related
I have looked for documentation on the right set of steps to get an agent within our network to deploy to a service fabric cluster (also within our network) using gMSA.
The error received is "##[error]Could not ping any of the provided Service Fabric gateway endpoints."
The same agent can connect to the cluster using PowerShell just fine. What's worse, there is a development cluster on the agent itself and it cannot even connect to that.
There is nothing about how to ensure an on-prem agent can connect to an on-prem machine if using the online version (Azure DevOps) and gMSA for the Service Connection. If anyone has had success in this area or has pointers to better documentation, it would be greatly appreciated.
I'd think your agent service needs to run under the gMSA identity, not under system identity or network service. reinstall it\reconfigure it to use gMSA identity and it should work
I have just started exploring Azure Service Fabric & I'm finding the concepts involved a little overwhelming
Consider these 2 statements -
"Service Fabric is agnostic to the underlying hosting provider. You
can run it in Azure, you can run it on AWS, you can run it on 5
laptops - it doesn't matter."
"Azure Service Fabric for Windows Server..can be used
to..provision Service Fabric clusters in their own datacenters or
other cloud providers, and run production workloads"...any Windows Server environment...there is no real lock-in to Azure as a cloud platform
As per my understanding,
1) in Azure, app can be deployed to "Azure Service Fabric" PaaS platform.
2) On a local development machine, it can be deployed to physical or virtual machine(S) that support Azure Service Fabric SDK
3) On "other cloud providers", "Azure Service Fabric for Windows Server" has to be installed(?) on VMs before app can be deployed.
So when an app runs on Azure, it is the "Azure Service Fabric" PaaS platform but if it is deployed to any other cloud provider, it is in an IaaS mode and the maintenance of the SF infrastructure & supporting functions have to be done by deployer of the app
Is my understanding correct?
Is there any documentation on running Service Fabric on non-Azure cloud like AWS?
Can someone elaborate on the purpose of "Azure Service Fabric for Windows Server" & Azure Service Fabric SDK?
When using Azure as the cloud platform to host your Service Fabric cluster then you get some benefits from being able to setup and manage (some aspects of) your cluster directly in the Azure portal, as well as connecting it to other Azure resources such as Azure Key Vault for storing your cluster certificate securely and OMS/Azure Log Analytics for analyzing your log data from the cluster. You still get a set of IaaS resources created for you though when you set up a Service Fabric cluster in Azure, a minimum of the following IaaS resources are at least created for you:
Virtual Machine Scaleset
Public IP address
Virtual Network
Load Balancer
Storage accounts
Depending on the number of nodes and nodetypes there may be multiple instances of these. Each of the nodes are in turn a VM running (by default) Windows Server 2012 R2 Datacenter (you can change that in your template as well).
Running Azure Service Fabric on Azure is not really a PaaS solution, you are far to much in contact with the supporting infrastucture for that to be true. It is a mix of IaaS and PaaS I would say.
On you local development machine you can run a local development cluster that emulates running a 1 or 5 nodes cluser on you local machine. It is only intended for development and there are some features of this local cluster that will behave differently (for instance, you cannot run a reverse proxy there). https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started
If you want to run Service Fabric on any other platform than Azure, such as an on premice data center or in another cloud platform (AWS for instance), then you should look at Create and manage a cluster running on Windows Server. You will then need to create an infrastructure similar to the infrastructure created by Azure when you create an Azure Service Fabric resource directly in Azure. You will need to create a number of VMs (or physical machines) with Windows Server 2012 R2 (or later) that are connected on the same network (virtual or physical) and you will likely need some form of load balancer. When you run Azure Service Fabric in this way you are yourself responsible for maintaining your infrastructure in terms of monitoring and maintaining them (patching the OS on your VM's, monitoring the network for vulnerabilities, etc.).
There is also a preview for running Service Fabric on Linux machines but it does not support Standalone installations yet. https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-linux-overview.
When you have your Service Fabric cluster running on either Azure, local development cluster or as a Standalone cluster, then you could in a way consider that installation as your PaaS platform for adding new microservices.
I have a web app built on .Net 4.6. The application utilises elasticsearch and redis which are hosted in an Azure VM. I am trying to connect Azure VM(ElasticSearch+Redis) to Azure WebApp(.Net WebApp) using internal network. i.e, WebApp and VM should interact with each other on LAN and not the internet. I am not able to understand Azure VNET use case scenario from its description in docs.
Does Azure VNET enable the above-mentioned scenario? If yes, How? If No, Please suggest the best way to archive this.
Out of curiosity, could you please let me know why are you using a VM for Redis and Elastic Search?
With regards to your questions, you can definitely do that. Please read Getting Started at the below link to understand -
Integrate your app with an Azure Virtual Network
I have a application that can be broken down into multiple communicating services. My current implementation is monolithic and I want to reorganize it so that individual components can be deployed,iterated upon, scaled independently. I see two ways to do this with Azure:
Service Fabric service composed of set of communicating micro-services (stateless, web-api etc.)
A collection of individual Azure Web Apps/ Cloud Services that call each other at the http end points.
Are there any obvious advantages of 1 over 2? Any rule of thumb to chose one over the other would also be very helpful.
I think this page compares it well: https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-cloud-services-migration-differences/
I can't tell it better than this.
There is not really a rule of thumb. Service Fabric might seem more complex but offers some things that Cloud Services / Web Apps don't.
A quick summary (taken from the link provided):
Service Fabric itself is an application platform layer that runs on Windows or Linux, whereas Cloud Services is a system for deploying Azure-managed VMs with workloads attached. The Service Fabric application model has a number of advantages:
Fast deployment times. Creating VM instances can be time consuming. In Service Fabric, VMs are only deployed once to form a cluster that hosts the Service Fabric application platform. From that point on, application packages can be deployed to the cluster very quickly.
High-density hosting. In Cloud Services, a Worker Role VM hosts one workload. In Service Fabric, applications are separate from the VMs that run them, meaning you can deploy a large number of applications to a small number of VMs, which can lower overall cost for larger deployments.
The Service Fabric platform can run anywhere that has Windows Server or Linux machines, whether it's Azure or on-premises. The platform provides an abstraction layer over the underlying infrastructure so your application can run on different environments.
Distributed application management. Service Fabric is a platform that not only hosts distributed applications, but also helps manage their lifecycle independently of the hosting VM or machine lifecycle.
Peter has done a great summary. And here are my additional points:
Cloud Service is not designed for micro service pattern, while Service Fabric is. If you want to enjoy the benefits brought by micros service, Service Fabric is your best choice.
With Cloud Service, if you want separate your application into autonomous services, you either
Create multiple cloud services. Which is difficult to monitor and manage since there is not a unified interface for a group of cloud services, Cloud Service is just not designed for this pattern.
Or add multiple roles into a single cloud service, this will lead to a) bloat of your cloud service configuration file, because all service configurations are in a single config file; and b) to upgrade a single role, you end up redeploy the whole cloud service!
Cloud Service doesn't support cross region/DC deployment, while Service Fabric does. That means you can turn a DC level disaster recovery into a normal failover, which automatically handled by Service Fabric, see this.
The need has come in which we have to consume data coming from a 3rd party in which they have an Amazon SQS instance setup on top of the AMQP protocol. They have given us the following:
queue name
user name
password
port
virtualhost
host
We are a cloud-born company in which we host everything in the Azure cloud, e.g. web services, web apps, databases, etc.
I would like to find out the following:
What "service" should I design or develop on from Azure that can consume messages from an Amazon SQS?
If Azure Service Bus supports AMQP 1.0 and Amazon SQS supports AMQP 0.9.3, can this be a plausible path?
I guess my question is more related on how to architect my solution. I know there are frameworks like RabbitMQ, but would like to avoid the VM path. If solutions like RabbitMQ are the way to go, can only the "consumer" pieces be utilized and not the "server" pieces of RabbitMQ implemented?
Any and all advice will be greatly appreciated.