Wdrażanie i konfigurowanie aplikacji Tomcat, JBoss lub Java SE w usłudze aplikacja systemu Azure Service
W tym artykule przedstawiono najbardziej typową konfigurację wdrażania i środowiska uruchomieniowego dla aplikacji Java w usłudze App Service. Jeśli nigdy nie używasz usługi aplikacja systemu Azure Service, najpierw zapoznaj się z przewodnikiem Szybki start języka Java. Odpowiedzi na ogólne pytania dotyczące korzystania z usługi App Service, które nie są specyficzne dla programowania w języku Java, znajdują się w często zadawanych pytaniach dotyczących usługi App Service.
usługa aplikacja systemu Azure uruchamia aplikacje internetowe Java w w pełni zarządzanej usłudze w trzech wariantach:
- Java SE — może uruchomić aplikację wdrożoną jako pakiet JAR zawierający serwer osadzony (taki jak Spring Boot, Dropwizard, Quarkus lub jeden z osadzonym serwerem Tomcat lub Jetty).
- Tomcat — wbudowany serwer Tomcat może uruchamiać aplikację wdrożona jako pakiet WAR.
- JBoss EAP — obsługiwane tylko w przypadku aplikacji systemu Linux w warstwach cenowych Premium v3 i Izolowanych w wersji 2. Wbudowany serwer JBoss EAP może uruchamiać aplikację wdrożona jako pakiet WAR lub EAR.
Uwaga
W przypadku aplikacji Spring zalecamy używanie usługi Azure Spring Apps. Można jednak nadal używać usługi aplikacja systemu Azure jako miejsca docelowego. Aby uzyskać porady, zobacz Wskazówki dotyczące miejsca docelowego obciążenia w języku Java.
Pokaż wersję języka Java
Aby wyświetlić bieżącą wersję języka Java, uruchom następujące polecenie w usłudze Cloud Shell:
az webapp config show --name <app-name> --resource-group <resource-group-name> --query "[javaVersion, javaContainer, javaContainerVersion]"
Aby wyświetlić wszystkie obsługiwane wersje języka Java, uruchom następujące polecenie w usłudze Cloud Shell:
az webapp list-runtimes --os windows | grep java
Aby uzyskać więcej informacji na temat obsługi wersji, zobacz Zasady obsługi środowiska uruchomieniowego języka usługi App Service.
Wdrażanie aplikacji
Narzędzia Build Tools
Maven
Za pomocą wtyczki Maven dla usługi Azure Web Apps możesz łatwo przygotować projekt Java maven dla aplikacji internetowej platformy Azure za pomocą jednego polecenia w katalogu głównym projektu:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
To polecenie dodaje wtyczkę i powiązaną konfigurację azure-webapp-maven-plugin
, wyświetlając monit o wybranie istniejącej aplikacji internetowej platformy Azure lub utworzenie nowej. Podczas konfigurowania próbuje wykryć, czy aplikacja powinna zostać wdrożona w środowisku Java SE, Tomcat lub (tylko system Linux) JBoss EAP. Następnie możesz wdrożyć aplikację Java na platformie Azure przy użyciu następującego polecenia:
mvn package azure-webapp:deploy
Oto przykładowa konfiguracja w pliku pom.xml
:
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.11.0</version>
<configuration>
<subscriptionId>111111-11111-11111-1111111</subscriptionId>
<resourceGroup>spring-boot-xxxxxxxxxx-rg</resourceGroup>
<appName>spring-boot-xxxxxxxxxx</appName>
<pricingTier>B2</pricingTier>
<region>westus</region>
<runtime>
<os>Linux</os>
<webContainer>Java SE</webContainer>
<javaVersion>Java 17</javaVersion>
</runtime>
<deployment>
<resources>
<resource>
<type>jar</type>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Gradle
Skonfiguruj wtyczkę Gradle dla usługi Azure Web Apps , dodając wtyczkę do pliku
build.gradle
:plugins { id "com.microsoft.azure.azurewebapp" version "1.10.0" }
Skonfiguruj szczegóły aplikacji internetowej. Odpowiednie zasoby platformy Azure są tworzone, jeśli nie istnieją. Poniżej przedstawiono przykładową konfigurację, aby uzyskać szczegółowe informacje, zapoznaj się z tym dokumentem.
azurewebapp { subscription = '<your subscription id>' resourceGroup = '<your resource group>' appName = '<your app name>' pricingTier = '<price tier like 'P1v2'>' region = '<region like 'westus'>' runtime { os = 'Linux' webContainer = 'Tomcat 10.0' // or 'Java SE' if you want to run an executable jar javaVersion = 'Java 17' } appSettings { <key> = <value> } auth { type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal } }
Wdróż za pomocą jednego polecenia.
gradle azureWebAppDeploy
Środowiska IDE
Platforma Azure zapewnia bezproblemowe środowisko programowania w usłudze Java App Service w popularnych środowiskach IDE Języka Java, w tym:
- VS Code: Java Web Apps z programem Visual Studio Code
- IntelliJ IDEA:Tworzenie aplikacji internetowej Hello World dla usługi aplikacja systemu Azure przy użyciu środowiska IntelliJ
- Eclipse:Tworzenie aplikacji internetowej Hello World dla usługi aplikacja systemu Azure przy użyciu środowiska Eclipse
Kudu API
Aby wdrożyć pliki .jar w środowisku Java SE, użyj /api/publish
punktu końcowego witryny Kudu. Aby uzyskać więcej informacji na temat tego interfejsu API, zobacz tę dokumentację.
Uwaga
Aby zidentyfikować i uruchomić aplikację, aplikacja .jar musi mieć nazwę app.jar
dla usługi App Service. Wtyczka Maven wykonuje to automatycznie podczas wdrażania. Jeśli nie chcesz zmienić nazwy pliku JAR na app.jar, możesz przekazać skrypt powłoki za pomocą polecenia , aby uruchomić aplikację .jar. Wklej ścieżkę bezwzględną do tego skryptu w polu tekstowym Plik startowy w sekcji Konfiguracja portalu. Skrypt uruchamiania nie jest uruchamiany z katalogu, do którego został umieszczony. W związku z tym zawsze należy używać ścieżek bezwzględnych do odwoływania się do plików w skrypcie startowym (na przykład: java -jar /home/myapp/myapp.jar
).
Aby wdrożyć pliki war w usłudze Tomcat, użyj punktu końcowego /api/wardeploy/
do postu pliku archiwum. Aby uzyskać więcej informacji na temat tego interfejsu API, zobacz tę dokumentację.
Aby wdrożyć pliki war na platformie JBoss, użyj punktu końcowego /api/wardeploy/
do postu pliku archiwum. Aby uzyskać więcej informacji na temat tego interfejsu API, zobacz tę dokumentację.
Aby wdrożyć pliki ear, użyj protokołu FTP. Aplikacja .ear jest wdrażana w katalogu głównym kontekstu zdefiniowanym w konfiguracji aplikacji. Jeśli na przykład katalog główny kontekstu aplikacji to <context-root>myapp</context-root>
, możesz przeglądać witrynę w ścieżce /myapp
: http://my-app-name.azurewebsites.net/myapp
. Jeśli chcesz, aby aplikacja internetowa była obsługiwana w ścieżce głównej, upewnij się, że aplikacja ustawia katalog główny kontekstu na ścieżkę główną: <context-root>/</context-root>
. Aby uzyskać więcej informacji, zobacz Ustawianie katalogu głównego kontekstu aplikacji internetowej.
Nie wdrażaj pliku war ani .jar przy użyciu protokołu FTP. Narzędzie FTP jest przeznaczone do przekazywania skryptów uruchamiania, zależności lub innych plików środowiska uruchomieniowego. Nie jest to optymalny wybór w przypadku wdrażania aplikacji internetowych.
Ponowne zapisywanie lub przekierowywanie adresu URL
Aby przepisać lub przekierować adres URL, użyj jednego z dostępnych rewriterów adresów URL, takich jak UrlRewriteFilter.
Tomcat zapewnia również zawór do ponownego zapisywania.
JBoss zapewnia również zawór do ponownego zapisywania.
Rejestrowanie i debugowanie aplikacji
Raporty wydajności, wizualizacje ruchu i kontrole kondycji są dostępne dla każdej aplikacji za pośrednictwem witryny Azure Portal. Aby uzyskać więcej informacji, zobacz omówienie diagnostyki usługi aplikacja systemu Azure Service.
Przesyłanie strumieniowe dzienników diagnostycznych
Aby uzyskać dostęp do dzienników konsoli wygenerowanych wewnątrz kodu aplikacji w usłudze App Service, włącz rejestrowanie diagnostyczne, uruchamiając następujące polecenie w usłudze Cloud Shell:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Możliwe wartości parametru --level
to: Error
, Warning
, Info
i Verbose
. Każdy kolejny poziom obejmuje poprzedni poziom. Na przykład poziom Error
obejmuje tylko komunikaty o błędach, a poziom Verbose
obejmuje wszystkie komunikaty.
Po włączeniu rejestrowania diagnostycznego uruchom następujące polecenie, aby wyświetlić strumień dziennika:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Jeśli nie widzisz dzienników konsoli, sprawdź ponownie w ciągu 30 sekund.
Uwaga
Pliki dzienników można także sprawdzać w przeglądarce pod adresem https://<app-name>.scm.azurewebsites.net/api/logs/docker
.
Aby w dowolnym momencie zatrzymać przesyłanie strumieniowe dzienników, naciśnij kombinację klawiszy Ctrl
+C
.
Aby uzyskać więcej informacji, zobacz Stream logs in Cloud Shell (Dzienniki usługi Stream w usłudze Cloud Shell).
Dostęp do konsoli SSH w systemie Linux
Aby otworzyć bezpośrednią sesję SSH w kontenerze, należy uruchomić aplikację.
Wklej następujący adres URL do przeglądarki i zastąp wartość <app-name>
nazwą swojej aplikacji:
https://<app-name>.scm.azurewebsites.net/webssh/host
Jeśli nie masz jeszcze uwierzytelnienia, musisz uwierzytelnić się w subskrypcji platformy Azure, aby nawiązać połączenie. Po uwierzytelnieniu zostanie wyświetlona powłoka w przeglądarce umożliwiająca uruchamianie poleceń w kontenerze.
Uwaga
Wszelkie zmiany wprowadzone poza katalogiem /home są przechowywane w samym kontenerze i nie są zachowywane po ponownym uruchomieniu aplikacji.
Aby otworzyć zdalną sesję SSH z komputera lokalnego, zobacz Otwieranie sesji SSH z poziomu powłoki zdalnej.
Narzędzia do rozwiązywania problemów z systemem Linux
Wbudowane obrazy Java są oparte na systemie operacyjnym Alpine Linux . apk
Użyj menedżera pakietów, aby zainstalować wszystkie narzędzia do rozwiązywania problemów lub polecenia.
Java Profiler
Wszystkie środowiska uruchomieniowe Języka Java w usłudze aplikacja systemu Azure są dostarczane z narzędziem JDK Flight Recorder do profilowania obciążeń Java. Służy do rejestrowania zdarzeń JVM, systemu i aplikacji oraz rozwiązywania problemów w aplikacjach.
Aby dowiedzieć się więcej na temat programu Java Profiler, odwiedź dokumentację aplikacja systemu Azure Insights.
Flight Recorder
Wszystkie środowiska uruchomieniowe Języka Java w usłudze App Service są dostarczane z narzędziem Java Flight Recorder. Służy do rejestrowania zdarzeń JVM, systemu i aplikacji oraz rozwiązywania problemów w aplikacjach Java.
Nagranie z czasem
Aby upłynąć pewien czas nagrywania, potrzebujesz identyfikatora PID (identyfikatora procesu) aplikacji Java. Aby znaleźć identyfikator PID, otwórz przeglądarkę w witrynie SCM aplikacji internetowej pod adresem https://<your-site-name>.scm.azurewebsites.net/ProcessExplorer/
. Na tej stronie przedstawiono uruchomione procesy w aplikacji internetowej. Znajdź proces o nazwie "java" w tabeli i skopiuj odpowiedni identyfikator PID (identyfikator procesu).
Następnie otwórz konsolę debugowania na górnym pasku narzędzi witryny SCM i uruchom następujące polecenie. Zastąp wartość <pid>
skopiowaną wcześniej identyfikatorem procesu. To polecenie uruchamia 30-sekundowe rejestrowanie profilera aplikacji Java i generuje plik o nazwie timed_recording_example.jfr
w C:\home
katalogu.
jcmd <pid> JFR.start name=TimedRecording settings=profile duration=30s filename="C:\home\timed_recording_example.JFR"
Analizowanie .jfr
plików
Użyj protokołu FTPS , aby pobrać plik JFR na komputer lokalny. Aby przeanalizować plik JFR, pobierz i zainstaluj narzędzie Java Mission Control. Aby uzyskać instrukcje dotyczące narzędzia Java Mission Control, zapoznaj się z dokumentacją pakietu JMC i instrukcjami dotyczącymi instalacji.
Rejestrowanie aplikacji
Włącz rejestrowanie aplikacji za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure, aby skonfigurować usługę App Service w celu zapisania standardowych strumieni błędów konsoli aplikacji i standardowych strumieni błędów konsoli do lokalnego systemu plików lub usługi Azure Blob Storage. Rejestrowanie w lokalnym wystąpieniu systemu plików usługi App Service jest wyłączone 12 godzin po jej włączeniu. Jeśli potrzebujesz dłuższego przechowywania, skonfiguruj aplikację do zapisywania danych wyjściowych w kontenerze usługi Blob Storage.
Dzienniki aplikacji Java i Tomcat można znaleźć w katalogu /home/LogFiles/Application/ .
Jeśli aplikacja używa logback lub Log4j do śledzenia, możesz przekazać te ślady do przeglądu w usłudze aplikacja systemu Azure Insights, korzystając z instrukcji konfiguracji struktury rejestrowania w artykule Eksploruj dzienniki śledzenia języka Java w usłudze Application Insights.
Uwaga
Ze względu na znaną lukę w zabezpieczeniach CVE-2021-44228 należy użyć usługi Log4j w wersji 2.16 lub nowszej.
Dostosowywanie i dostrajanie
usługa aplikacja systemu Azure obsługuje dostrajanie i dostosowywanie za pośrednictwem witryny Azure Portal i interfejsu wiersza polecenia. Zapoznaj się z następującymi artykułami dotyczącymi konfiguracji aplikacji internetowej innej niż Java:
- Konfigurowanie ustawień aplikacji
- Konfigurowanie domeny niestandardowej
- Konfigurowanie powiązań TLS/SSL
- Dodawanie sieci CDN
- Konfigurowanie witryny Kudu
Lokalne kopiowanie zawartości aplikacji
Ustaw ustawienie JAVA_COPY_ALL
aplikacji na wartość , aby true
skopiować zawartość aplikacji do lokalnego procesu roboczego z udostępnionego systemu plików. To ustawienie pomaga rozwiązać problemy z blokowaniem plików.
Ustawianie opcji środowiska uruchomieniowego języka Java
Aby ustawić przydzieloną pamięć lub inne opcje środowiska uruchomieniowego JVM, utwórz ustawienie aplikacji o nazwie JAVA_OPTS
z opcjami. Usługa App Service przekazuje to ustawienie jako zmienną środowiskową do środowiska uruchomieniowego Java po uruchomieniu.
W witrynie Azure Portal w obszarze Ustawienia aplikacji internetowej utwórz nowe ustawienie aplikacji o nazwie JAVA_OPTS
zawierające inne ustawienia, takie jak -Xms512m -Xmx1204m
.
W witrynie Azure Portal w obszarze Ustawienia aplikacji internetowej utwórz nowe ustawienie aplikacji o nazwie CATALINA_OPTS
zawierające inne ustawienia, takie jak -Xms512m -Xmx1204m
.
Aby skonfigurować ustawienie aplikacji z poziomu wtyczki Maven, dodaj tagi ustawień/wartości w sekcji wtyczki platformy Azure. W poniższym przykładzie ustawiono określony minimalny i maksymalny rozmiar sterty Java:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms1024m -Xmx1024m</value>
</property>
</appSettings>
Uwaga
Nie musisz tworzyć pliku web.config w przypadku korzystania z serwera Tomcat w usłudze Windows App Service.
Deweloperzy z jedną aplikacją z jednym miejscem wdrożenia w planie usługi App Service mogą korzystać z następujących opcji:
- Wystąpienia B1 i S1:
-Xms1024m -Xmx1024m
- Wystąpienia B2 i S2:
-Xms3072m -Xmx3072m
- Wystąpienia B3 i S3:
-Xms6144m -Xmx6144m
- Wystąpienia P1v2:
-Xms3072m -Xmx3072m
- Wystąpienia P2v2:
-Xms6144m -Xmx6144m
- Wystąpienia P3v2:
-Xms12800m -Xmx12800m
- Wystąpienia P1v3:
-Xms6656m -Xmx6656m
- Wystąpienia P2v3:
-Xms14848m -Xmx14848m
- Wystąpienia P3v3:
-Xms30720m -Xmx30720m
- Wystąpienia I1:
-Xms3072m -Xmx3072m
- Wystąpienia I2:
-Xms6144m -Xmx6144m
- Wystąpienia I3:
-Xms12800m -Xmx12800m
- Wystąpienia I1v2:
-Xms6656m -Xmx6656m
- Wystąpienia I2v2:
-Xms14848m -Xmx14848m
- Wystąpienia I3v2:
-Xms30720m -Xmx30720m
Podczas dostrajania ustawień sterty aplikacji przejrzyj szczegóły planu usługi App Service i uwzględnij wiele aplikacji i miejsca wdrożenia, aby znaleźć optymalną alokację pamięci.
Włączanie gniazd internetowych
Włącz obsługę gniazd internetowych w witrynie Azure Portal w ustawieniach aplikacji dla aplikacji. Aby ustawienie zaczęły obowiązywać, należy ponownie uruchomić aplikację.
Włącz obsługę gniazd internetowych przy użyciu interfejsu wiersza polecenia platformy Azure za pomocą następującego polecenia:
az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true
Następnie uruchom ponownie aplikację:
az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>
Ustawianie domyślnego kodowania znaków
W witrynie Azure Portal w obszarze Ustawienia aplikacji internetowej utwórz nowe ustawienie aplikacji o nazwie o JAVA_OPTS
wartości -Dfile.encoding=UTF-8
.
Alternatywnie możesz skonfigurować ustawienie aplikacji przy użyciu wtyczki App Service Maven. Dodaj nazwę ustawienia i tagi wartości w konfiguracji wtyczki:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Wstępne kompilowanie plików JSP
Aby zwiększyć wydajność aplikacji Tomcat, możesz skompilować pliki JSP przed wdrożeniem w usłudze App Service. Możesz użyć wtyczki Maven dostarczonej przez usługę Apache Sling lub za pomocą tego pliku kompilacji Ant.
Uwaga
robots933456 w dziennikach
W dziennikach kontenera może zostać wyświetlony następujący komunikat:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Możesz bezpiecznie zignorować ten komunikat. /robots933456.txt
jest fikcyjną ścieżką adresu URL, za pomocą której usługa App Service sprawdza, czy kontener jest w stanie obsługiwać żądania. Odpowiedź 404 oznacza po prostu, że ścieżka nie istnieje, ale pozwala usłudze App Service sprawdzić, czy kontener jest w dobrej kondycji i jest gotowy do reagowania na żądania.
Wybieranie wersji środowiska uruchomieniowego Java
Usługa App Service umożliwia użytkownikom wybranie wersji głównej maszyny JVM, takiej jak Java 8 lub Java 11, oraz wersji poprawki, takiej jak 1.8.0_232 lub 11.0.5. Możesz również automatycznie zaktualizować wersję poprawki, gdy staną się dostępne nowe wersje pomocnicze. W większości przypadków aplikacje produkcyjne powinny używać przypiętych wersji JVM poprawki. Zapobiega to nieoczekiwanym awariom podczas automatycznej aktualizacji wersji poprawki. Wszystkie aplikacje internetowe Java używają 64-bitowych maszyn JVM i nie można jej konfigurować.
Jeśli używasz serwera Tomcat, możesz przypiąć wersję poprawki serwera Tomcat. W systemie Windows można niezależnie przypiąć wersje poprawek maszyn wirtualnych JVM i Tomcat. W systemie Linux możesz przypiąć wersję poprawki serwera Tomcat; wersja poprawki maszyny wirtualnej JVM jest również przypięta, ale nie można jej oddzielnie konfigurować.
Jeśli zdecydujesz się przypiąć wersję pomocniczą, musisz okresowo aktualizować wersję pomocniczą JVM w aplikacji. Aby upewnić się, że aplikacja działa w nowszej wersji pomocniczej, utwórz miejsce przejściowe i zwiększ wersję pomocniczą w miejscu przejściowym. Po potwierdzeniu, że aplikacja działa poprawnie w nowej wersji pomocniczej, możesz zamienić miejsca przejściowe i produkcyjne.
Klastrowanie
Usługa App Service obsługuje klastrowanie dla protokołu JBoss EAP w wersji 7.4.1 lub nowszej. Aby włączyć klastrowanie, aplikacja internetowa musi być zintegrowana z siecią wirtualną. Gdy aplikacja internetowa jest zintegrowana z siecią wirtualną, jest uruchamiana ponownie, a instalacja protokołu EAP JBoss automatycznie rozpoczyna się od konfiguracji klastrowanej. Wystąpienia protokołu JBoss EAP komunikują się za pośrednictwem podsieci określonej w integracji sieci wirtualnej przy użyciu portów wyświetlanych w zmiennej środowiskowej WEBSITES_PRIVATE_PORTS
w czasie wykonywania. Klastrowanie można wyłączyć, tworząc ustawienie aplikacji o nazwie WEBSITE_DISABLE_CLUSTERING
z dowolną wartością.
Uwaga
Jeśli włączasz integrację sieci wirtualnej z szablonem usługi ARM, musisz ręcznie ustawić właściwość vnetPrivatePorts
na wartość 2
. Jeśli włączysz integrację sieci wirtualnej z interfejsu wiersza polecenia lub portalu, ta właściwość zostanie ustawiona automatycznie.
Po włączeniu klastrowania wystąpienia protokołu JBoss EAP używają protokołu odnajdywania FILE_PING JGroups w celu odnajdywania nowych wystąpień i utrwalania informacji klastra, takich jak członkowie klastra, ich identyfikatory i adresy IP. W usłudze App Service te pliki znajdują się w obszarze /home/clusterinfo/
. Pierwsze wystąpienie protokołu EAP do uruchomienia uzyskuje uprawnienia do odczytu/zapisu w pliku członkostwa w klastrze. Inne wystąpienia odczytują plik, znajdują węzeł podstawowy i koordynują go z tym węzłem, który ma zostać uwzględniony w klastrze i dodawany do pliku.
Uwaga
Możesz uniknąć przekroczenia limitu czasu klastrowania JBOSS, czyszcząc przestarzałe pliki odnajdywania podczas uruchamiania aplikacji
Typy planów usługi App Service w wersji 3 w warstwie Premium w wersji 3 i izolowanej w wersji 2 można opcjonalnie dystrybuować między Strefy dostępności w celu zwiększenia odporności i niezawodności obciążeń o znaczeniu krytycznym dla działania firmy. Ta architektura jest również nazywana nadmiarowością stref. Funkcja klastrowania JBoss EAP jest zgodna z funkcją nadmiarowości strefy.
Reguły automatycznego skalowania
Podczas konfigurowania reguł skalowania automatycznego na potrzeby skalowania w poziomie ważne jest, aby stopniowo (pojedynczo) usuwać wystąpienia w celu zapewnienia, że każde usunięte wystąpienie może przenieść swoje działanie (takie jak obsługa transakcji bazy danych) do innego elementu członkowskiego klastra. Podczas konfigurowania reguł skalowania automatycznego w portalu w celu skalowania w dół użyj następujących opcji:
- Operacja: "Zmniejsz liczbę według"
- Schładz: "5 minut" lub więcej
- Liczba wystąpień: 1
Nie trzeba przyrostowo dodawać wystąpień (skalowanie w poziomie), można dodać wiele wystąpień do klastra naraz.
Plany usługi App Service
Protokół JBoss EAP jest dostępny tylko w typach Premium v3 i Izolowanych w wersji 2 usługi App Service. Klienci, którzy utworzyli witrynę JBoss EAP w innej warstwie w publicznej wersji zapoznawczej, powinni skalować w górę do warstwy Premium lub Izolowanej sprzętu, aby uniknąć nieoczekiwanego zachowania.
Konfiguracja punktu odniesienia serwera Tomcat
Uwaga
Ta sekcja dotyczy tylko systemu Linux.
Deweloperzy języka Java mogą dostosowywać ustawienia serwera, rozwiązywać problemy i wdrażać aplikacje w usłudze Tomcat z pewnością, jeśli wiedzą o pliku server.xml i szczegółach konfiguracji serwera Tomcat. Możliwe dostosowania obejmują:
- Dostosowywanie konfiguracji serwera Tomcat: dzięki zrozumieniu pliku server.xml i szczegółów konfiguracji serwera Tomcat można dostosować ustawienia serwera w celu dopasowania ich do potrzeb aplikacji.
- Debugowanie: po wdrożeniu aplikacji na serwerze Tomcat deweloperzy muszą znać konfigurację serwera, aby debugować wszelkie problemy, które mogą wystąpić. Obejmuje to sprawdzanie dzienników serwera, badanie plików konfiguracji i identyfikowanie wszelkich błędów, które mogą wystąpić.
- Rozwiązywanie problemów z serwerem Tomcat: Nieuchronnie deweloperzy języka Java napotykają problemy z serwerem Tomcat, takie jak problemy z wydajnością lub błędy konfiguracji. Dzięki zrozumieniu pliku server.xml i szczegółów konfiguracji serwera Tomcat deweloperzy mogą szybko diagnozować i rozwiązywać te problemy, co pozwala zaoszczędzić czas i nakład pracy.
- Wdrażanie aplikacji w usłudze Tomcat: aby wdrożyć aplikację internetową Java w usłudze Tomcat, deweloperzy muszą wiedzieć, jak skonfigurować plik server.xml i inne ustawienia serwera Tomcat. Zrozumienie tych szczegółów jest niezbędne do pomyślnego wdrażania aplikacji i zapewnienia, że działają bezproblemowo na serwerze.
Podczas tworzenia aplikacji z wbudowanym serwerem Tomcat do hostowania obciążenia Java (pliku WAR lub pliku JAR) istnieją pewne ustawienia, które są gotowe do skonfigurowania serwera Tomcat. Aby uzyskać szczegółowe informacje, w tym domyślną konfigurację serwera internetowego Tomcat, możesz zapoznać się z oficjalną dokumentacją serwera Apache Tomcat.
Ponadto istnieją pewne przekształcenia, które są dalej stosowane na podstawie server.xml dystrybucji Tomcat po uruchomieniu. Są to przekształcenia ustawień łącznika, hosta i zaworu.
Najnowsze wersje serwera Tomcat mają server.xml (8.5.58 i 9.0.38). Starsze wersje serwera Tomcat nie używają przekształceń i mogą mieć inne zachowanie w rezultacie.
Łącznik
<Connector port="${port.http}" address="127.0.0.1" maxHttpHeaderSize="16384" compression="on" URIEncoding="UTF-8" connectionTimeout="${site.connectionTimeout}" maxThreads="${catalina.maxThreads}" maxConnections="${catalina.maxConnections}" protocol="HTTP/1.1" redirectPort="8443"/>
maxHttpHeaderSize
jest ustawiona na wartość16384
URIEncoding
jest ustawiona na wartośćUTF-8
conectionTimeout
jest ustawiona naWEBSITE_TOMCAT_CONNECTION_TIMEOUT
wartość , która jest domyślnie ustawiona na240000
maxThreads
jest ustawiona naWEBSITE_CATALINA_MAXTHREADS
wartość , która jest domyślnie ustawiona na200
maxConnections
jest ustawiona naWEBSITE_CATALINA_MAXCONNECTIONS
wartość , która jest domyślnie ustawiona na10000
Uwaga
Ustawienia connectionTimeout, maxThreads i maxConnections można dostosować za pomocą ustawień aplikacji
Poniżej przedstawiono przykładowe polecenia interfejsu wiersza polecenia, których można użyć do zmiany wartości conectionTimeout, maxThreads lub maxConnections:
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_TOMCAT_CONNECTION_TIMEOUT=120000
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXTHREADS=100
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXCONNECTIONS=5000
- Łącznik używa adresu kontenera zamiast 127.0.0.1
Gospodarz
<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
appBase
jest ustawiona naAZURE_SITE_APP_BASE
wartość , która jest domyślnie ustawiona na wartość lokalnąWebappsLocalPath
xmlBase
jest ustawiona naAZURE_SITE_HOME
wartość , która jest domyślnie ustawiona na/site/wwwroot
unpackWARs
jest ustawiona naAZURE_UNPACK_WARS
wartość , która jest domyślnie ustawiona natrue
workDir
jest ustawiona naJAVA_TMP_DIR
wartość , która jest domyślnie ustawionaTMP
errorReportValveClass
używa naszego niestandardowego zaworu raportu o błędach
Zawór
<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t "%r" %s %b %D %{x-arr-log-id}i" directory="${site.logdir}/http/RawLogs" maxDays="${site.logRetentionDays}" className="org.apache.catalina.valves.AccessLogValve" suffix=".txt"/>
directory
jest ustawiona naAZURE_LOGGING_DIR
wartość , która jest domyślnie ustawiona nahome\logFiles
maxDays
ma wartośćWEBSITE_HTTPLOGGING_RETENTION_DAYS
, która jest domyślnie ustawiona na0
[na zawsze]
W systemie Linux ma wszystkie te same dostosowania, a także:
Dodaje do zaworu niektóre strony błędów i raportowania:
<xsl:attribute name="appServiceErrorPage"> <xsl:value-of select="'${appService.valves.appServiceErrorPage}'"/> </xsl:attribute> <xsl:attribute name="showReport"> <xsl:value-of select="'${catalina.valves.showReport}'"/> </xsl:attribute> <xsl:attribute name="showServerInfo"> <xsl:value-of select="'${catalina.valves.showServerInfo}'"/> </xsl:attribute>
Następne kroki
Odwiedź centrum Azure for Java Developers, aby znaleźć przewodniki Szybki start platformy Azure, samouczki i dokumentację referencyjną języka Java.