Поврзете се со портата на регистарот преку тунелот, набљудувајте како започнува ракувањето и потоа видете како JConsole сепак истекува по време. Тоа се случува затоа што првата TCP врска не е управувачката врска: таа е пребарување. Регистарот на RMI одговара со референца која наведува хост и втора порта, и JConsole потоа оди таму каде што ѝ е кажано. Ако тунелот стигнува само до првата порта на серверот или референцата наведува адреса што постои само во сопствената локална мрежа на серверот, клиентот заглавува по навидум успехот.

Митот: една отворена порта е една врска

Оддалечениот JMX преку RMI вклучува најмалку две крајни точки и тие ги избираат различни делови од системот. Портата на регистарот е онаа што ја внесувате во клиентот и постои за да ја издаде заглавката што го опишува вистинскиот конектор. Ако ја земете првата успешна сокетна врска како доказ дека патеката за управување е отворена, дијагнозата од две минути се претвора во цело попладне барања за firewall.

Гледајте ја грешката на самиот клиент, а не списокот со слушачи на серверот. Грешка по почетокот на ракувањето ви кажува дека не завршила втората врска, а не првата.

Што враќа регистарот

Заглавката содржи адреса и порта, сериализирани во моментот кога е создаден конекторот. На сервер со повеќе интерфејси, стекот можеби избрал адреса достапна од локалната мрежа и недостапна од вашата. Клиентот не ја знае разликата; тој едноставно ја бира добиената вредност, и пакетот оди по маршрутата што постои за таа адреса, а на VPN клиент често ја нема воопшто. Токму во тој момент се прави вториот обид за врска.

Затоа и грешката е нестабилна меѓу средини: истиот сервер може да се однесува различно за корисник во локалната мрежа и за корисник во тунелот, без никаква промена во конфигурацијата на JMX.

Две порти и две својства што ги фиксираат

Портата на регистарот доаѓа од com.sun.management.jmxremote.port, а конекторот може да се фиксира со com.sun.management.jmxremote.rmi.port, наместо да се остави на стекот. Задајте ги и двете експлицитно кога меѓу клиентот и серверот има firewall или безбедносна група, бидејќи непредвидлива втора порта не може да се дозволи однапред, а широк опсег отворен заради неа е полош од една фиксна порта.

Потоа потврдете со ss -ltn или netstat -an на серверот дека и двете порти слушаат и на кои адреси. Слушач врзан за loopback е правилен за распоредување само на локалната машина и бескорисен за овој случај.

Кога објавеното име е погрешно

Името на хостот во оддалечената референца се задава со java.rmi.server.hostname. Тоа влијае на тоа што ја објавува заглавката; само по себе не е упатство секој слушач да се врзе за еден интерфејс, затоа неговото задавање не секогаш го дава очекуваното однесување со една порта. Задајте го, рестартирајте го процесот и потоа проверете што всушност содржи заглавката. Изберете име или адреса што клиентот може да ја резолвира и достигне преку тунелот, и рестартирајте го процесот за заглавката да се изгради одново.

Мрежите на контејнерите го влошуваат ова, бидејќи адресата што ја гледа процесот може да е внатрешна и недостижна за рутирање однадвор од контејнерот. Објавувајте го саканото име на хостот експлицитно, наместо да ја оставате платформата да избира.

Ако тунелот го правите со SSH наместо VPN, истиот проблем се појавува во друго руво: препраќањето само на портата на регистарот ја остава втората крајна точка да покажува кон адреса што вашиот клиент не може да ја достигне. Препратете ги и двете порти и направете објавеното име да се резолвира во нешто што клиентот може да го достигне локално.

Не ја исклучувајте безбедноста на управувањето за да го поедноставите

Фрагментите што ја исклучуваат автентикацијата и TLS лесно се наоѓаат и ја тераат врската да работи на начин што подоцна ќе треба да го откажете. Оддалечениот JMX е интерфејс за управување со истите привилегии како процесот што го инспектира; задржете ги контролите за пристап и ако клиентот не може да приложи акредитиви, поправете го токму тоа.

Кога крајните точки се точни, сочувајте ја следната грешка што ќе ја видите. Одбивање од truststore или од сметка е подоцнежна фаза од недостапен конектор и значи дека работата со мрежата е завршена.

Поврзани статии