Migration of Non-containerized Standalone Projects to Containerized Clusters

  • Last update: 2024-08-12
  • Overview

    Version

    Project Version

    Functional Change

    FineReport11.0

    FineBI6.0

    /

    Application Scenario

    Containerized projects require lower upgrade and maintenance costs compared with common standalone projects.

    Compared with standalone projects, high-availability clusters have better performance with easier management and stronger security. Together with the ability to flexibly scale, clustered projects are suitable for enterprise-level report generation and management.

    The solution described in this document helps you migrate an existing non-containerized standalone project to a containerized cluster project.

    iconNote:

    This document takes the FineBI project as an example to illustrate the migration steps. The migration steps for the FineReport project are basically the same, with only two differences:

    1. The files to be copied for the FineReport and FineBI projects are not the same. Pay attention to the table content in this document.

    2. When you start/stop the container with FineOps, close the fr component for a FineReport project, and close the bi6 component for a FineBI project.

    New Containerized Project Preparation

    FineOps Deployment

    For details, see FineOps Deployment.

    New Project Deployment

    For details, see New Project Deployment.

    iconNote:
    1. During the migration, you need to copy some essential files and resources of the old project and paste them into the new project, so you must ensure that the available disk space for the new project is large enough.

    a. Check the size of the webroot folder of the original non-containerized project in the %Tomcat_home%\webapps path. Assume it is x GB.

    b. Expand the remaining disk space of the node where the new project's file server is located appropriately based on the size of the original project when preparing the file server for the new containerized cluster project.

    Get the larger value between 2x and 500. The result is the recommended minimum remaining disk space (unit: GB).

    2: When deploying the new project, you will also deploy some essential components. You are advised to note down the information of these components to facilitate future maintenance.

    Note down the information of mysql, redis, minio, and elasticsearch components configured under Deploy New Project > Project Setting > Deployment Configuration. Since the component password is randomly generated, you should change it to facilitate future use.

    iconNote:

    3. During the migration, you need to copy some files of the old project and paste them into the new project, so you should note down the location of the mounting directory where the new project files are stored.

    Note down the mounting path of each project node in the cluster under Deploy New Project > Node Configuration.

    New Project Version Confirmation

    1. Log in to FineOps as the admin, and click Project Management to view the access address of the new project.

    2. Log in to the new containerized project as the admin, and choose System Management > Registration Management > Version Information to confirm the minor version of the project (accurate to the JAR package date).

    New Project Closure

    1.Log in to FineOps as the admin, and click Component Management under the  button of the new containerized project on the Project Management page.

    2. Find the bi 6/fr component, and click the Stop button to close the new containerized project.

    Backing up the Config Folder of the New Project

    1. Use a terminal device to access the server where each project node of the new containerized cluster is located, and go to/fanruanxxx/bi in the mounting path set under Deploy New Project > Node Setting.

    2. The YAML file stored in the config folder contains the commands used for project deployment. You should back them up offsite.

    Original Non-containerized Project Preparation

    Backing up the Original Project

    For details about how to back up the project, see section "Backup Method" in Project Backup and Restoration.

    Upgrading the Original Project

    Obtaining the JAR Package

    Paid users can contact the technical support personnel to obtain the project JAR package of the same minor version (accurate to the JAR package date) as that of the new project mentioned in the section "New Project Version Confirmation."

    To contact our technical support personnel, you can send an email to international@fanruan.com or click at https://help.fanruan.com/fineops-en/.

    Upgrading the Original Non-containerized Project

    For details about upgrading the project to a specified version, see Designer Upgrade Guide.

    Confirming External Database Configuration of the Original Project

    Log in to the original non-containerized project as the admin, choose System Management > System Setting > General, and check whether the external database has been configured.

    Situation

    Description

    Configured

    It indicates that the project has been configured with an external database. You can click Configured to view and note down the location of the external database.

    You have to ensure that the server where the new containerized project is located is connected to the server where the external database is located.

    To Be Configured

    It indicates that the project has not been configured with an external database. You need to configure an external database for this non-containerized project.

    iconNote:
    You can use the mysql component in the section "New Project Deployment."

    You have to ensure that the server where the new containerized project is located is connected to the server where the external database is located. Select Migrate Data to Database to Be Enabled during the configuration.

    Confirming Plugin Installation of the Original Project

    Log in to the original non-containerized project as the admin, and choose System Management > Plugin Management.

    1. You must ensure that the following plugins have been installed and upgraded to the latest versions: Minio Resource Repository, System O&M, and Circuit Breaker of Resource Schedule.

    2. You are advised to upgrade other installed plugins to the latest version.

    Connecting Cluster Components

    Log in to the original non-containerized project as the admin, and choose System Management > Intelligent O&M > Cluster Configuration.

    1. Enable Status Server. Select Redis Single Machine, and enter the redis component information noted down in the section "New Project Deployment."

    2. Enable File Server Sharing. Select MinIO, and enter the minio component information noted down in the section "New Project Deployment."

    3. Disable Cache Mode and set Cluster Communication Protocol to TCP.

    4. Enable Cluster.

    For details about restarting the original non-containerized project, see Closing or Restarting the FineBI Project.

    Check the content of Node Management under System Management > Intelligent O&M > Cluster Configuration of the original non-containerized project. If the node of this project appears, you have deployed the single-node cluster successfully.

    Closing the Original Non-containerized Project

    For details about closing the original non-containerized project, see Closing or Restarting the FineBI Project.

    Project Migration

    Copying and Pasting Files

    1. You need to check in advance whether the original non-containerized project is configured with a mounting directory and a shared file server, and ensure that the correct files are copied.

    2. The mounting location of the new containerized project files is the mounting path set in the section "New Project Deployment."

    3. Copy the following files of the original non-containerized project and paste them into the new containerized project.

    iconNote:

     1. You cannot use the docker cp command to copy and paste the entire webroot folder into the container, as it may cause functional issues.

    2. You cannot directly copy and paste the entire webroot folder into the mounting directory of the containerized project, as some files cannot be overwritten.

    3. Copy and paste the final file of the project instead of the file backed up in the section "Backing up the Original Project."

    4. Copy and paste the files individually to the corresponding locations of each project node and file server of the new containerized project.

    5. MinIO utilizes the S3 protocol, so you cannot directly use the files uploaded to the server. For details, see Introduction to MinIO File Server.

    • Files Needed to Be Copied for FineBI

    Original Non-containerized Project Directory

    New Containerized Project Mounting Directory

    Description

    %Tomcat_HOME%/logs

    %BI_HOME%/ fanruanxxx/bi6/tomcat_logs of each project node

    Function: It is the location of Tomcat general logs.

    Necessity in copying and pasting: optional. Tomcat historical access log may not need to be copied.

    %Tomcat_HOME%/webapps/webroot/bi-data

    %BI_HOME%/ fanruanxxx/bi6/bi-data of each project node

    Function: It stores extracted data of FineBI.

    Necessity in copying and pasting: optional.

    If you don't copy and paste it, you'll need to perform a global update and re-extract the data after starting the new project.

    If you copy and paste it, as the folder contains many files, the process will take a long time. You need to wait patiently.

    %Tomcat_HOME%/webapps/webroot/logs

    %BI_HOME%/ fanruanxxx/bi6/logs of each project node

    Function: It stores swift logs.

    Necessity in copying and pasting: optional.

    If you do not copy and paste it, logdb (the historical operation logs of the project)l will be lost, and there will be no data under Platform Management > Platform Log.

    You do not need to copy and paste it if historical usage information is not required.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/classes

    %BI_HOME%/ fanruanxxx/bi6/classes of each project node

    Function: It stores default and custom class files called by the project.

    Necessity in copying and pasting: necessary.

    It may store custom class files. If you do not copy and paste it, the normal use of the project will be affecte.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/config

    %BI_HOME%/ fanruanxxx/bi6/config of each project node

    Function: It stores configuration-database-related files.

    Necessity in copying and pasting: necessary.

    It stores the information of the configuration database (finedb) called by the platform. If you do not copy and paste it, the normal use of the project will be affected.

    You are advised to only apply updates by overwriting instead of deleting everything before copying and pasting to avoid losing essential files.

    Locate the following two directories:

    %Tomcat_HOME%/webapps/webroot/WEB-INF/lib

    %Tomcat_HOME%/webapps/webroot/WEB-INF/customLib

    iconNote:
    The following are built-in JAR packages for the project and do not need to be copied. Any other JAR packages defined by yourself need to be copied.
    Click to show more

    fdl-bi-extension-4.0.jar

    fdl-boot-4.0.jar

    fdl-core-4.0.jar

    fdl-cron-4.0.jar

    fdl-datasource-4.0.jar

    fdl-third-4.0.jar

    fine-accumulator-11.0.jar

    fine-activator-11.0.jar

    fine-autuator-formula-11.0.jar

    fine-bi-adapter-6.0.jar

    fine-bi-datamining-6.0.jar

    fine-bi-datamining-third-6.0.jar

    fine-bi-engine-spider-6.0.jar

    fine-bi-engine-third-6.0.jar

    fine-bi-foundation-6.0.jar

    fine-bi-middle-6.0.jar

    fine-bi-query-6.0.jar

    fine-bi-query-excel-6.0.jar

    fine-bi-query-third-6.0.jar

    fine-bi-scheduler-6.0.jar

    fine-bi-spider-cluster-6.0.jar

    fine-cbb-11.0.jar

    fine-core-11.0.jar

    fine-datasource-11.0.jar

    fine-decision-11.0.jar

    fine-decision-bi-11.0.jar

    fine-decision-report-11.0.jar

    fine-report-engine-11.0.jar

    fine-schedule-11.0.jar

    fine-schedule-bi-11.0.jar

    fine-schedule-report-11.0.jar

    fine-swift-log-adaptor-11.0.jar

    fine-third-11.0.jar

    fine-webui-11.0.jar

    h2-2.1.214.jar

    jtds-1.3.1.jar

    mssql-jdbc-9.4.1.jre8.jar

    mysql-connector-java-5.1.49-bin.jar

    ojdbc8.jar

    orai18n.jar

    sqlite-jdbc-3.35.4.jar

    jarfile-checksum.txt

    readme.txt

    version-bi.txt

    %BI_HOME%/ fanruanxxx/bi6/customlib of each project node

    Function: It stores JAR packages customized by projects or externally imported JAR packages.

    Necessity in copying and pasting: necessary. Otherwise, template access will be affected.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/plugins

    %BI_HOME%/ fanruanxxx/bi6/pluginsof each project node

    Function: It stores plugin-related files.

    Necessity in copying and pasting: necessary. Otherwise, plugin-related functions will be affected.

    %Tomcat_HOME%/webapps/webroot/backup

    Minio file storage path/backup

    Function: It stores historical backup files of the project.

    Necessity in copying and pasting: optional. You do not need to copy and paste backups that can be stored in the original directory.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/temp_attach

    Minio file storage path/assets/temp_attach

    Function: It stores the information related to FineBI data table.

    Necessity in copying and pasting: necessary.

    It stores the project's original Excel file information. If you do not copy and paste it, the original Excel files will be lost.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/vcs

    Minio file storage path/assets/vcs

    Function: It stores backup files of FineReport templates.

    Necessity in copying and pasting: optional.

    If the project does not use the FineReport template, or if you do not need to roll back historically developed templates, you do not need to copy and paste it.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/Other files

    Minio file storage path/assets/Other files

    Function: It stores general files that share the persistent directory.

    Necessity in copying and pasting: necessary.

    It stores the files required for the normal operation of the project. If you do not copy and paste it, the normal use of the project will be affected.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/reportlets

    Minio file storage path/reportlets

    Function: It stores FineReport templates.

    Necessity in copying and pasting: optional.

    If the project does not use the FineReport template, you do not need to copy and paste it.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/schedule

    Minio file storage path/schedule

    Function: It stores files generated by Task Schedule.

    Necessity in copying and pasting: optional.

    If you do not copy and paste it, you cannot access the result report mounted to the decision-making platform by Task Schedule.

    • Files Needed to Be Copied for FineReport

    Original Non-containerized Project Directory

    New Containerized Project Mounting Directory

    Description

    %Tomcat_HOME%/logs

    %FR_HOME%/ fanruanxxx/fr/tomcat_logsof each project node

    Function: It is the location of Tomcat general logs.

    Necessity in copying and pasting: optional. Tomcat historical access log may not need to be copied.

    %Tomcat_HOME%/webapps/webroot/logs

    %FR_HOME%/ fanruanxxx/fr/logs of each project node

    Function: It stores swift logs.

    Necessity in copying and pasting: optional.

    If you do not copy and paste it, logdb (the historical operation logs of the project)l will be lost, and there will be no data under Platform Management > Platform Log.

    You do not need to copy and paste it if historical usage information is not required.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/classes

    %FR_HOME%/ fanruanxxx/fr/classes of each project node

    Function: It stores default and custom class files called by the project.

    Necessity in copying and pasting: necessary.

    It may store custom class files. If you do not copy and paste it, the normal use of the project will be affected.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/config

    %FR_HOME%/ fanruanxxx/fr/config of each project node

    Function: It stores configuration-database-related files.

    Necessity in copying and pasting: necessary.

    It stores the information of the configuration database (finedb) called by the platform. If you do not copy and paste it, the normal use of the project will be affected.

    You are advised to only apply updates by overwriting instead of deleting everything before copying and pasting to avoid losing essential files.

    Locate the following two directories:

    %Tomcat_HOME%/webapps/webroot/WEB-INF/lib

    %Tomcat_HOME%/webapps/webroot/WEB-INF/customLib

    iconNote:
    The following are built-in JAR packages for the project and do not need to be copied. Any other JAR packages defined by yourself need to be copied.

    Click to show more

    fine-accumulator-11.0.jar

    fine-activator-11.0.jar

    fine-cbb-11.0.jar

    fine-core-11.0.jar

    fine-datasource-11.0.jar

    fine-decision-11.0.jar

    fine-decision-report-11.0.jar

    fine-report-engine-11.0.jar

    fine-schedule-11.0.jar

    fine-schedule-report-11.0.jar

    fine-service-management-2.0.7.jar

    fine-swift-log-adaptor-11.0.jar

    fine-third-11.0.jar

    fine-webui-11.0.jar

    ifxjdbc_informix.jar

    jtds-1.3.1.jar

    mysql-connector-java-5.1.49-bin.jar

    ojdbc8.jar

    orai18n.jar

    sqlite-jdbc-3.39.4.0.jar

    sqljdbc.jar

    sybase.jar

    jarfile-checksum.txt

    readme.txt

    %FR_HOME%/ fanruanxxx/fr/customlib of each project node

    Function: It stores JAR packages customized by projects or externally imported JAR packages.

    Necessity in copying and pasting: necessary. Otherwise, template access will be affected.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/plugins

    %FR_HOME%/ fanruanxxx/fr/plugins of each project node

    Function: It stores plugin-related files.

    Necessity in copying and pasting: necessary. Otherwise, plugin-related functions will be affected.

    %Tomcat_HOME%/webapps/webroot/backup

    Minio file storage path/backup

    Function: It stores historical backup files of the project.

    Necessity in copying and pasting: optional. You do not need to copy and paste backups that can be stored in the original directory.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/temp_attach

    Minio file storage path/assets/temp_attach

    Function: It stores read and write caches.

    Necessity in copying and pasting: necessary.

    It stores the project's read and write (image) caches. If you do not copy and paste it, the preview of background images set in the templates may appear empty.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/vcs

    Minio file storage path/assets/vcs

    Function: It stores backup files of FineReport templates.

    Necessity in copying and pasting: optional.

    If the project does not require a rollback of previously developed FineReport templates, you do not need to copy and paste it.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/assets/Other files

    Minio file storage path/assets/Other files

    Function: It stores general files that share the persistent directory.

    Necessity in copying and pasting: necessary.

    It stores the files required for the normal operation of the project. If you do not copy and paste it, the normal use of the project will be affected.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/reportlets

    Minio file storage path/reportlets

    Function: It stores FineReport templates.

    Necessity in copying and pasting: necessary. Otherwise, all the templates in the project will be lost.

    %Tomcat_HOME%/webapps/webroot/WEB-INF/schedule

    Minio file storage path/schedule

    Function: It stores files generated by Task Schedule.

    Necessity in copying and pasting: optional.

    If you do not copy and paste it, you cannot access the result report mounted to the decision-making platform by Task Schedule.

    Starting a Single Node

    Log in to FineOps, click Project Management, and click Component Management under the  button after the new containerized project.

    Find the bi 6 component and click the Start button on one of the nodes to start the project node. See the following figure:

    Migrating External Database of the New Project


    1. Creating an Empty Database

    If the original project uses a non-MySQL 8 type external database:

    The new project's external database should still be deployed in a new database under the same address. The MySQL database mentioned in section "New Project Deployment" cannot be used.

    Create a new database name at the address of the original project's external database to serve as the empty database for migration.

    If the original project uses a MySQL 8 type external database:

    You are advised to deploy the new project's external database in the MySQL database mentioned in section "New Project Deployment."

    Create a new database name in the mysql 8 component deployed in the containerized environment in section "New Project Deployment" to serve as the empty database for migration.

    2. Migrating the Database

    Log in to the newly started containerized project as the admin, and choose System Management > System Setting > General > External Database.

    Configure the external database to the empty database created in the previous step.

    Select Migrate Data to Database to Be Enabled.

    Click Enable New Database.

    When the prompt "Successfully switched to the target database." appears, you have successfully switched the external database of that node.

    Modifying Data Extraction Storage Path

    1. Modify the storage path

    Find the mounting directory %BI_HOME%/fanruanxxx/bi6/config in the node server of the newly started containerized project, and modify or create the spider.cluster.properties file.

    Add the following content to the file: spider_local_base_path=/usr/local/tomcat/webapps/webroot/bi-data/spider/db

    2. Delete down nodes

    Log in to the newly started containerized project as the admin, and choose System Management > System Setting > Cluster Extraction. You can see the status of the corresponding node has become DOWN, and then delete the node.

    3. Restart to generate configurations

    Log in to FineOps, click Project Management, and click Component Management under the button after the new containerized project.

    Find the bi 6 component and click the Restart button on the started node to restart the project node.

    4. Extract data

    If you did not copy and paste the bi-data file in section "Copying Files", a global update is needed after starting the project to re-extract data to that path.

    If you copied the bi-data file in section "Copying Files", the project will directly access that path upon startup.

    Closing a Single Node

    Log in to FineOps, click Project Management, and click Component Management under the button after the new containerized project.

    Find the bi 6 component and click the Stop button on the started node to stop the project node.

    Synchronizing to Other Nodes

    Copy and paste the config folder in the %BI_HOME%/fanruanxxx/bi6 path of this project node to the same location of other project nodes.

    Starting All Project Nodes

    Log in to FineOps, click Project Management, and click Component Management under the button after the new containerized project.

    Find the bi 6 component and click the Start button after it to start all project nodes. See the following figure:


    Verifying If Migration is Successful

    Log in to all project nodes sequentially:

    1. If all cluster nodes appear in System Management > Intelligent O&M > Cluster Configuration > Node Management, it means the multi-node cluster has been successfully configured.

    2. If the project configuration on each node is identical, it means the external database has been successfully configured.

    Starting the Original Non-containerized Project

    1. Overwrite the original non-containerized project's webroot files with the webroot project files backed up in section "Backing up the Original Project."

    2. For details about starting the original non-containerized project, see Closing or Restarting the FineBI Project.

    Migration Authorization

    If the original project has been registered, typically, you need to migrate the authorization to the new project. For containerized projects, you are advised to use Container Private Cloud Authentication.

    Destroying the Authorization of the Original Non-containerized Project

    1. For details about destroying the authorization of the original non-containerized project, see Authorization Migration Plugin and request a plugin from the business personnel.

    2. Find the destruction certificate in %BI_HOME%/webroot/WEB-INF/resources of the original non-containerized project.

    Obtaining Authorization for the New Containerized Project

    For details about authorizing the new containerized project, see Container Private Cloud Authentication and request registration image file fanruan_license_server.tar from the business personnel.

    You should attach the destruction certificate obtained in the previous step to your email, and specify that this is for "migration of a non-containerized project to a containerized project."

    Attachment List


    Theme: Existing Project Manipulation
    • Helpful
    • Not helpful
    • Only read