2012-04-02 28 views
6

Tôi đang chạy Jconsole trên macbook của mình và cố gắng kết nối với thiết bị đầu cuối Linux trên ec2 không có đồ họa (chỉ truy cập dòng lệnh).Làm cách nào để sử dụng Jconsole để kết nối với EC2?

tôi chạy mã của tôi như thế này:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false 

tôi đọc here rằng có một vấn đề với việc truy cập thông qua EC2 (sau khi tôi đã có vấn đề kết nối) và các giải pháp dường như là 'java.rmi.server.hostname to the public hostname of the instance'

Tôi hơi bối rối về cách làm điều này. Tôi đã thử hai điều, một để đặt nó trực tiếp trong mã của tôi (trong khoảng trống phần chính tĩnh): Hệ thống

System.setProperty("java.rmi.server.hostname" , "external_EC2_address"); //in my real code I have the correct address here 

Các chấp nhận nó (không có lỗi khi tôi tạo/upload jar Runnable). Tôi cũng đã mở tường lửa trên cá thể của mình để cho phép tất cả lưu lượng TCP. Không may mắn. Tôi đã cố gắng tuyên bố trên cũng như một lá cờ để khởi động chương trình nhưng vẫn không có may mắn.

Bất kỳ ý tưởng nào về cách thực hiện điều này?

CẬP NHẬT: Điều này sẽ cho thấy màu xanh lá cây của tôi ở Java, tôi đã tiến thêm một bước nữa (vẫn không hoạt động) nhưng tôi nhận ra việc đặt tên tệp java -jar filename.jar và sau đó các tùy chọn không cho tôi giống kết quả như đặt -jar của tôi ở cuối lệnh. Tôi đã thử điều đó và chương trình cố gắng kết nối và sau đó nói kết nối không thành công (trước khi nó sẽ chỉ nói nó ở màn hình đăng nhập ngay lập tức).

Trả lời

2

Set thuộc tính hostname trước VM bắt đầu:

java -Dcom.sun.management.jmxremote \ 
    -Dcom.sun.management.jmxremote.port=9005 \ 
    -Dcom.sun.management.jmxremote.authenticate=false \ 
    -Dcom.sun.management.remote.ssl=false \ 
    -Djava.rmi.server.hostname=the.public.ip \ 
    -jar program.jar 

Thêm các quy tắc liên quan đến nhóm bảo mật của bạn.

Cuối cùng, đảm bảo iptables bị dừng, vì đây có thể là lý do khiến bạn không nhận được kết nối từ thế giới bên ngoài. Là gốc (hoặc sử dụng sudo ...):

# service iptables stop 
+0

Cảm ơn bạn đã trả lời. Tôi đã theo dõi những gì bạn viết và vẫn gặp lỗi tương tự. –

1

Bạn cần mở cổng từ xa JMX (9005 theo ví dụ của bạn ở trên) trong ví dụ security group.

+0

Tôi đã làm điều này. chỉ để được ở bên an toàn tôi mở 0 - 65535 là tốt. –

+0

Điều duy nhất tôi không thể nói ở trên là liệu bạn có đặt java.rmi.server.hostname cho tên máy chủ công khai của cá thể của bạn hay không (thường là ở định dạng như ec2-xxx-yyy-zzz-aaa.compute -1.amazonaws.com, trong đó xxx-yyy-zzz-aaa là địa chỉ IP công khai). Nếu bạn đã làm điều đó thì tôi đã bối rối, xin lỗi. –

+0

Quyền của bạn Tôi đã sử dụng tên máy chủ công cộng để kết nối (đó là những gì tôi sử dụng cho ssh) ec2-xxx. Tôi nhận được một địa chỉ IP và cho nó một shot và vẫn còn cùng một vấn đề. –

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