2015-10-01 30 views
9

Tôi đang cố gắng chạy một máy chủ web sử dụng cơ sở dữ liệu RDS với EC2 bên trong vùng chứa docker.Truy cập RDS từ bên trong vùng chứa Docker không nhận được thông qua nhóm bảo mật?

Tôi đã thiết lập các nhóm bảo mật để vai trò của máy chủ EC2 được phép truy cập RDS và nếu tôi cố truy cập nó từ máy chủ trực tiếp, mọi thứ hoạt động chính xác.

Tuy nhiên, khi tôi chạy một vùng chứa đơn giản trên máy chủ và cố gắng truy cập RDS, nó sẽ bị chặn như thể nhóm bảo mật không cho phép. Sau một loạt các thử nghiệm và lỗi, dường như các yêu cầu vùng chứa không xuất hiện để đến từ máy chủ EC2 để tường lửa nói không.

Tôi có thể làm việc này trong ngắn hạn bằng cách thiết lập --net = host trên bộ chứa docker, tuy nhiên điều này phá vỡ rất nhiều chức năng kết nối mạng chức năng tuyệt vời như có thể ánh xạ cổng (tức là bây giờ tôi cần phải chắc chắn rằng mỗi thể hiện của container lắng nghe trên một cổng khác bằng tay).

Có ai tìm thấy cách nào đó không? Nó có vẻ giống như một giới hạn khá lớn để chạy container trong AWS nếu bạn đang thực sự sử dụng bất kỳ tài nguyên AWS nào.

Trả lời

3

Đã tìm hiểu xem điều gì đang xảy ra, đăng ở đây trong trường hợp nó giúp bất kỳ ai khác.

Các yêu cầu từ bên trong vùng chứa đã nhấn IP công khai của RDS thay vì riêng tư (đó là cách các nhóm bảo mật hoạt động). Dường như DNS bên trong container docker đang sử dụng 8.8.8.8 google dns và điều đó sẽ không làm ảo thuật đen của AWS biến các điểm rds thành ip riêng.

Vì vậy, ví dụ:

DOCKER_OPTS="--dns 10.0.0.2 -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock -g /mnt/docker" 
+7

Vì vậy, vấn đề có ý nghĩa, nhưng bạn có thể đưa câu trả lời của mình vào cách bạn khắc phục sự cố không? –

+0

Tôi cũng quan tâm đến cách bạn khắc phục sự cố –

+0

anh ấy có thể đã sử dụng Amazon ... – codewandler

1

Như @adamneilson đề cập, thiết lập các tùy chọn Docker là đặt cược tốt nhất của bạn. Đây là cách để discover your Amazon DNS server on the VPC. Ngoài ra, hãy xem phần Enabling Docker Debug Output trong Hướng dẫn dành cho nhà phát triển dịch vụ vùng chứa EC2 của Amazon Khắc phục sự cố đề cập đến nơi tệp tùy chọn Docker.

Giả sử bạn đang chạy khối VPC 10.0.0.0/24 DNS sẽ là 10.0.0.2.

Đối với CentOS, Red Hat và Amazon:

sed -i -r 's/(^OPTIONS=\")/\1--dns 10.0.0.2 /g' /etc/sysconfig/docker 

Đối với Ubuntu và Debian:

sed -i -r 's/(^OPTIONS=\")/\1--dns 10.0.0.2 /g' /etc/default/docker 
7

Vâng, container làm nhấn IP công cộng của RDS. Nhưng bạn không cần phải điều chỉnh các tùy chọn Docker cấp thấp để cho phép các thùng chứa của bạn nói chuyện với RDS. Cụm điện thoại ECS và phiên bản RDS phải nằm trong cùng một VPC và sau đó truy cập có thể được định cấu hình thông qua các nhóm bảo mật.Cách dễ nhất để làm điều này là:

  1. Navigate to RDS trường hợp trang
  2. Chọn instance DB và sâu vào để xem chi tiết
  3. Bấm vào id nhóm an ninh
  4. hướng về phía Tab đến và chọn Chỉnh sửa
  5. Và đảm bảo có quy tắc loại MySQL/Aurora với nguồn Tùy chỉnh
  6. Khi nhập nguồn tùy chỉnh, chỉ cần bắt đầu nhập tên của cụm ECS và tên nhóm bảo mật sẽ tự động than phiền được khắc phục cho bạn

This tutorial has screenshots minh họa nơi cần thực hiện.

Tiết lộ đầy đủ: Hướng dẫn này có các vùng chứa từ Bitnami và tôi làm việc cho Bitnami. Tuy nhiên những suy nghĩ thể hiện ở đây là của riêng tôi và không phải là ý kiến ​​của Bitnami.

+0

Đối với những gì nó có giá trị tôi đã lưu trữ hộp ec2 của riêng tôi chạy docker hơn là sử dụng ECS ​​(vì nhiều lý do tại thời điểm đó). –

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