我有一个连接到MySQL集群的web服务器(它是Galera集群)。。。集群工作得很好(如果我在MySQL的第一个实例上更新一条记录,它会在第二个实例上自动更新)。问题是我需要一个web服务器和MySQL实例之间的负载均衡器。。。
所以我所做的是建立一个AWS网络负载均衡器(NLB工作在网络层,在我的例子中是TCP)。。。我已经将MySQL的2个实例添加到NLB的目标组(它们的私有IP)。
现在我继续更新Web服务器中的连接字符串以连接到NLB:
<add name="MyDB" connectionString="Server=my-nlb-ap-southeast-2.amazonaws.com; Port=3306; Database=mydb; Uid=user1; Pwd=mypassword; Protocol=TCP" providerName="MySql.Data.MySqlClient"/>
但我得到以下错误:
[MySqlException(0x80004005):无法连接到任何
指定的MySQL主机。]MySql.Data.MySql客户端.NativeDriver。打开()
+1734 MySql.Data.MySql客户端.司机。开门() +60 MySql.Data.MySql客户端.驱动程序。创建(MySqlConnectionStringBuilder)
设置)+309
MySql.Data.MySql客户端.MySqlPool.CreateNewPooledConnection连接() +18
MySql.Data.MySql客户端.MySqlPool.GetPooledConnection() +290
MySql.Data.MySql客户端.MySqlPool.TryToGetDriver文件() +151
MySql.Data.MySql客户端.MySqlPool.GetConnection() +60
MySql.Data.MySql客户端.MySqlConnection.打开() +1588
MySql.Data.MySql客户端上午ySqlProviderServices.GetDbProviderManifestToken(数据库连接)
连接)+182
系统数据实体.核心.Common.DbProviderServices.GetProviderManifestToken(数据库连接)
(连接)
当我尝试从web服务器连接到MySQL时,我得到以下结果:
这表明web服务器能够通过NLB访问MySQL实例,但我不知道为什么连接字符串不起作用。
我已经打开了3306端口的所有IP,我可以通过NLB从我的本地计算机(不在VPC)连接到MySQL:
但是web服务器连接字符串不起作用。。。
我不完全确定是否有可能使用NLB来达到这个目的?