Aracılığıyla paylaş


JBoss EAP uygulamalarını Azure App Service’teki JBoss EAP’ye geçirme

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.

  1. Veritabanınızın JDBC sürücüsünü alın.

  2. 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>
    
  3. 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
    
  4. 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
    
  5. 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.

  6. 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.

  7. Web uygulamasını yeniden başlatın ve bu da yapılandırma betiğini çalıştırmasına neden olur.

  8. 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