Mysql
在實例內訪問時,主機網路的負載平衡不起作用
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.
目標群體:
問題
我怎樣才能解決這個問題?
用於任務定義的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 RDS或AWS Aurora。在容器中執行數據庫有很多挑戰,並且在所有節點可寫的情況下執行 master-master 設置是另一個複雜程度。我很確定你不想那樣做。
希望有幫助:)