How to run Bonita BPM on armv7l architecture provided by Scaleway

jeremy.jacquier-roux's picture
jeremy.jacquier-roux
Blog Categories: 

ARM architecture

Did you see that on 2 April, Online Labs launched their commercial offer under the Scaleway brand?

We noticed. This is a French IaaS provider which offers an ARM-based cloud.

They don't have a lot of options right now, but the pricing is interesting:

Compute C1

9,99 € /month

4 Dedicated ARM Cores

2GB Memory

50GB SSD Disk

1 Reserved public IPv4

200Mbit/s Unmetered bandwidth

If you are interested in seeing what this hardware is capable of, there is a benchmark available on ServerBear.

On my side, I've performed a quick bench running Bonita BPM Community 6.5.1 and I've been able to launch 3000 instances of the same process (20 automatic tasks, 1 connector per task, 15 variables updated per task) in only 1h 1m 36s!

Notice that you will get predictable performances, and you won't be annoyed by "noisy neighbors" because they provide BareMetal servers.

To perform this same installation, use the last version of the Puppet module which includes armv7l architecture support. This Puppet module was explained in this post.

To avoid bugs and performance issues, we followed the recommendation and used Oracle 8 JVM for this architecture. The Puppet module will install it automatically.

Installation

Create new server

Choose a name and select the Ubuntu Trusty (14.04 LTS) image. Create your server.

  • Connect to your instance using SSH and retrieve the module from GitHub:
wget https://github.com/Bonitasoft-Community/puppet-bonita-bpm/archive/v1.1.0.tar.gz
tar -xvzf v1.1.0.tar.gz
mkdir -p puppet/modules
mv puppet-bonita-bpm-1.1.0/ puppet/modules/bonita_bpm
  • Create the archive which contains bonita home, the libraries and the war file and place it inside the Puppet module:
apt-get update && apt-get install unzip
wget http://download.forge.ow2.org/bonita/BonitaBPMCommunity-6.5.1-Tomcat-7.0.55.zip
unzip BonitaBPMCommunity-6.5.1-Tomcat-7.0.55.zip
cd BonitaBPMCommunity-6.5.1-Tomcat-7.0.55
tar -czf ../puppet/modules/bonita_bpm/files/archives/BonitaBPMCommunity-6.5.1.tgz bonita/ lib/bonita/ webapps/bonita.war
  • Create the Bonita database and its corresponding user. The following lines show how to install PostgreSQL and then launch the psql commands to create the user, the database, and the privileges to access this database:
apt-get install postgresql
sudo -u postgres psql
CREATE USER bonitauser WITH PASSWORD 'bonitapass';
CREATE DATABASE bonitadb;
GRANT ALL PRIVILEGES ON DATABASE "bonitadb" to bonitauser;
\q
  • Create the init.pp file with the following lines:
Exec { path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' }
  # Bonita BPM
 # mandatory parameters
 $bonita_bpm_version                          = '6.5.1'
  $bonita_bpm_edition                          = 'community'
  $bonita_bpm_archive                          = 'BonitaBPMCommunity-6.5.1.tgz'
  # database parameters used for bonitaDS and bonitaSequenceManagerDS
 $bonita_bpm_db_vendor                        = 'postgres'
  $bonita_bpm_db_name                          = 'bonitadb'
  $bonita_bpm_db_user                          = 'bonitauser'
  $bonita_bpm_db_pass                          = 'bonitapass'
  $bonita_bpm_db_host                          = '127.0.0.1'
  $bonita_bpm_db_port                          = '5432'
  $bonita_bpm_bonitaDS_minIdle                 = '1'
  $bonita_bpm_bonitaDS_maxActive               = '50'
  $bonita_bpm_bonitaSequenceManagerDS_minIdle   = '5'
  $bonita_bpm_bonitaSequenceManagerDS_maxActive = '17'
  # platform credentials
 $bonita_bpm_platform_admin_user               = 'platformadmin'
  $bonita_bpm_platform_admin_pass               = 'platformsecret'
  # jvm and tomcat tuning
 $bonita_bpm_java_opts                         = '-Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Dfile.encoding=UTF-8 -Xshare:auto -Xms512m -Xmx512m -XX:MaxPermSize=128m -XX:+HeapDumpOnOutOfMemoryError'
  $bonita_bpm_maxThreads                        = '20'
  # bonita workers configuration
 $bonita_bpm_corePoolSize                      = '25'
  $bonita_bpm_maximumPoolSize                   = '25'
  # quartz configuration
 $bonita_bpm_quartz_threadCount                = '5'
  # tenants configuration
 $bonita_bpm_tenants = [
              { id        => '1',
                user      => 'tech_user',
                pass      => 'tenantsecret'
              }
  ]

  $bonita_bpm_logs_user                             = 'logsuser'
  $bonita_bpm_logs_pass                             = 'logssecret'

  # deploy Bonita BPM
 include bonita_bpm
  # deploy ROOT application
 include bonita_bpm::root_application
  # deploy LOGS application
 include bonita_bpm::logs_application
  • To install and configure Bonita BPM using Puppet is simple. Install the Puppet command and launch it with following parameters:
apt-get install puppet
puppet apply --modulepath=puppet/modules/ init.pp
Notifications