2012-02-13 28 views
63

Chúng tôi đang sử dụng Amazon EC2 và chúng tôi muốn đặt ELB (cân bằng tải) thành 2 phiên bản trên mạng con riêng. Nếu chúng ta chỉ thêm subnet riêng vào ELB, nó sẽ không nhận được bất kỳ kết nối nào, nếu chúng ta đính kèm cả hai mạng con vào ELB thì nó có thể truy cập vào các cá thể, nhưng nó thường sẽ có thời gian chờ. Có ai thực hiện thành công một ELB trong mạng con riêng của VPC của họ không? Nếu vậy, có lẽ bạn có thể giải thích các thủ tục cho tôi?Amazon ELB trong VPC

Cảm ơn

Trả lời

164

đồng đội của tôi và tôi chỉ đã thực hiện ELB trong một VPC với 2 mạng con tin ở khu sẵn có khác nhau. Lý do bạn nhận được thời gian chờ là đối với mỗi mạng con bạn thêm vào bộ cân bằng tải, nó sẽ nhận được một địa chỉ IP bên ngoài. (hãy thử 'khai thác elb-dns-name-here' và bạn sẽ thấy một số địa chỉ IP). Nếu một trong những địa chỉ IP này ánh xạ một mạng con riêng, nó sẽ hết thời gian chờ. IP ánh xạ vào mạng con công cộng của bạn sẽ hoạt động. Vì DNS có thể cung cấp cho bạn bất kỳ địa chỉ IP nào, đôi khi nó hoạt động, đôi khi nó hết thời gian.

Sau một số trở lại và ra với amazon, chúng tôi phát hiện ra rằng ELB chỉ nên được đặt trong mạng con công cộng, đó là mạng con có lộ trình ra Internet Gateway. Chúng tôi muốn giữ các máy chủ web của chúng tôi trong mạng con riêng của chúng tôi nhưng cho phép ELB nói chuyện với họ. Để giải quyết vấn đề này, chúng tôi phải đảm bảo rằng chúng tôi đã có một mạng con công cộng tương ứng cho mỗi vùng khả dụng mà chúng tôi có mạng con riêng. Sau đó chúng tôi đã thêm vào ELB, mạng con công cộng cho mỗi vùng khả dụng.

Lúc đầu, điều này dường như không có tác dụng, nhưng sau khi thử mọi thứ, chúng tôi tái tạo ELB và mọi thứ hoạt động như mong muốn. Tôi nghĩ đây là một lỗi, hoặc ELB chỉ ở trong trạng thái kỳ quặc từ rất nhiều thay đổi.

Dưới đây là nhiều hơn hoặc ít hơn những gì chúng tôi đã làm:

  1. WebServer-1 đang chạy trong PrivateSubnet-1 tại khu sẵn có chúng tôi đông-1b với nhóm an ninh gọi là web-server.
  2. Máy chủ Web-2 đang chạy trong PrivateSubnet-2 trong vùng khả dụng us-east-1c với nhóm bảo mật được gọi là máy chủ web.
  3. Tạo mạng con công cộng trong vùng us-east-1b, chúng tôi sẽ gọi nó là PublicSubnet-1. Chúng tôi đảm bảo rằng chúng tôi liên kết bảng định tuyến bao gồm tuyến đường đến Cổng Internet (ig-xxxxx) với mạng con mới này. (Nếu bạn sử dụng trình hướng dẫn để tạo VPC công khai/riêng tư, tuyến đường này đã tồn tại.)
  4. Tạo mạng con công cộng trong vùng us-east-1c, chúng tôi sẽ gọi nó là PublicSubnet-2. Chúng tôi đảm bảo rằng chúng tôi liên kết bảng định tuyến bao gồm tuyến đường đến Cổng Internet (ig-xxxxx) với mạng con mới này. (Nếu bạn sử dụng trình hướng dẫn để tạo VPC công khai/riêng tư, tuyến đường này đã tồn tại.)
  5. Tạo một ELB mới, thêm vào PublicSubnet-1 và PublicSubnet-2 (không phải PrivateSubnet-X). Ngoài ra, chọn các cá thể để chạy trong ELB, trong trường hợp này là WebServer-1 và WebServer-2. Đảm bảo gán một nhóm bảo mật cho phép cổng 80 và 443. Cho phép gọi nhóm elb này là nhóm.
  6. Trong nhóm máy chủ web, cho phép lưu lượng truy cập từ cổng 80 và 443 từ nhóm elb.

