Sambung ke port pendaftaran melalui terowong, perhatikan jabat tangan bermula, kemudian lihat JConsole tetap tamat masa. Ini berlaku kerana sambungan TCP pertama bukan sambungan pengurusan: ia adalah carian. Pendaftaran RMI menjawab dengan rujukan yang menamakan hos dan port kedua, dan JConsole kemudian pergi ke mana pun ia disuruh. Jika terowong hanya sampai ke port pertama pelayan, atau rujukan menamakan alamat yang hanya wujud pada LAN pelayan itu sendiri, klien terhenti selepas kelihatan berjaya.

Mitos: satu port terbuka ialah satu sambungan

JMX jauh melalui RMI melibatkan sekurang-kurangnya dua titik hujung, dan kedua-duanya dipilih oleh bahagian sistem yang berbeza. Port pendaftaran ialah yang anda taip dalam klien, dan ia wujud untuk menyerahkan stub yang menerangkan penyambung sebenar. Menganggap soket pertama yang berjaya sebagai bukti laluan pengurusan terbuka ialah yang menukar diagnosis dua minit menjadi sepanjang petang tiket firewall.

Perhatikan ralat klien itu sendiri, bukan senarai pendengar pada pelayan. Kegagalan selepas jabat tangan bermula memberitahu anda bahawa sambungan kedua, bukan yang pertama, tidak selesai.

Apa yang dipulangkan oleh pendaftaran

Stub mengandungi alamat dan port yang disirikan pada saat penyambung dicipta. Pada pelayan dengan beberapa antara muka, tindanan mungkin memilih alamat yang boleh dicapai dari rangkaian tempatan dan tidak dari rangkaian anda. Klien tidak tahu bezanya; ia hanya mendail nilai yang diberikan, dan paket mengikut laluan yang wujud untuk alamat itu, yang pada klien VPN selalunya tiada langsung. Ketika itulah sambungan kedua dicuba.

Inilah juga sebabnya kegagalan berlaku secara berselang-seli antara persekitaran: pelayan yang sama boleh berkelakuan berbeza bagi pengguna di LAN dan pengguna di terowong, tanpa sebarang perubahan pada konfigurasi JMX.

Dua port dan dua sifat yang memakunya

Port pendaftaran datang dari com.sun.management.jmxremote.port, dan penyambung boleh dipaku dengan com.sun.management.jmxremote.rmi.port daripada dibiarkan kepada apa yang diperuntukkan oleh tindanan. Tetapkan kedua-duanya secara eksplisit apabila ada firewall atau kumpulan keselamatan antara klien dan pelayan, kerana port kedua yang tidak dapat diramal tidak boleh dibenarkan terlebih dahulu, dan julat lebar yang dibuka untuk menampungnya lebih buruk daripada memaku satu nilai.

Kemudian sahkan dengan ss -ltn atau netstat -an pada pelayan bahawa kedua-dua port mendengar dan pada alamat mana. Pendengar yang terikat pada loopback betul untuk penggunaan setempat sahaja dan tidak berguna untuk yang ini.

Apabila nama yang diumumkan salah

Nama hos yang muncul dalam rujukan jauh ditetapkan oleh java.rmi.server.hostname. Ia mempengaruhi apa yang diumumkan oleh stub; dengan sendirinya ia bukan arahan untuk mengikat setiap pendengar pada satu antara muka, sebab itu menetapkannya tidak selalu menghasilkan tingkah laku satu port yang dijangka. Tetapkan, mulakan semula proses, kemudian sahkan apa yang sebenarnya terkandung dalam stub. Pilih nama atau alamat yang boleh diselesaikan dan dicapai oleh klien melalui terowong, dan mulakan semula proses supaya stub dibina semula.

Rangkaian kontena memburukkan lagi perkara ini, kerana alamat yang dilihat oleh proses mungkin alamat dalaman yang tiada apa-apa di luar kontena boleh menghalakan. Terbitkan nama hos yang dimaksudkan secara eksplisit daripada membiarkan platform memilih.

Jika anda membuat terowong dengan SSH dan bukan VPN, masalah yang sama muncul dalam pakaian lain: hanya memajukan port pendaftaran membiarkan titik hujung kedua menunjuk ke alamat yang tidak dapat dicapai oleh klien anda. Majukan kedua-dua port dan pastikan nama yang diumumkan diselesaikan kepada sesuatu yang boleh dicapai oleh klien secara tempatan.

Jangan matikan keselamatan pengurusan untuk memudahkannya

Coretan yang mematikan pengesahan dan TLS mudah ditemui dan membuat sambungan berfungsi dengan cara yang kemudiannya perlu anda batalkan. JMX jauh ialah antara muka pengurusan dengan keistimewaan yang sama seperti proses yang diperiksanya; kekalkan kawalan aksesnya, dan jika klien tidak dapat mengemukakan kelayakan, betulkan perkara itu.

Setelah titik hujung betul, simpan ralat seterusnya yang anda lihat. Penolakan daripada truststore atau akaun ialah peringkat yang lebih lewat daripada penyambung yang tidak dapat dicapai dan bermakna kerja rangkaian sudah selesai.

Artikel berkaitan