Dies ist ein Einstellungsbeispiel, wenn es noch schwieriger ist, JVM über eine JMX-Verbindung zu überwachen. Dies ist problematisch, wenn Sie über die Plattform gehen.
Stellen Sie gleichzeitig eine Verbindung mit der TCP-Proxy-Funktion von Nginx her.
Ich möchte die Einstellung des Plattformports nicht einzeln anfordern, wenn die Anzahl der AP-Server zunimmt.
Um die JVM mit JMX zu überwachen, starten Sie normalerweise die Serverfunktion, die auf JXM-Verbindungen wartet, indem Sie die folgenden Argumente angeben. Es gibt einige Argumente, die nur mit Java 7 oder höher verwendet werden können.
Dies ist für den AP-Server app-srv-01.
-Djava.rmi.server.hostname=`hostname` # hostname=app-srv-01
-Dcom.sun.management.jmxremote.port=18080
-Dcom.sun.management.jmxremote.rmi.port=18080
-Dcom.sun.management.jmxremote.ssl=false #Irgendein
-Dcom.sun.management.jmxremote.authenticate=false #Irgendein
Der hier zu beachtende Punkt ist java.rmi.server.hostname </ code>.
Diese Einstellung wird an den verbindenden JMX-Client gesendet und verwendet diesen Hostnamen als JMX-Ziel.
Mit anderen Worten, aus Sicht des JMX-Clients können Sie keine Verbindung herstellen, es sei denn, Sie sehen die JMX-Verbindung mit app-srv-01: 18080 </ code>.
Wenn Sie die Plattform durchlaufen, können Sie keine Verbindung herstellen, da Sie app-srv-XX nicht sehen können.
Mit einem kann dieses Problem schnell gelöst werden.
Alles, was Sie tun müssen, ist, den folgenden Port in der Konfiguration von ssh vorwärts zu setzen und den Hosts app-srv-XX hinzuzufügen.
~/.ssh/config
Host humidai-srv.net
user hoge-user
IdentityFile ~/.ssh/id_rsa.hoge
LocalForward 18080 ap-srv-01:18080
hosts
### app-srv-XX jmx ###
127.0.0.1 app-srv-01
Jetzt können Sie ap-srv-ap01: 18080 </ code> als JMX-Verbindungsziel auf Ihrem lokalen Computer anzeigen.
Wenn app-srv-01 aufgrund der Umgebung des lokalen Computers bereits als andere IP aufgelöst wurde, wird jmx. </ Strong> am Anfang des in den Argumenten hosts und jvm festgelegten Hostnamens hinzugefügt. Fügen Sie ein Präfix wie Code> hinzu.
Mit den Einstellungen für eine Einheit wird Port 18080 von localhost für den Port Forward von ap-srv-ap01 verwendet, sodass Port 18080 nach der zweiten Einheit nicht als Port für die JMX-Verbindung verwendet werden kann. Ich werde am Ende.
Ich möchte dieses Problem verwalten und mehrere Remote-JVMs überwachen.
Dieses Mal werden wir dieses Problem mithilfe der TCP-Proxy-Funktion von Nginx lösen.
Ändern Sie vor dem Festlegen von Nginx den Port vorwärts wie folgt, um den Port 18080 des lokalen Computers nicht zu blockieren (die fünfte und die nachfolgenden Einheiten werden weggelassen).
~/.ssh/config
Host humidai-srv.net
user hoge-user
IdentityFile ~/.ssh/id_rsa.hoge
LocalForward 18081 ap-srv-01:18080
LocalForward 18082 ap-srv-02:18080
LocalForward 18083 ap-srv-03:18080
LocalForward 18084 ap-srv-04:18080
:
:
Fügen Sie es auch der Hosts-Datei hinzu. Bitte beachten Sie, dass die IPs, die gezeichnet werden können, alle unterschiedlich sind. Der Grund wird später beschrieben.
hosts
### app-srv-XX jmx ###
127.0.0.1 app-srv-01
127.0.0.2 app-srv-02
127.0.0.3 app-srv-03
127.0.0.4 app-srv-04
:
:
Es gibt kein Problem, wenn Sie das neueste normal installieren, aber es funktioniert mit den folgenden.
nginx version: nginx/1.11.9
--with-stream=dynamic #Natürlich ist es auch dann in Ordnung, wenn Sie es statisch installieren
Fügen Sie den Nginx-Einstellungen Folgendes hinzu.
Der Ort zum Schreiben der Stream-Direktive muss sich auf der obersten Ebene befinden. Schreiben Sie sie daher direkt in die Datei nginx.conf.
nginx.conf
stream {
upstream up.app-srv-01 { server localhost:18081; }
upstream up.app-srv-02 { server localhost:18082; }
upstream up.app-srv-03 { server localhost:18083; }
upstream up.app-srv-04 { server localhost:18084; }
:
:
map $server_addr $upstr{
127.0.0.1 "up.app-srv-01";
127.0.0.2 "up.app-srv-02";
127.0.0.3 "up.app-srv-03";
127.0.0.4 "up.app-srv-04";
:
:
default "up.app-srv-01";
}
server {
listen 18080;
proxy_pass $upstr;
}
}
Obwohl es sich im Gegensatz zum http-Protokoll um eine TCP-Prozedur handelt, ist Servername nicht im Header enthalten, sodass das Übertragungsziel nicht mit Servername angegeben werden kann.
Durch Zuweisen verschiedener lokaler Computer-IPs in Hosts können Sie also entscheiden, welcher Upstream zugewiesen werden soll.
Überprüfen Sie die folgenden JMX-Verbindungen mit einem Tool wie Java VisualVM.
app-srv-01:18080
app-srv-02:18080
app-srv-03:18080
app-srv-04:18080
:
:
So weit diesmal.
Das Steam-Modul von Nginx ist sehr nützlich und kann auf viele Arten verwendet werden.
Empfangen Sie SMTP immer unter localhost: 25-http: //qiita.com/aya_eiya/items/dbd2ffff1f07a7bfedd6
Recommended Posts