2015-10-18 25 views
9

Tôi có một thiết lập ứng dụng PHP CodeIgniter trên một phiên bản Elastic Beanstalk. Tôi đang cố gắng để kết nối nó với một trường hợp RDS MySQL tôi thiết lập nhưng tải các trang web Elastic Beanstalk URL luôn luôn kết quả trong thời gian trang ra kết nối. Tôi đã thu hẹp vấn đề này để không thể kết nối với cơ sở dữ liệu.Ứng dụng Beanstalk Đàn hồi sẽ không kết nối với cá thể RDS MySQL

Tôi nghĩ rằng tôi đã thiết lập các nhóm bảo mật đúng cách để cho phép các phiên bản EC2 của Beanstalk Đàn hồi nói chuyện với RDS, nhưng có điều gì đó không đúng vì trang vẫn không tải.

Tôi đã bao gồm ảnh chụp màn hình bên dưới các quy tắc vào/ra cho nhóm bảo mật mà RDS và Sử dụng cây đàn hồi, cũng như ảnh chụp màn hình của nhóm bảo mật mà tôi đã gắn với cá thể Đàn hồi.

Inbound rules

Outbound rules

enter image description here

Bất kỳ ý tưởng là tại sao ứng dụng đàn hồi Beanstalk tôi không thể nói chuyện với RDS dụ của tôi?


EDIT: Ví dụ RDS và cá thể Beanstalk đàn hồi nằm trong cùng một nhóm bảo mật.

+0

Trong ảnh chụp màn hình của bạn, bạn đã liệt kê sg-e9f3918d và sg-69315d0d. Nhưng bạn không hiển thị các quy tắc cho sg-69315d0d. Bạn đã cấu hình môi trường beanstalk của mình và RDS cho cả hai đều sử dụng cùng một nhóm bảo mật sg-e9f3918d? Điều gì sẽ xảy ra nếu bạn SSH vào một nút và thử và telnet trên cổng 3306 đến điểm cuối RDS của bạn? – mickzer

+0

Có, cả cá thể Elastic Beanstalk và cá thể RDS nằm trong cùng một nhóm bảo mật, sg-e9f3918d. –

Trả lời

8

Thêm tên nhóm bảo mật ngăn xếp mà bạn có Cây đậu đàn hồi được thiết lập với danh sách nhóm bảo mật RDS. Nó dễ dàng nhất để kiểm tra bằng cách đăng nhập vào EC2-dụ (tức là eb ssh) và kiểm tra kết nối với cơ sở dữ liệu để loại trừ bất kỳ vấn đề với ứng dụng của bạn.

mysql -u user -p password -h rds.instance.endpoint.region.rds.amazonaws.com 
+0

Ví dụ đàn hồi Beanstalk và cá thể RDS nằm trong cùng một nhóm bảo mật. –

+0

Bạn có thể kết nối với cơ sở dữ liệu từ cá thể EC2 theo cách thủ công như tôi đã trình bày không? – Gustaf

+0

Có, tôi đã có thể kết nối với cá thể RDS khi tôi ssh-ed vào thể hiện Elastic Beanstalk. Không chắc chắn những gì sai sau đó. –

4

Bạn có khởi chạy phiên bản RDS thành VPC không?

Nhóm bảo mật RDS của bạn cần cấp lưu lượng truy cập đến trên cổng 3306 cho nhóm bảo mật beanstalk.

ví dụ RDS nhóm an ninh

Incoming 
ALLOW TCP 3306 from BeanstalkSG 

Không mở để 0.0.0.0

Vì bạn đã cho phép tất cả lưu lượng gửi đi, cây đậu SG của bạn không có quyền cấp 3306 cho giao thông đi thêm.

VPC ACL của bạn có cho phép lưu lượng truy cập vào 3306 không? (Họ làm theo mặc định)

+0

Tôi đã thêm rằng quy tắc đến và vấn đề vẫn tồn tại (quy tắc mới của tôi: http://imgur.com/DLjij33). Các VPC ACL hiện đang cho phép lưu lượng trên tất cả các cổng. –

3

Hiện tại có tutorial về cách kết nối ElasticBeanstalk với bất kỳ cơ sở dữ liệu RDS nào (MySQL, v.v.) theo cách không ràng buộc cả hai với nhau, tức là bạn có thể tạo riêng chúng. Hướng dẫn đi vào thiết lập các nhóm bảo mật thông qua bảng điều khiển AWS.

Sau đó, bạn phải thiết lập 5 ElasticBeanstalk biến môi trường (ít nhất là cho MySQL): RDS_HOSTNAME, RDS_PORT, RDS_DB_NAME, RDS_USERNAME & RDS_PASSWORD.

Các phiên bản ElasticBeanstalk khác nhau sẽ truy cập các biến này theo các cách khác nhau để tạo kết nối cơ sở dữ liệu (tôi biết trong PHP, bạn phải sử dụng $_SERVER['RDS_DB_NAME'], v.v.). Xem cách thực hiện trong Java, Node.js, Python, Ruby và .NET trong liên kết ở trên.

Các vấn đề liên quan