我有一个Web应用程序,它包含一个由Web托pipe公司pipe理的Web服务器,一个在amazons云中的一组EC2实例和一个MySQL数据库(托pipe在Web服务器上)。 MySQL位于防火墙之后,设置为允许从本地主机和单个IP地址进行访问,该IP地址是连接到我至今运行的EC2实例的Amazon弹性IP地址。
问题是我想看看我的EC2实例的扩展和负载平衡策略。 为此,我一直在研究Amazon提供的弹性负载均衡器和自动扩展工具,并设法将其设置正常,但有一点 – 连接到运行在我的Web服务器上的MySQL数据库。 我意识到(感谢Serverfault上的答案),我需要检查防火墙设置并为负载均衡器添加IP地址,但Elastic Load Balancer为您提供DNS名称,而不是IP地址,事实上IP地址随时间而改变这是行不通的。 托pipe数据库的公司告诉我,防火墙的工作方式是查找DNS名称的IP地址并存储IP而不是DNS名称。 所以基本上这是行不通的,允许访问的唯一方法是打开SQL端口以允许任何人访问!
这是一个可行的想法? 我应该看看把数据库移到云端吗? 服务器公司可以使用另一个防火墙吗? 我应该find另一种负载平衡的方式(如果是的话)?
棘手的一个呃? 任何帮助赞赏!
EC2实例获得自己的IP,不pipe它们是否在Elastic Load平衡器之后。 您不能将Elastic Load Balancer IP添加到防火墙以允许从EC2实例访问,因为EC2的外出IP不是Load Balancer的IP,而是它自己的实例的IP。
如果您打算拥有多个EC2实例,那么您肯定需要一种方法来在您的MySQL服务器防火墙上允许多个IP。 因为每个EC2实例都有自己的外发IP。
千万不要打开你的MySQL端口给大家。
你的问题不是负载均衡器,而是MySQL服务器。 如果你可以将你的数据库移动到云端,那将是最好的方法。
有几种方法可以解决这个问题:
设置一个脚本,每隔30秒左右检查一次,并确保防火墙规则设置正确,并将失败连接的error handling编码到您的应用程序中(不受欢迎)。
使用apache服务器作为负载均衡器(或几个使用DNS循环指向,因此只能监视几个IP地址)。 Apache具有相当成熟的负载平衡function,您可以利用而不是ELB。
这是EC2的问题之一,这个选项是创build一个从EC2实例到您的数据库服务器(使用stunnel,或ssh或ipsec,您的select)的自动VPN隧道,如果你有足够的带宽,它应该解决你的问题很好。 我会亲自去stunnel。
反应式防火墙的问题在于它会在某个层面上造成一些中断。