2013-12-13 97 views
2

我使用eb init將PHP應用程序部署到AWS Elastic Beanstalk。Elastic Beanstalk負載均衡沒有繼承父實例

起初我使用單個實例導致控制檯告訴我將來可以更改它。

我有我的應用程序將document_root設置爲/ public。

它的工作很好,直到我把它變成負載平衡,自動縮放通過

AWS彈性魔豆控制檯頁。

如果我嘗試訪問我的環境url,如果我通過Elastic Load Balancing將其指向父實例(由單實例創建的第一個實例),我的應用程序將可用,但當它碰到其他實例時,我的應用程序將可用,但是 將收到

故宮

您沒有權限訪問/在此服務器上。

我認爲其他實例沒有得到document_root =/public的設置。

如何讓其他實例克隆父實例,包括配置?

只是爲了信息,

目前我有運行2個最小實例,並會自動規模。

現在,1個實例正在工作,另外1個正在失敗。

回答

3

看來,當您將環境類型從「單實例」更改爲「負載平衡」時,新實例會繼承另一個EC2安全組,從而將端口80僅限於負載平衡器實例。

如「Configuring Elastic Load Balancing with AWS Elastic Beanstalk」指南所述,如果您想直接從Web瀏覽器訪問實例,則需要更新EC2安全組。

如果要部署使用nonlegacy容器類型, 一個應用程序,你要直接訪問使用Web瀏覽器的EC2實例 您的應用程序,修改您的EC2安全 組的HTTP規則。有關說明,請轉至Amazon EC2 Security Groups

希望它有幫助。

+0

嗨,感謝您的幫助, 但在我的情況下,我能夠擊中其他實例,這意味着ELB連接到其他實例,Forbidden的錯誤也發生在之前,因爲我沒有指定我的document_root當我使用單個實例時,在改變配置以將document_root指向/ public之前,框架需要運行它的工作。 從我的安全組中,只有ELB和RDS安全組纔可用。 如果ELB是原因,我想我甚至無法訪問EC,因爲它未在ELB中配置。 – bluehyppo23

+0

@ bluehyppo23我有點困惑,當你說「擊中其他實例」時,它是指直接(SSH,HTTP)還是通過ELB(HTTP)?關於「父」實例:當您將環境從單實例更改爲負載平衡時,所謂的「父」實例不復存在,「父」中所做的所有更改都將消失。新的EC2實例被實例化,並且你的應用程序被部署在它們中的每一個上。它們將是相同的,除了'is_leader'標誌值。除非你使用你沒有提到的快照,所以我認爲你沒有。 – kukido

+0

它通過ELB,因爲我使用Beanstalk給出的URL訪問它們。也許正確的術語是領導者實例,根據我的理解,在負載平衡中,必須有1個領導者實例正確嗎?如果我訪問Beanstalk給出的URL,有時應用程序會運行,如果我打開新的瀏覽器(隱身模式),如果它立即(而不是第一個)轉到其他瀏覽器,它會給予禁止訪問。 有沒有一種方法可以在負載均衡中測試2分鐘的實例,並測試兩個實例是否正在工作,因爲我現在無法知道該頁面是在哪些實例上提供的。 – bluehyppo23