代码之家  ›  专栏  ›  技术社区  ›  Hooman Bahreini

使用MySQL集群的负载均衡器

  •  0
  • Hooman Bahreini  · 技术社区  · 6 年前

    我有一个连接到MySQL集群的web服务器(它是Galera集群)。。。集群工作得很好(如果我在MySQL的第一个实例上更新一条记录,它会在第二个实例上自动更新)。问题是我需要一个web服务器和MySQL实例之间的负载均衡器。。。

    所以我所做的是建立一个AWS网络负载均衡器(NLB工作在网络层,在我的例子中是TCP)。。。我已经将MySQL的2个实例添加到NLB的目标组(它们的私有IP)。

    enter image description here

    现在我继续更新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时,我得到以下结果:

    enter image description here

    enter image description here

    这表明web服务器能够通过NLB访问MySQL实例,但我不知道为什么连接字符串不起作用。

    我已经打开了3306端口的所有IP,我可以通过NLB从我的本地计算机(不在VPC)连接到MySQL:

    enter image description here

    但是web服务器连接字符串不起作用。。。


    我不完全确定是否有可能使用NLB来达到这个目的?

    0 回复  |  直到 5 年前