使用Amazon AWS进行自动扩展的方法

我想知道自动缩放我的Web应用程序体系结构的可能选项。 我在架构师有web app(Tomcat),中间件(RabbitMQ),数据库(MongoDB),工人(独立的Java应用程序)。 现在我正在尝试基于CPU利用率进行扩展。 我可以自动扩展我的networking应用程序和工作人员,但我正面临着缩放rabbitmq的问题,因为我不知道如何传递负载到新instantinated rabbtimq服务器。

例如,我有2个Tomcat服务器正在运行。 只要我的RabbitMQ实例的CPU利用率大于80%,AWS就会添加一个新的RabbitMQ服务器。 但是我的Tomcat服务器不知道添加了一个新的RabbitMQ实例,所以他们一直只提到原来的RabbitMQ服务器,而不是新创build的那个。

我能做什么? 当兔子CPU利用率boost时,我应该自动缩放整个架构吗? 还是应该放弃完全自动扩展RabbitMQ的想法,并在部署的初始阶段创build所需的实例? 还有其他的select吗?

问题是你的Tomcat服务器(很可能是你的工作人员)不了解RabbitMQ服务器。 你需要在这种情况下做两件事情之一:(a)告诉他们有关新的服务器,或(b)让他们不在乎

对于上面的(a),您可以在新的RabbitMQ服务器启动时通知每个Tomcat服务器和工作者,或者将信息放在其他组件所引用的列表中。

但是,在这种情况下,假设您在RabbitMQ#1上有一个队列,那么如果启动RabbitMQ#2,该队列会发生什么? 在这种情况下,实际上有2个队列,而不是一个跨2个服务器的队列。 你的应用程序处理这个吗?

对于上面的(b),你可以看看RabbitMQ集群 。 我的理解是,用RabbitMQ集群,你可以有节点来去,客户不应该在意。