Jump to content
  • This documentation is an older version of JasperReports IO 200 At Scale User Guide. View the latest documentation.

    Now that everything is configured, the cluster has been created with a node group, and the images have been pushed to the ECR repository, we can finally start the cluster. This will instantiate nodes from the corresponding images according to the number of machines in the virtual private cloud.

    warning-icon-ns.png.a8b8e8edb345c4f7368ddbf5981caa87.png

    Before proceeding, make sure you have fully configured your Helm chart (values.yaml) and other cluster configuration files, as described in Configuring a Cluster in Kubernetes.

    1. If you have not already done so, install the helm command-line app to run helm commands. You can download binaries or use package managers as described in https://helm.sh/docs/intro/install/.
    2. Go to the home directory of the JasperReports IO At-Scale distribution, by default jrio-at-scale-2.0.0/ where the k8s folder is located, and run the following command:

    Where JRIOcluster is the name of your AWS EKS cluster.

    3. Verify that the cluster was deployed with the following command:
    4. Then verify that all the nodes have started successfully:

    After the cluster has been deployed, the only service with an external IP hostname is the jrio-rest service of type LoadBalancer. On AWS it takes some time, you may need to wait a few minutes before the hostname appears, for example:

    a073e3faaa4b341c4ac637f6529bc45a-1698884248.us-east-1.elb.amazonaws.com on port 8080

    5. Finally, the load balancer security group has to be configured to allow incoming traffic from the JasperReports Server instance or from any other machine. Note that this will work properly only when a single AWS Avalability Zone is configured; for multi-AZ another load balancer type should be used in the AWS EKS config. To enable incoming traffic:
    a. In your AWS console, go to EC2 > Load Balancers and find your load balancer. It will have the same name as the exposed kubernetes service.
    b. Select the load balancer, and locate the source security group in its description. Write down the ID of this group.
    c. In the AWS console again, go to Security Groups, and find the security group with that ID. It should also have k8s-elb in its name.
    d. Edit the the Inbound rules for that security group, and open the port (8080 in this example) for your server insance or any other machine.

    Deploying JasperReports Server

    This section describes how to connect a JasperReports Server instance with JasperReports IO At-Scale so that the server uses the JRIO At-Scale cluster as a scalable reporting engine. Because JRIO creates its own database connections using JDBC, this works only for reports that have a JDBC data source, not JNDI or other data sources.

    1. If you have a Private setup for AWS EKS, then your JasperReports Server has to be placed into the same VPC as AWS EKS. Jaspersoft also recommends doing so in public cases too. Assuming your VPC was created by cloud formation scrips as described in Creating a Virtual Private Cloud, create a new EC2 instance in AWS EKS VPC for your JasperReports Server. Be sure to use a static IP address assigned to the JasperReports Server instance because that address must be specified in the module configuration before creating Docker images. For JasperReports Server in a clustered setup, configure a static IP address for the load balancer.
    2. Make sure your JRIO At-Scale cluster does not include the jrio-client module and is configured to use the JasperReports Server instance, as described in Connecting to a JasperReports Server Repository.
    3. After the server has been deployed, edit the following file:
    File /tomcat9/webapps/js.config.properties
    Property jrio.url
    Example jrio.url=http://192.168.189.2:30030/jrio
    4. If your JRIO At-Scale cluster handles high throughput, the server's event logging of every repository access may slow down your pods and become a bottleneck. In this case, disable event logging as follows:
    File jasperserver-pro/WEB-INF/applicationContext-events-logging.xml
    Bean ID loggingContextProvider
    Property <entry key="com.jaspersoft.jasperserver.api.logging.access.domain.AccessEvent"
    value="false"/>
    5. For JasperReports Server in a clustered setup, repeat this procedure for each instance.

    Deploying Your Database

    JasperReports IO At-Scale creates its own connections to the database containing your reporting data. Even when using the JasperReports Server repository, JRIO At-Scale accesses only the metadata for JDBC data sources in order to create its own connections. This JDBC datasource must be accessible from inside the JRIO AtScale cluster and JRS instance.

    Jaspersoft recommends putting the database into the same VPC as the JRIO At-Scale cluster, whether it is a database deployed on-premise or in the cloud, such as Amazon Relational Database Service (RDS). In the case of RDS, you should update the RDS database security group as required, so that JRIO At-Scale and JasperReports Server will be able to run queries against the database.


    User Feedback

    Recommended Comments

    There are no comments to display.



    Guest
    This is now closed for further comments

×
×
  • Create New...