Tôi hy vọng điều đó sẽ hữu ích!

+0

vâng, chúng tôi đã đi đến cùng một kết luận, tôi chỉ quên cập nhật điều này. Cảm ơn câu trả lời :) –

+1

Đây là nguồn thông tin có liên quan tốt: https://forums.aws.amazon.com/thread.jspa?messageID=453594񮯚 –

+4

Tôi rất tiếc vì tôi có nhưng một ưu tiên để đưa ra. Cảm ơn! Tôi đã đập đầu vào tường trong 2 giờ đồng hồ cố gắng tìm ra điều này. – Cfreak

2

Chúng tôi đã triển khai ELB trong mạng con riêng để tuyên bố rằng tất cả các nhu cầu ELB được công khai không hoàn toàn đúng. Bạn cần một NAT. Tạo một mạng con riêng cho ELB riêng, bật VPC DNS và sau đó đảm bảo bảng định tuyến riêng được cấu hình để đi qua NAT. Các nhóm bảo mật subnet cũng cần phải được thiết lập để cho phép lưu lượng giữa ELB và App, và ứng dụng cho các mạng con DB.

Kiểm tra sức khỏe của cây đậu sẽ không hoạt động vì chúng không thể tiếp cận được bộ cân bằng tải, nhưng đối với các dịch vụ cần nằm ngoài phạm vi công cộng thì đây là một sự thỏa hiệp tốt.

Đọc được đề xuất để kiến ​​trúc VPC của bạn bắt đầu: http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/.

2

Bạn phải thêm các cài đặt sau.

  1. subnet Công zone b = máy chủ NAT
  2. khu subnet Private c = Web Server
  3. subnet Công khu c = ELB

Bí quyết được định tuyến:

  1. Các bộ định tuyến đến NAT được đính kèm với cổng A.
  2. Bộ định tuyến tới Web máy chủ được đính kèm vào NAT .
  3. Router để subnet Công là gắn với cổng A.

chi tiết ELB:

1.Zone: subnet Công khu c 2.Instance: Máy chủ Web 3.Security Nhóm: enable cổng

http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html

+0

Tôi cũng thấy các hướng dẫn này hữu ích: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Configuration-2 – BatteryAcid

9

Mấu chốt ở đây là sự hiểu biết, rằng bạn không "Thêm subnet/khu sẵn có" để ELB, nhưng thay vì quy định cụ thể những gì subnet đặt Các trường hợp ELB vào.

Có, ELB là bộ cân bằng tải phần mềm và khi bạn tạo đối tượng ELB, một cá thể EC2 tải trọng tùy chỉnh được đưa vào tất cả các mạng con mà bạn đã chỉ định. Vì vậy, đối với ELB (các thể hiện của nó) có thể truy cập được, chúng phải được đưa vào các mạng con có định tuyến mặc định được cấu hình thông qua IGW (rất có thể bạn đã phân loại các mạng con này là công khai).

Vì vậy, như đã được trả lời ở trên, bạn phải chỉ định mạng "công khai" cho ELB và các mạng đó phải từ các AZ nơi các phiên bản EC2 của bạn đang chạy. Trong trường hợp này, các cá thể ELB sẽ có thể tiếp cận các cá thể EC2 của bạn (miễn là các nhóm bảo mật được cấu hình đúng)

+0

Bạn có một điểm quan trọng trong câu đầu tiên của mình. Bàn điều khiển AWS không trực quan trong vấn đề này. Nó dẫn người ta tin rằng bạn làm điều gì đó sai khi bạn không thấy các cá thể EC2 từ mạng con riêng của bạn nếu bạn triển khai ELB trong các mạng con công cộng. –

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