Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuzda, mevcut bir Red Hat JBoss Enterprise Application Platform (EAP) uygulamasını bir Azure App Service örneğindeki JBoss EAP üzerinde çalışacak şekilde geçirmek istediğinizde bilmeniz gerekenler açıklanmaktadır.
Premigration
Geçişin başarılı olduğundan emin olmak için, başlamadan önce aşağıdaki bölümlerde açıklanan değerlendirme ve envanter adımlarını tamamlayın.
Envanter sunucusu kapasitesi
Geçerli üretim sunucularının donanımını (bellek, CPU, disk) ve ortalama ve en yüksek istek sayısını ve kaynak kullanımını belgeleyin. Seçtiğiniz geçiş yolundan bağımsız olarak bu bilgilere ihtiyaç duyacaksınız. Örneğin düğüm havuzunuzdaki VM'lerin boyutunu, kapsayıcı tarafından kullanılacak bellek miktarını ve kapsayıcının ihtiyaç duyduğu CPU paylaşımını seçmeye yardımcı olmak için yararlıdır.
Yük testi verileriniz varsa, beklenen performans hedeflerini karşıladığınızdan emin olmak için geçiş sonrasında testleri yeniden çalıştırabilmek için geçerli test sonuçlarının anlık görüntüsünü alın.
AKS'de düğüm havuzlarını yeniden boyutlandırmak mümkündür. Nasıl yapılacağını öğrenmek için bkz . Azure Kubernetes Service'te (AKS) düğüm havuzlarını yeniden boyutlandırma.
Tüm sırların envanterini çıkarmak
Üretim sunucularındaki tüm özellikleri ve yapılandırma dosyalarını, gizli bilgiler ve parolalar açısından kontrol edin. Web Uygulaması Arşivi (WAR) dosyalarınızdaki jboss-web.xml denetlemeyi unutmayın. Parola veya kimlik bilgileri içeren yapılandırma dosyaları da uygulamanızın içinde bulunabilir.
Bu gizli bilgileri Azure Key Vault'ta depolamayı düşünebilirsiniz. Daha fazla bilgi için bkz. Temel Azure Key Vault kavramları.
Key Vault referansları ile App Service örneğinizde Key Vault gizli anahtarlarını kullanabilirsiniz. Key Vault referansları, uygulamanızda gizli bilgileri kullanırken bunları güvende ve istirahat hâlinde şifrelenmiş tutmanızı sağlar. Daha fazla bilgi için, App Service ve Azure İşlevleri için Key Vault başvurularını kullanma'ya bakın.
Tüm sertifikaların envanterini çıkarma
Genel SSL uç noktaları için kullanılan tüm sertifikaları belgeleyin. Aşağıdaki komutu çalıştırarak üretim sunucularındaki tüm sertifikaları görüntüleyebilirsiniz:
keytool -list -v -keystore <path to keystore>
Desteklenen Java sürümünün doğru çalıştığını onaylama
App Service'te JBoss EAP için desteklenen bir Java sürümü gerekir. Java Geliştirme Seti'nin (JDK) hangi sürümünün kullanılacağına ilişkin yönergeler için Red Hat belgelerindeki Desteklenen Yapılandırmalar bakın.
Not
Geçerli sunucunuz desteklenmeyen bir JDK (Oracle JDK veya IBM OpenJ9 gibi) çalıştırıyorsa bu doğrulama özellikle önemlidir.
Geçerli Java sürümünüzü öğrenmek için üretim sunucunuzda oturum açın ve şu komutu çalıştırın:
java -version
Dış kaynakların envanterini çıkarma
Veri kaynakları, Java İleti Hizmeti (JMS) ileti aracıları ve diğerleri gibi dış kaynaklar Java Adlandırma ve Dizin Arabirimi (JNDI) aracılığıyla eklenir. Bu tür kaynakların bazıları geçiş veya yeniden yapılandırma gerektirebilir.
Uygulamanızın içinde
WEB-INF/jboss-web.xml ve/veya WEB-INF/web.xml dosyalarını inceleyin.
<Resource>
öğesi içindeki <Context>
öğelerini arayın.
Veri kaynakları
Veri kaynakları, type
özniteliği javax.sql.DataSource
olarak ayarlanmış JNDI kaynaklarıdır. Aşağıdaki bilgileri her veri kaynağı için belgeleyin:
- Veri kaynağının adı nedir?
- Bağlantı havuzu yapılandırması nedir?
- Java Veritabanı Bağlantısı (JDBC) sürücüsü JAR dosyasını nerede bulabilirim?
Daha fazla bilgi için JBoss EAP belgelerindeki JBoss Kurumsal Uygulama Platformu (EAP) Veri Kaynakları hakkında bakın.
Diğer tüm dış kaynaklar
Bu kılavuzda olası tüm dış bağımlılıkları belgelemek uygulanabilir bir yöntem değildir. Geçişten sonra uygulamanızın tüm dış bağımlılıklarının karşılandığını doğrulamak ekibinizin sorumluluğundadır.
Dosya sisteminin kullanılıp kullanılmayacağını ve nasıl kullanıldığını belirleme
Uygulama sunucusundaki dosya sisteminin herhangi bir kullanımı için yeniden yapılandırma veya nadir durumlarda mimari değişiklikler gerekir. JBoss EAP modülleri veya uygulama kodunuz dosya sistemini kullanabilir. Aşağıdaki bölümlerde açıklanan senaryoların bazılarını veya tümünü tanımlayabilirsiniz.
Yalnızca okunur statik içerik
Uygulamanız şu anda statik içerik yüklüyse, bunun için alternatif bir konuma ihtiyacınız vardır. Statik içeriği Azure Blob Depolama'ya taşımayı ve küresel olarak hızlı indirmeler için Azure Front Door eklemeyi düşünmelisiniz. Daha fazla bilgi için bkz. Azure Depolama 'de Statik web sitesi barındırma ve Azure Depolama hesabını Azure Front Doorile tümleştirme.
Dinamik veya dahili içerik
Uygulamanız tarafından sık yazılan ve okunan dosyalar (geçici veri dosyaları gibi) veya yalnızca uygulamanız tarafından görülebilen statik dosyalar için app service planınızla ilişkili yerel dosya depolama alanını kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Uygulaması Hizmetinde işletim sistemi işlevselliği ve Azure Uygulaması Hizmeti dosya sistemini anlama.
Uygulamanızın zamanlanmış işlere bağlı olup olmadığını belirleyin
Quartz Scheduler görevleri veya Unix cron işleri gibi zamanlanmış işler Azure Uygulaması Hizmeti ile KULLANıLMAMALIDIR. Azure Uygulaması Hizmeti, zamanlanmış görevleri içeren bir uygulamayı dahili olarak dağıtmanızı engellemez. Bununla birlikte uygulamanızın ölçeği genişletildiyse, aynı zamanlanan iş zamanlama dönemi başına birden çok kez çalıştırılabilir. Bu durum istenmeyen sonuçlar doğurabilir.
Uygulama kodunuzun içindeki veya dışındaki üretim sunucularında çalıştırılan zamanlanmış görevlerin envanterini oluşturun.
Şirket içi bağlantı gerekip gerekmediğini belirleyin.
Uygulamanızın şirket içi hizmetlerinizden birine erişmesi gerekiyorsa Azure’ın bağlantı hizmetlerinden birini sağlamalısınız. Daha fazla bilgi için bkz. Şirket içi ağı Azure’a bağlama. Alternatif olarak şirket içi kaynaklarınızın kullanıma sunduğu genel kullanıma açık API’leri kullanmak için uygulamanızı yeniden düzenlemeniz gerekir.
Java Message Service (JMS) Kuyrukları mı yoksa Konular mı kullanılıyor, belirleyin.
Uygulamanız JMS Kuyruklarını veya Konularını kullanıyorsa, bunları dışarıda barındırılan bir JMS sunucusuna geçirmeniz gerekir. Azure Service Bus ve Gelişmiş İleti Sıraya Alma Protokolü (AMQP), JMS kullananlar için harika bir geçiş stratejisi olabilir. Daha fazla bilgi için bkz . Azure Service Bus standardı ve AMQP 1.0 ile Java İleti Hizmeti 1.1'i kullanma.
JMS kalıcı depoları yapılandırıldıysa, bunların yapılandırmasını yakalamalı ve geçiş sonrasında uygulamalısınız.
JCA bağlayıcıların kullanımda olup olmadığını belirleme
Uygulamanız Java Bağlayıcı Mimarisi (JCA) bağlayıcıları kullanıyorsa JBoss EAP üzerinde JCA bağlayıcısını kullanabileceğinizi doğrulayın. JBoss EAP'de JCA bağlayıcısını kullanabiliyorsanız, kullanılabilir olması için Java Arşivi (JAR) dosyalarını sunucu sınıf yolu'na eklemeniz ve gerekli yapılandırma dosyalarını JBoss EAP sunucu dizinlerinde doğru konuma yerleştirmeniz gerekir.
JAAS’nin kullanımda olup olmadığını belirleme
Uygulamanız JAAS kullanıyorsa JAAS’nin nasıl yapılandırıldığını yakalamanız gerekir. Eğer bir veritabanı kullanıyorsa, JBoss EAP'de JAAS alanına dönüştürebilirsiniz. Özel bir uygulamaysa JBoss EAP'de kullanılabileceğini doğrulamanız gerekir.
Uygulamanızın bir kaynak bağdaştırıcısı kullanıp kullanmadığını belirleme
Uygulamanızın kaynak bağdaştırıcısı (RA) gerekiyorsa JBoss EAP ile uyumlu olması gerekir. RA'nın tek başına bir JBoss EAP örneğinde düzgün çalışıp çalışmadığını belirlemek için bunu sunucuya dağıtın ve düzgün bir şekilde yapılandırın. RA düzgün çalışıyorsa, JAR dosyalarını App Service'in sunucu sınıf yoluna eklemeniz ve gerekli yapılandırma dosyalarını JBoss EAP sunucu dizinlerinde doğru konuma yerleştirmeniz gerekir, böylece erişilebilir hale gelir.
Uygulamanızın birden çok WAR’dan oluşup oluşmadığını saptama
Uygulamanız birden çok WAR’dan oluşuyorsa, bu WAR dosyalarından her birini ayrı uygulama olarak değerlendirmeli ve her biri için bu kılavuzu izlemelisiniz.
Uygulamanızın EAR olarak paketlenip paketlenmediğini saptama
Uygulamanız EAR dosyası olarak paketlendiyse application.xml dosyasını incelediğinizden ve yapılandırmalarını yakaladığınızdan emin olun.
Not
App Service kaynaklarınızı daha iyi kullanmak için web uygulamalarınızın her birini bağımsız olarak ölçeklendirebilmek istiyorsanız EAR'yi ayrı web uygulamalarına ayırmanız gerekir.
Üretim sunucularında çalıştırılan tüm dış işlemleri ve daemon’ları belirleme
Uygulama sunucusunun dışında çalıştırılan izleme deamon’ları gibi işlemleriniz varsa, bunları ortadan kaldırmanız veya başka bir yere geçirmeniz gerekir.
Yerinde test gerçekleştirme
Web Uygulamalarınızı oluşturmadan önce uygulamanızı App Service'te kullanmayı düşündüğünüz JDK ve JBoss EAP sürümlerine geçirin. Uyumluluk ve performanstan emin olmak için uygulamayı kapsamlı olarak test edin.
App Service'te JBoss EAP özellik notları
App Service'te JBoss EAP kullanırken aşağıdaki notları dikkate aldığınızdan emin olun.
JBoss EAP yönetim konsolu: JBoss web konsolu App Service'te kullanıma sunulmaz. Bunun yerine, Azure portalı uygulamanız için yönetim API'leri sağlar ve Azure CLI, Azure Maven Eklentisi veya diğer Azure geliştirici araçlarını kullanarak dağıtmanız gerekir. Uygulama başlatma sırasında JBoss CLI kullanılarak JBoss kaynaklarının daha fazla yapılandırılması sağlanabilir.
İşlemler: İşlemler API'si desteklenir ve otomatik işlem kurtarma desteği vardır. Daha fazla bilgi için Red Hat belgelerindeki JBoss EAP'de işlemleri yönetme bölümüne bakın.
Yönetilen etki alanı modu: Çok sunuculu bir üretim ortamında, JBoss EAP'deki Yönetilen Etki Alanı modu merkezi yönetilen özellikler sunar. Ancak App Service'te JBoss EAP ile App Service platformu, sunucu örneklerinizin yapılandırılması ve yönetilmesi sorumluluğunu üstlenir. App Service, JBoss EAP'nin yönetilen etki alanı modu gereksinimini ortadan kaldırır. Etki alanı modu, sanal makine tabanlı çok sunuculu dağıtımlar için iyi bir seçimdir. Daha fazla bilgi için Red Hat belgelerindeki Yönetilen etki alanları hakkında bölümüne bakın.
Sunucudan sunucuya kümeleme: App Service, JBoss EAP kümelenmiş dağıtımlarını tam olarak destekler. Bu, güvenle kullanabileceğiniz anlamına gelir:
- Durum bilgisi olan oturum çekirdekleri.
- Dağıtılmış işlemler.
- Örnekten örneğe iletişim veya yüksek kullanılabilirlik gerektiren benzer özellikler.
Daha fazla bilgi için Azure App Service için Java uygulaması yapılandırmaKümeleme bölümüne bakın.
Göç
Uygulamalar için Red Hat Geçiş Araç Seti
Red Hat Migration Toolkit for Applications, Visual Studio Code için ücretsiz bir uzantıdır. Bu uzantı, şirket içinden buluta geçiş için öneriler sağlamak üzere uygulama kodunuzu ve yapılandırmanızı analiz eder. Daha fazla bilgi için bkz. Uygulamalar için Geçiş Araç Seti'ne genel bakış.
Bu kılavuzun içeriği doğru App Service Planı türünü seçme, oturum durumunuzu dışlaştırma ve JBoss Yönetim arabirimi yerine EAP örneklerinizi yönetmek için Azure'ı kullanma gibi geçiş yolculuğunun diğer bileşenlerini ele alma konusunda size yardımcı olur.
JBoss EAP çalışma zamanı için Azure Uygulaması Hizmeti sağlama
Kaynak grubu ve Azure Uygulaması Hizmet Planı oluşturmak için aşağıdaki komutları kullanın. App Service Planı oluşturulduktan sonra, JBoss Enterprise Application Platform (EAP) çalışma zamanı kullanılarak bir Linux web uygulaması planı oluşturulur.
Belirtilen ortam değişkenlerinin uygun değerlere sahip olduğundan emin olun.
az group create --resource-group $resourceGroup --location eastus
az acr create --resource-group $resourceGroup --name $acrName --sku Standard
az appservice plan create \
--resource-group $resourceGroup \
--name $jbossAppService \
--is-linux \
--sku P0v3
az webapp create \
--resource-group $resourceGroup \
--name $jbossWebApp \
--plan $jbossAppServicePlan \
--runtime "JBOSSEAP|8-java17"
# Or use "JBOSSEAP|8-java11" if you're using Java 11
Uygulama oluşturma
Aşağıdaki Maven komutunu kullanarak uygulamayı derleyin.
mvn clean install -DskipTests
Uygulamayı dağıt
Uygulamanız bir Maven POM dosyasından derleniyorsa, Web Uygulamasını oluşturmak ve uygulamanızı dağıtmak için Maven için Webapp eklentisini kullanın. Daha fazla bilgi için bkz. Hızlı Başlangıç: Azure Uygulaması Hizmetinde Java uygulaması oluşturma.
JBoss EAP uygulamalarının dağıtımını otomatikleştirmek için Web App için Azure Pipelines görevini veya Azure WebApp'e dağıtmak için GitHub Action'ı kullanabilirsiniz.
Veri kaynaklarını ayarlama
Bir veri kaynağını JBoss Enterprise Application Platform'a (EAP) kaydederken üç temel adım vardır: Java Veritabanı Bağlantısı (JDBC) sürücüsünü karşıya yükleme, JDBC sürücüsünü modül olarak ekleme ve modülü kaydetme. Daha fazla bilgi için JBoss EAP belgelerinde Veri Kaynağı Yönetimi'ne bakın. App Service durum bilgisi olmayan bir barındırma hizmetidir, bu nedenle veri kaynağı modülünü ekleme ve kaydetmeye yönelik yapılandırma komutlarının betiklenmesi ve kapsayıcı başlatılırken uygulanması gerekir.
Veri kaynaklarını ayarlamak için aşağıdaki adımları kullanın.
Veritabanınızın JDBC sürücüsünü alın.
JDBC sürücüsü için bir XML modülü tanım dosyası oluşturun. Gösterilen örnek PostgreSQL için bir modül tanımıdır. Kullandığınız JDBC sürücüsünün yolu ile
resource-root path
değerini değiştirdiğinizden emin olun.<?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="org.postgres"> <resources> <!-- ***** IMPORTANT: REPLACE THIS PLACEHOLDER *******--> <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
JBoss CLI komutlarınızı jboss-cli-commands.cli adlı bir dosyaya yerleştirin. JBoss komutlarının modülü eklemesi ve veri kaynağı olarak kaydetmesi gerekir. Örnekte PostgreSQL için JBoss CLI komutları gösterilmektedir.
Not
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.
module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
JBoss CLI komutlarını çağıran startup_script.sh adlı bir başlangıç betiği oluşturun. Örnek, jboss-cli-commands.cli dosyanızı nasıl çağıracaklarını gösterir. Daha sonra App Service'i örnek başlatıldığında bu betiği çalıştıracak şekilde yapılandıracaksınız.
$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cli
Seçtiğiniz bir FTP istemcisini kullanarak JDBC sürücünüzü, jboss-cli-commands.cli, startup_script.sh ve modül tanımını /site/deployments/tools/ adresine yükleyin.
Sitenizi, kapsayıcı başladığında startup_script.sh çalışacak şekilde yapılandırın. Azure portalında Yapılandırma > Genel Ayarları > Başlangıç Komutu'na gidin. Başlangıç komut alanını /home/site/deployments/tools/startup_script.sh olarak ayarlayın ve kaydet'i seçin.
Web uygulamasını yeniden başlatın ve bu da yapılandırma betiğini çalıştırmasına neden olur.
Uygulamanız için Java İşlem API'sini (JTA) veri kaynağı yapılandırmasını güncelleştirin. Uygulamanızın src/main/resources/META-INF/persistence.xml dosyasını açın ve öğesini bulun
<jta-data-source>
. İçeriklerini aşağıda gösterildiği gibi değiştirin:<jta-data-source>java:jboss/datasources/postgresDS</jta-data-source>
Uygulama oluşturma
Aşağıdaki Maven komutunu kullanarak uygulamayı derleyin.
mvn clean install -DskipTests
Uygulamayı dağıt
Uygulamanız bir Maven POM dosyasından derleniyorsa, Web Uygulamasını oluşturmak ve uygulamanızı dağıtmak için Maven için Webapp eklentisini kullanın. Daha fazla bilgi için bkz. Hızlı Başlangıç: Azure Uygulaması Hizmetinde Java uygulaması oluşturma.
JBoss EAP uygulamalarının dağıtımını otomatikleştirmek için Web App için Azure Pipelines görevini veya Azure WebApp'e dağıtmak için GitHub Action'ı kullanabilirsiniz.
Geçiş sonrası
Uygulamanızı Azure App Service'e geçirdiğinizden, beklediğiniz gibi çalıştığını doğrulamanız gerekir. Bunu yaptıktan sonra, uygulamanızı buluta daha yerel hale getirebilecek bazı önerilerimiz vardır.
Öneriler
Dosya depolama için /home dizinini kullanmayı tercih ettiyseniz, bunu Azure Depolama ile değiştirmeyi göz önünde bulundurun. Daha fazla bilgi için App Service'te bir kapsayıcıdan ağ paylaşımı olarak Azure Depolama'ya erişme konusunu inceleyin.
/home dizininde bağlantı dizesi, SSL anahtarları ve diğer gizli dizi bilgilerini içeren yapılandırmanız varsa, mümkün olduğunda uygulama ayarlarıyla Azure Key Vault ve/veya parametre ekleme kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. App Service ve Azure İşlevleri için Key Vault başvurularını kullanma ve Azure portalında bir App Service uygulamasını yapılandırma.
Kesintisiz ve güvenilir dağıtımlar için dağıtım yuvalarını kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Azure App Service’te hazırlık ortamları ayarlama.
DevOps stratejisini tasarlayın ve uygulayın. Güvenilirliği korurken geliştirme hızınızı da artırmak için Azure Pipelines ile dağıtımları ve testleri otomatikleştirmeyi düşünün. Daha fazla bilgi için bkz Java web uygulaması oluşturma ve dağıtma. Dağıtım yuvalarını kullandığınızda, yuva değişiminin ardından bir yuvaya dağıtımı otomatikleştirebilirsiniz. Daha fazla bilgi için Yuvaya dağıtma bölümüne ve Azure Web App (Linux) dağıtma sayfasına bakın.
İş sürekliliği ve olağanüstü durum kurtarma stratejisini tasarlayın ve uygulayın. Görev açısından kritik uygulamalar için çok bölgeli dağıtım mimarisi uygulamayı düşünebilirsiniz. Daha fazla bilgi için bkz . Yüksek oranda kullanılabilir çok bölgeli web uygulaması.