Mysql

在實例內訪問時,主機網路的負載平衡不起作用

  • February 15, 2020

我設計了這個基礎設施。 最初的

ECS 新加坡:

  • 入口:0.0.0.0/0
  • 出口:0.0.0.0/0

ECS 集群 ASG SG:

  • 入口:0.0.0.0/0
  • 出口:0.0.0.0/0

現在,當我 SSH 到實例 EC2 No 1 時。有時我可以訪問 MySQL,有時不能:

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.

現在我對基礎設施進行修改:

在此處輸入圖像描述

我無法從實例 1 訪問 MySQL,我可以從實例 2 訪問 MySQL

實例 1

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

ec2-user@EC2No1 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
ERROR 2003 (HY000): Can't connect to MySQL server on 'loadbalancerdomain.co.uk' (110)

實例 2

ec2-user@EC2No2 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.


ec2-user@EC2No2 $ mysql -u root -hloadbalancerdomain.co.uk -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.

目標群體:

任務定義網路模式:HOSTTG1 TG2

問題

我怎樣才能解決這個問題?

用於任務定義的awsvpc網路模式不存在此問題,但我需要擴展實例以使用此模式。

NLB 的問題在於它通過客戶端 IP。如果您在 ECS1(例如 10.0.0.10)上並連接到 NLB(10.0.0.20)並且它恰好將您發送回 ECS1 的 mysql 容器,那麼看起來連接來自 ECS1。

換句話說,您的 mysql 客戶端從 10.0.0.10 連接到 10.0.0.20,但 mysql 認為它是從 10.0.0.10 連接的,而不是從 10.0.0.20 連接的。反過來,響應來自 10.0.0.10 回到 10.0.0.10。那是行不通的。

另外:您在兩個獨立的容器中有 2 個 mysql 數據庫?您希望它們如何同步?如果我在左邊插入一些東西,然後通過下一個連接 NLB 將我發送到右邊,它就不會在那裡。

如果您需要可靠的 mysql 數據庫,請查看AWS RDSAWS Aurora。在容器中執行數據庫有很多挑戰,並且在所有節點可寫的情況下執行 master-master 設置是另一個複雜程度。我很確定你不想那樣做。

希望有幫助:)

引用自:https://serverfault.com/questions/1003164