ترحيل عمليات تحميل العمل باستخدام أدوات توزيع WebLogic

توزيع كل الموارد والتطبيقات في نطاق مزود في وقت واحد بدلاً من منفردة.

باستخدام WebLogic Deploy Tooling (WLDT)، ستقوم بتحديث ملف نموذج النطاق المصدر لاستهداف التطبيقات والموارد المتعددة بخوادم النطاق الجديد وتحديث اتصالات قاعدة البيانات لمطابقة قواعد البيانات المرحلة إلى Oracle Cloud Infrastructure.

قبل البدء، لاحظ ما يلي:

  • اسم النطاق الذي تم تكوينه لصورة Oracle WebLogic Server لـ Oracle Cloud Infrastructure هو البادئة التي أدخلتها أثناء التزويد باللاحقة _domain، على سبيل المثال test_domain.

  • تتبع أسماء الخوادم المدارة النمط <prefix>_server_<index> على سبيل المثال test_server_1 وtest_server_2 وtest_server_n حيث n هي عدد نقاط التوصيل التي تم توفيرها.

  • تتم تسمية خادم "المسئول" بالاسم <prefix>_adminserver، على سبيل المثال test__adminserver.

  • في حالة إعداد WebLogic Enterprise Edition، يتم تزويد مجموعة تسمى <prefix>_ cluster تشتمل على كل الخوادم المدارة.

  • ستحتاج إلى سلسلة الاتصال الخاصة بقاعدة البيانات التي قمت بتكوينها سابقًا.

  • إذا كانت ملفات التطبيق موجودة ضمن هيكل مجلدات ORACLE_HOME، فلن يتم انتقائها بواسطة WebLogic Deploy Tooling، ويجب نقلها يدويًا. أو بدلاً من ذلك، يمكنك حزم ملفات التطبيق في ملف مضغوط zip بهيكل المجلدات المشابه لـ wlsdeploy/applications/<app.ear> وتغيير SourcePath إلى نفس المسار بحيث يتم توزيع WebLogic Deploy Tooling في المجلد الافتراضي في الهدف.

  1. باعتباره مستخدم WebLogic المناسب (عادة oracle)، ومع تكوين JAVA_HOME بشكل صحيح، قم بتثبيت WebLogic Deploy Tooling (WLDT) في النطاق المصدر.
    # install weblogic-deploy-tooling
    # Check for the latest version at:
    # https://github.com/oracle/weblogic-deploy-tooling/releases/
    WLSDT_VERSION=1.7.0
    echo $JAVA_HOME
    # download and unzip the package
    wget -qO- https://github.com/oracle/weblogic-deploy-tooling/releases/download/weblogic-deploy-tooling-${WLSDT_VERSION}/weblogic-deploy.zip | $JAVA_HOME/bin/jar xv
    # make the scripts executable
    chmod +x weblogic-deploy/bin/*.sh
  2. اكتشاف النطاق المصدر.

    -domain_type يتم تعيين الإعداد الافتراضي على WLS، بحيث يمكن حذفه لنطاق WLS. عند - domain_type JRF ، يقوم أمر discovery بترشيح كل مكونات JRF ، التي تتم إعادة تزويدها بواسطة صورة السوق في حالة نطاق JRF. إن استخدام JRF هو قيمة افتراضية جيدة لاكتشاف كل النطاقات.

    يستخدم هذا المثال source لملفات .yaml و.zip و.properties. يمكنك استخدام أي اسم ملف صالح.

    # path to the parent of the wlserver folder (for example /u01/app/oracle/middleware/)
    MW_HOME=
    # path to the domain folder (i.e. <domain root>/<domain_name>)
    DOMAIN_HOME=
    
    weblogic-deploy/bin/discoverDomain.sh \
        -oracle_home $MW_HOME \
        -domain_home $DOMAIN_HOME \
        -archive_file source.zip \
        -model_file source.yaml \
        -variable_file source.properties \
        -domain_type JRF
    
    # even if the domain is not JRF, using JRF domain type will only filter out domain libraries. If they don’t exist, this will not affect the output.
  3. قم بنقل الملفات إلى خادم "المسئول" في البيئة الهدف.
    SOURCE_IP=<IP of the source WLS server>
    ADMIN_SERVER_IP=<IP of the cloud Administrator server>
    scp <source_user>@${SOURCE_IP}:~/source.* opc@${ADMIN_SERVER_IP}:~/
    
    # change ownership of the files from opc to oracle 
    # and move the file to the oracle user home
    ssh opc@${ADMIN_SERVER_IP}
    sudo chown oracle:oracle source.*
    sudo mv source.* /home/oracle/
    # switch to the oracle user
    sudo su – oracle
  4. تثبيت WebLogic Deploy Tooling في خادم مسئول WLS في Oracle Cloud Infrastructure.
    # As the oracle user, install weblogic-deploy-tooling
    WLSDT_VERSION=1.7.0
    wget -qO- https://github.com/oracle/weblogic-deploy-tooling/releases/download/weblogic-deploy-tooling-${WLSDT_VERSION}/weblogic-deploy.zip | $JAVA_HOME/bin/jar xv
    
    # make the scripts executable
    chmod +x weblogic-deploy/bin/*.sh
  5. قم بتحرير ملف نموذج النطاق المصدر لمطابقة منظومة النطاق الهدف.
    • source.yaml: ملف النموذج الذي يصف النطاق والمنظمات (الخوادم والمجموعات وما إلى ذلك) والموارد وعمليات توزيع التطبيق.

    • source.zip: يشتمل على ملفات التطبيق.

    • source.properties: يحتوي على متغيرات التعويض لبيانات الاعتماد التي لا يمكن إرسالها.

    ملاحظة:

    عند تحرير ملف yaml، تأكد من استخدام المسافات، وإلا فلن تفشل علامات التبويب أو التحليل. لاحظ أيضًا أنه في YAML، تمثل المسافة البادئة تداخل، لذا عند إزالة مفتاح مستوى علوي، يجب إزالة كل شيء متداخل تحت المفتاح لأعلى إلى المفتاح التالي في نفس المستوى.
    1. قم بتحرير ملف .yaml للاحتفاظ بموارد الأقسام وappDeployments.
      • أزل القسم بأكمله domainInfo.

      • أزل القسم بأكمله topology.

      • WebLogic Server Enterprise Edition: بالنسبة لكل تطبيق متداخل ضمن resources، ثم JDBCSystemResource ثم appDeployment، قم بتحرير المفتاح Target لمطابقة اسم المجموعة في Oracle Cloud Infrastructure حيث يكون اسم المجموعة <domain_prefix>_cluster، على سبيل المثال ee_cluster.

      • WebLogic Server Standard Edition: بالنسبة لكل تطبيق متداخل ضمن resources، ثم JDBCSystemResource ثم appDeployment، قم بتحرير المفتاح Target لمطابقة قائمة أسماء الخوادم المدارة في Oracle Cloud Infrastructure والتي يجب على التطبيق استهدافها باستخدام النمط <domain_prefix>_server_<id>. افصل بين إدخالات القائمة بفاصلة مع تضمين القائمة بعلامات اقتباس مفردة أو مزدوجة. على سبيل المثال 'se_server_0,se_server_1,se_server_3'

    2. تحرير عناوين Url الخاصة بمصادر البيانات ضمن كل مفتاح JDBCDriverParams.
      يجب أن يتبع عنوان URL النمط:
      'jdbc:oracle:thin:@//<hostname>:<port>/<your_pdb_name>.<subdomain_name>'
      حيث يكون hostname وport وsubdomain_name من سلسلة اتصال قاعدة البيانات، وyour_pdb_name هو اسم قاعدة البيانات التي تستضيف قاعدة البيانات (وليس الاسم الأولي لقاعدة بيانات CDB).
      • سلسلة اتصال ذات نقطة توصيل مفردة: <hostname>:<port>/<cdb_root_name>.<db_subnet_domain_name>
      • سلسلة اتصال متعددة نقاط توصيل: <hostname>-scan:<port>/<cdb_root_name>.<db_subnet_domain_name>

      استخدم أي نموذج إذا كانت قاعدة البيانات تتكون من نقطة توصيل واحدة فقط، إلا أنه نوصي بتضمين مكون -scan لضمان الاكتشاف المناسب ودعم القياس في المستقبل.

    3. إضافة مفتاح StagingMode في حالة عدم وجوده

      بالنسبة لكل تطبيق ضمن appDeployments، تأكد من تعيين مفتاح StagingMode إلى stage أو قم بإضافته إذا لم يكن موجودًا. يقوم هذا الإعداد بتوزيع الملفات تلقائيًا على الخوادم المدارة أو الخوادم المدارة المستهدفة الأخرى في المجموعة. دون هذا الإعداد، يجب توزيع الملف يدويًا على كل خادم.

    4. قم بتحرير ملف source.properties وقم بتحديث كلمة سر أو كلمات سر اتصال JDBC لقاعدة البيانات أو قاعدة البيانات التي قمت بترحيلها.
  6. تشغيل اسكربت WebLogic Deploy Tooling updateDomain لتحديث النطاق.
    # make sure the needed variables are set:
    echo $DOMAIN_HOME
    echo $MW_HOME
    
    # run WebLogic Deploy Tooling updateDomain script in online mode
    weblogic-deploy/bin/updateDomain.sh \
    -oracle_home $MW_HOME \
    -domain_home $DOMAIN_HOME \
    -model_file source.yaml \
    -variable_file source.properties \
    -archive_file source.zip \
    -admin_url t3://$(hostname -i):9071
    
    # domain deployed before 05/19/2020 may need to use port 7001

    ملاحظات حول هذا المثال:

    • -domain_type غير مستخدم هنا حيث إنه عملية تحديث فقط. يؤدي استخدام الخيار -domain_type JRF (حتى في نطاق jrmf) إلى تحديث المشكلات بـ WLDT للتحديثات المباشرة.

    • يتطلب -admin_url بروتوكول t 3 مع عنوان IP الخاص المحلي لخادم المسئول كما تم استخراجه بواسطة أمر hostname -i. HTTP أو HTTPS من خلال IP العام لا يعمل.

    • يضمن تقديم -admin_url في هذا الأمر تحديث النطاق عبر الإنترنت. لا يمكن تحديث كل النطاقات أثناء الاتصال، ولكن ما لم يتم تعديل المنظومة (وهي ليست الحالة هنا)، يجب أن تعمل لأغلب النطاقات.

    • يتيح لك تحديث حالة الاتصال توزيع التطبيقات والموارد دون إعادة بدء الخوادم. إذا قمت بتحديث حالة عدم الاتصال، فقم بإزالة خيار -admin_url، ثم قم بإيقاف خادم WebLogic وإعادة تشغيله باستخدام وحدات اسكربت stopWebLogic.sh وstartWebLogic.sh. استخدم startWeblogic.sh &! لإرسال الأمر إلى الخلفية واستبعاد هذا الأمر، بحيث يصبح موضع الخروج من النهاية الطرفية.

    • إذا قمت بإجراء التحديث دون اتصال، فلا بد من التوقف وإعادة تشغيل الخادم مرتين حتى تسري علامة StagingMode=stage. تؤدي إعادة البدء الأولى إلى تحديث التكوين وإمكانية إعادة التشغيل الثانية إلى تمكين توزيع StagingMode.