2012-02-24 32 views
10

Tôi đang cố gắng thiết lập hai trường hợp dưới bộ cân bằng tải đàn hồi, nhưng không thể tìm ra cách tôi truy cập các phiên bản thông qua bộ cân bằng tải.Truy cập các phiên bản AWS EC2 qua ELB

Tôi đã thiết lập các phiên bản với nhóm bảo mật để cho phép truy cập từ bất kỳ đâu đến các cổng nhất định. Tôi có thể truy cập các trường hợp trực tiếp sử dụng "Public DNS" (publicdns) tên máy chủ của họ và PORT cổng:

http: // [publicdns]: PORT/

Bộ cân bằng tải chứa hai trường hợp và họ là cả hai "Trong dịch vụ" và nó chuyển tiếp cổng (PORT) vào cùng một cổng trên các trường hợp.

Tuy nhiên, nếu tôi yêu cầu

http: // [dnsname]: PORT (nơi dnsname là Ghi niêm yết cho ELB)

nó không kết nối với các trường hợp (kết nối lần ra).

Đây có phải là cách đúng để sử dụng bộ cân bằng tải hay tôi có cần phải làm gì để cho phép truy cập vào bộ cân bằng tải không? Chỉ đề cập đến các nhóm bảo mật liên quan đến cân bằng tải là để hạn chế truy cập đối với các trường hợp chỉ với trình cân bằng tải, nhưng tôi không muốn điều đó. Tôi cũng muốn có thể truy cập chúng riêng lẻ.

tôi chắc chắn rằng có điều gì đó đơn giản và ngớ ngẩn mà tôi đã bị lãng quên, không nhận ra hoặc làm sai: P

Chúc mừng, Svend.


thông tin thêm cho biết thêm:

Configuration Cảng cho Load Balancer trông như thế này (thực ra 3 cổng):

10060 (HTTP) chuyển tiếp đến 10060 (HTTP) dính: Disabled (chỉnh sửa)

10061 (HTTP) chuyển tiếp đến 10061 (HTTP) dính: Disabled (chỉnh sửa)

1 0062 (HTTP) chuyển tiếp đến 10062 (HTTP) Độ dính: Đã tắt (chỉnh sửa)

Và nó đang sử dụng nhóm bảo mật elb chuẩn/mặc định (amazon-elb-sg).

Các trường hợp có hai nhóm bảo mật. Một bên ngoài nhìn như thế này:

22 (SSH)                     0.0.0.0/0
10060 - 10061 0.0.0.0/0
                      0.0.0.0/0

và một nội bộ, cho phép bất cứ điều gì trong nhóm nội bộ để giao tiếp trên tất cả các cổng:

0-65.535 sg-xxxxxxxx (nhóm bảo mật ID)

Không chắc nó làm cho bất kỳ sự khác biệt, nhưng các trường hợp là các loại hình ảnh ami-31814f58 m1.small.


Cái gì đó có thể có liên quan:

kiểm tra sức khỏe của tôi đã từng là HTTP: PORT/nhưng cân bằng tải liên tục nói rằng các trường hợp là "Out of Service", mặc dù tôi dường như để có được một 200 phản hồi về yêu cầu trên cổng đó.

Sau đó tôi đã đổi thành TCP: PORT và sau đó thay đổi để nói là "Trong dịch vụ".

Có điều gì đó rất cụ thể cần được trả lại cho HTTP hay đơn giản là phản hồi HTTP 200 được yêu cầu? ... và thực tế là nó không phải là gợi ý làm việc hướng tới lý do chính bản thân cân bằng tải cũng không hoạt động?

+0

Tôi cố gắng này là tốt, bằng cách sử dụng web console: 1) Tạo một nhóm an ninh cho phép tất cả truy cập từ tất cả các nguồn. 2) Tạo phiên bản t1.micro mới, sử dụng nhóm bảo mật mới. 3) SSH vào nhóm và netcat "Hello" trên cổng 80. 4) Kiểm tra xem tôi có thể nhận phản hồi HTTP 200 "Hello" trực tiếp (có) 5) Tạo cân bằng tải và gán phiên bản này không. 6) Đặt kiểm tra tình trạng là TCP: 80 (HTTP: 80/không hoạt động). 7) Thử truy cập cân bằng tải. Không làm việc. 8) Cảm thấy buồn: ( –

+0

Làm thế nào bạn đang cố gắng để truy cập vào loadbalancer. Khi tôi thực hiện yêu cầu của tôi để loadbalancer tôi yêu cầu một tập tin index.html. Có thể loadbalancer không thích gửi một tập tin rỗng? – bwight

+0

I đã được thử nghiệm một chút, và có vẻ như vấn đề là với kiểm tra sức khỏe cân bằng tải của tôi.Chỉ cần nhận được một mã phản ứng 200 dường như không đủ.Tôi đã đạt được điều đó trước khi sử dụng netcat (echo "Hello" | nc -l PORT), nhưng điều đó không có tác dụng, thay đổi nó để sử dụng TCP làm cho nó xuất hiện "In Service", nhưng có thể không có tác dụng. Tôi vừa tạo một thể hiện nhỏ, và ngay sau khi tôi cài đặt httpd và trả lời nó một tệp html thích hợp (trả lời http), nó đã hoạt động! :) Cảm ơn tất cả. Vào thứ hai, tôi sẽ xác minh đó là vấn đề (bwight, bạn có muốn viết nó ở dạng câu trả lời không, vì vậy tôi có thể đánh dấu nó nếu vậy :)) –

Trả lời

3

Có vẻ như bạn đã thiết lập mọi thứ chính xác. Họ có phải là các cổng tương tự đi vào loadbalancer như thể hiện? Hay bạn chuyển tiếp yêu cầu đến một cổng khác?

Như một lưu ý phụ, khi tôi định cấu hình trình tải dữ liệu của mình, tôi thường không muốn mở các cá thể của mình trên bất kỳ cổng nào cho công chúng. Tôi chỉ cho phép loadbalancer yêu cầu những trường hợp đó. Tôi đã nhận thấy trong quá khứ rằng nhiều người sẽ đưa ra các yêu cầu độc hại đối với IP của cá thể đang cố gắng tìm ra một vi phạm an ninh. Tôi thậm chí còn nhìn thấy những người đang cố gắng đăng nhập vào máy tính của tôi ...

Để tạo quy tắc bảo mật chỉ cho các trình tải trọng chạy các lệnh sau và xóa bất kỳ quy tắc nào khác mà bạn có trong nhóm bảo mật cho cổng loadbalancer đang sử dụng. Nếu bạn không sử dụng dòng lệnh để chạy các lệnh này thì chỉ cần cho tôi biết giao diện nào bạn đang cố gắng sử dụng và tôi có thể cố gắng tìm ra một mẫu sẽ hoạt động cho bạn.

elb-create-lb-listeners <load-balancer> --listener "protocol=http, lb-port=<port>, instance-port=<port>" 
ec2-authorize <security-group> -o amazon-elb-sg -u amazon-elb 

Quay lại câu hỏi của bạn. Như tôi đã nói, các bước bạn đã giải thích là chính xác, mở cổng trên cá thể và chuyển tiếp cổng đến cá thể là đủ. Có lẽ bạn cần phải đăng cấu hình đầy đủ của nhóm bảo mật của đối tượng và trình cân bằng tải để tôi có thể xem liệu có điều gì khác ảnh hưởng đến tình huống của bạn hay không.

+0

Tôi đã thêm một số thông tin khác ở trên ... –

+0

Cảm ơn tôi sẽ xem xét – bwight

+0

Tôi không thể tạo lại lỗi của bạn.Tôi đã thử các thiết lập tương tự như bạn với các cổng tương tự và nó có vẻ là làm việc tốt. Mất cân bằng tải một vài phút để bắt đầu làm việc. – bwight

1

Tôi đã tiếp tục và tạo tập lệnh sẽ tái tạo các bước chính xác giống như tôi đang sử dụng. Điều này giả sử bạn đang sử dụng Linux như một hệ điều hành và các công cụ AWS CLI đã được cài đặt. Nếu bạn chưa có thiết lập này, tôi khuyên bạn nên bắt đầu một phiên bản vi rút Amazon Linux mới và chạy tập lệnh từ đó vì chúng đã cài đặt mọi thứ.

  1. Tải xuống X.509 file chứng chỉ từ amazon https://aws-portal.amazon.com/gp/aws/securityCredentials

  2. Sao chép các tập tin chứng chỉ để máy nơi bạn sẽ chạy các lệnh

  3. Lưu hai biến được yêu cầu trong kịch bản

    aws_account=<aws account id> 
    keypair="<key pair name>" 
    
  4. Export chứng chỉ như biến môi trường

    export EC2_PRIVATE_KEY=<private_Key_file> 
    export EC2_CERT=<cert_file> 
    export EC2_URL=https://ec2.us-east-1.amazonaws.com 
    
  5. Tạo bảo mật gr oups

    ec2-create-group loadbalancer-sg -d "Loadbalancer Test group" 
    ec2-authorize loadbalancer-sg -o loadbalancer-sg -u $aws_account 
    ec2-authorize loadbalancer-sg -p 80 -s 0.0.0.0/0 
    
  6. Tạo người dùng dữ liệu tập tin cho các trường hợp như vậy apache được bắt đầu và file index.html được tạo ra

    mkdir -p ~/temp/ 
    echo '#! /bin/sh 
    yum -qy install httpd 
    touch /var/www/html/index.html 
    /etc/init.d/httpd start' > ~/temp/user-data.sh 
    
  7. Khởi động thể hiện mới và lưu instanceid

    instanceid=`ec2-run-instances ami-31814f58 -k "$keypair" -t t1.micro -g loadbalancer-sg -g default -z us-east-1a -f ~/temp/user-data.sh | grep INSTANCE | awk '{ print $2 }'` 
    
  8. Tạo bộ cân bằng tải và đính kèm dụ

    elb-create-lb test-lb --availability-zones us-east-1a --listener "protocol=http, lb-port=80, instance-port=80" 
    elb-register-instances-with-lb test-lb --instances $instanceid 
    
  9. Chờ cho đến khi nhà nước thể hiện của bạn trong loabalancer là "inservice" và cố gắng truy cập vào các url
Các vấn đề liên quan