Multiexcerpt include | ||||
---|---|---|---|---|
|
Hiera data sets that match the distributed profiles of WSO2 API Manager (api-store, api-publisher, api-key-manager, gateway-manager, gateway-worker, traffic-manager) are shipped with clustering related configuration that is already enabled. Therefore, you need to only do a few changes to setup set up a distributed deployment in your preferred deployment pattern, before running the Puppet Agent.
...
Follow the instructions below to configure clustering for a selected pattern:
Note |
---|
The following section contains clustering information for all the patterns. Therefore, make sure to only follow the configurations based on the pattern that you are working on. |
Add or update the host name mapping list.
Puppet adds the required host entries explicitly in the/etc/hosts
file in the Puppet Agent. For this purpose you have to update the hosts mappings appropriately in one of the following Hiera data files (YAML file) based on the pattern that you are using./etc/puppet/hieradata/<environment-name>/dev/wso2/wso2am_runtime/<pattern-number>/default.yaml
/etc/puppet/hieradata/<environment-name>/wso2/wso2am_runtime/<pattern-name>/common.yaml
Localtabgroup Localtab active true title Pattern 0 If you are using pattern 0, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-0/default.yaml
file.Code Block wso2::hosts_mapping: api_manager: ip: 127.0.0.1 name: am.dev.wso2.org
Localtab -name>/dev/wso2/wso2am_runtime/<pattern-name>/common.yaml
Localtabgroup Localtab active true title Pattern 1 If you are using pattern 1, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-1/default.yaml
file.Code Block wso2::hosts_mapping: api_manager: ip: 127.0.0.1 name: am.dev.wso2.org
Localtab title Pattern 2 If you are using pattern 2, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-2/default.yaml
file.Code Block wso2::hosts_mapping: apim_analytics_server: ip: 192.168.57.29 name: analytics.dev.wso2.org api_manager: ip: 127.0.0.1 name: am.dev.wso2.org
Localtab title Pattern 3 If you are using pattern 3, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-3/common.yaml
file.Code Block wso2::hosts_mapping: apim_keymanager: ip: 192.168.57.186 name: km.dev.wso2.org apim_store: ip: 192.168.57.21 name: store.dev.wso2.org apim_publisher: ip: 192.168.57.219 name: pub.dev.wso2.org apim_gateway: ip: 192.168.57.216 name: mgt-gw.dev.wso2.org apim_gateway_worker: ip: 192.168.57.247 name: gw.dev.wso2.org apim_traffic_manager: ip: 192.168.57.35 name: tm.dev.wso2.org svn: ip: 192.168.100.1 name: svn.gw.am.dev.wso2.org apim_analytics_server: ip: 192.168.57.29 name: analytics.dev.wso2.org
Localtab title Pattern 4 If you are using pattern 4, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-4/common.yaml
file.Code Block wso2::hosts_mapping: apim_keymanager: ip: 192.168.57.186 name: km.dev.wso2.org apim_store: ip: 192.168.57.21 name: store.dev.wso2.org apim_publisher: ip: 192.168.57.219 name: pub.dev.wso2.org apim_gateway_manager: ip: 192.168.57.216 name: mgt-gw.dev.wso2.org apim_gateway_worker: ip: 192.168.57.247 name: gw.dev.wso2.org apim_traffic_manager: ip: 192.168.57.35 name: tm.dev.wso2.org svn: ip: 192.168.100.1 name: svn.gw.am.dev.wso2.org apim_analytics_server: ip: 192.168.57.29 name: analytics.dev.wso2.org apim_gateway_manager_dmz: ip: 192.168.57.5 name: dmz-mgt-gw.dev.wso2.org apim_gateway_worker_dmz: ip: 192.168.57.218 name: dmz-gw.dev.wso2.org
Localtab title Pattern 5 If you are using pattern 5, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-5/common.yaml
file.Code Block wso2::hosts_mapping: apim_store: ip: 192.168.57.21 name: store.dev.wso2.org apim_publisher: ip: 192.168.57.219 name: pub.dev.wso2.org apim_gateway_manager: ip: 192.168.57.216 name: mgt-gw.dev.wso2.org apim_gw_plus_km: ip: 192.168.57.247 name: am.dev.wso2.org apim_traffic_manager: ip: 192.168.57.35 name: tm.dev.wso2.org svn: ip: 192.168.100.1 name: svn.gw.am.dev.wso2.org apim_analytics_server: ip: 192.168.57.29 name: analytics.dev.wso2.org
Localtab title Pattern 6 If you are using pattern 6, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-6/common.yaml
file.Code Block wso2::hosts_mapping: apim_keymanager: ip: 192.168.57.186 name: km.dev.wso2.org apim_publisher_plus_store: ip: 192.168.57.21 name: am.dev.wso2.org apim_gateway: ip: 192.168.57.216 name: mgt-gw.dev.wso2.org apim_gateway_worker: ip: 192.168.57.247 name: gw.dev.wso2.org apim_traffic_manager: ip: 192.168.57.35 name: tm.dev.wso2.org svn: ip: 192.168.100.1 name: svn.gw.am.dev.wso2.org apim_analytics_server: ip: 192.168.57.29 name: analytics.dev.wso2.org
Localtab title Pattern 7 If you are using pattern 7, update the following section in the
/etc/puppet/hieradata/dev/wso2/wso2am_runtime/pattern-7/default.yaml
file.Code Block wso2::hosts_mapping: api_manager: ip: 127.0.0.1 name: am.dev.wso2.org identity_server: ip: 192.168.57.35 name: is.dev.wso2.org
Add the Well Known Address (WKA) list for Gateway clusters and Publisher-Store cluster.
The required configurations for clustering are already added, but you need to update the WKA IP addresses in the respective Hiera data files based on your deployment.Note This is not applicable to patterns 0, 1, 2, and 7 as those patterns do not have Gateway or Publisher-Store clusters.
Localtabgroup Localtab active true id pattern3 title Pattern 3 There are 2 clusters in the
pattern-3
deployment. Update the Well Known Address (WKA) list for the clusters as follows:Publisher-Store cluster
This is a cluster of the Publisher node and the Store node. Update the WKA list in both theapi-publisher.yaml
and thestore.yaml
files with the IP addresses of Publisher and Store nodes.Code Block wka: members: - hostname: 192.168.57.219 port: 4000 - hostname: 192.168.57.21 port: 4000
Gateway cluster
This is a cluster for the Gateway Manager node and the Gateway Worker node. Update the WKA list in both the
gateway-manager.yaml
andgateway-worker.yaml
files with the IP addresses of Gateway Manager node and the Gateway Worker node.Code Block wka: members: - hostname: 192.168.57.216 port: 4000 - hostname: 192.168.57.247 port: 4000
Localtab id pattern-4 title Pattern 4 There are 3 clusters in the
pattern-4
deployment. Update the Well Known Address (WKA) list for the clusters as follows:Publisher-Store cluster
This is a cluster of the Publisher node and the Store node. Update the WKA list in both theapi-publisher.yaml
and thestore.yaml
files with the IP addresses of Publisher and Store nodes.Code Block wka: members: - hostname: 192.168.57.219 port: 4000 - hostname: 192.168.57.21 port: 4000
Gateway cluster
There are 2 Gateway clusters in this pattern. One is in the ENV1 and the other one is in the ENV2. Each of those clusters consist of a Gateway Manager node and a Gateway Worker node.
Configure the Gateway cluster in the ENV1
Update the WKA list in both thegateway-manager-env1.yaml
andgateway-worker-env1.yaml
files with the IP addresses of Gateway Manager node and Gateway Worker node in the ENV1.Code Block wka: members: - hostname: 192.168.57.216 port: 4000 - hostname: 192.168.57.247 port: 4000
Configure the Gateway cluster in the ENV2
Update the WKA list in both thegateway-manager-env2.yaml
andgateway-worker-env2.yaml
files with the IP addresses of the Gateway Manager node and the Gateway Worker node in the ENV2.Code Block wka: members: - hostname: 192.168.57.5 port: 4000 - hostname: 192.168.57.218 port: 4000
Localtab id pattern5 title Pattern 5 There are 2 clusters in the
pattern-5
deployment. Update the Well Known Address (WKA) list for the clusters as follows:Publisher-Store cluster
This is a cluster of the Publisher node and the Store node. Update the WKA list in both theapi-publisher.yaml
and thestore.yaml
files with the IP addresses of Publisher and Store nodes.Code Block wka: members: - hostname: 192.168.57.219 port: 4000 - hostname: 192.168.57.21 port: 4000
Gateway cluster
This is a cluster for the Gateway Manager node and the node that has the Gateway Worker together with the Key Manager. Update the WKA list in both the
gateway-manager.yaml
andgw-plus-km.yaml
files with the IP addresses of Gateway Manager node and the node that has the Gateway Worker together with the Key Manager.Code Block wka: members: - hostname: 192.168.57.216 port: 4000 - hostname: 192.168.57.247 port: 4000
Localtab id pattern6 title Pattern 6 There is one cluster in the
pattern-6
deployment. Update the Well Known Address (WKA) list for the cluster as follows:The Gateway cluster is a cluster for the Gateway Manager node and the Gateway Worker node. Update the WKA list in both the
gateway-manager.yaml
andgateway-worker.yaml
files with the IP addresses of Gateway Manager node and the Gateway Worker node.Code Block wka: members: - hostname: 192.168.57.216 port: 4000 - hostname: 192.168.57.247 port: 4000
Modify all the MySQL based datasources in the respective Hiera data file (YAML file) that corresponds to the pattern you are using in order to point to the external MySQL servers.
Note This is not applicable for pattern 0 as
pattern-0
uses a H2 database.Update the following in the
/etc/puppet/hieradata/wso2/wso2am_runtime/[pattern-number]/default.yaml
file for patterns 1, 2 and 7 and/etc/puppet/hieradata/wso2/wso2am_runtime/[pattern-number]/common.yaml
You need to only replace the IP address, with the IP address of database server that you are using.
Note If you want to use any other database except MySQL, update the data sources appropriately.
Code Block title Example: wso2_am_db: name: WSO2_AM_DB description: The datasource used for API Manager database driver_class_name: "%{hiera('wso2::datasources::mysql::driver_class_name')}" url: jdbc:mysql://192.168.57.210:3306/apimgtdb?autoReconnect=true username: "%{hiera('wso2::datasources::mysql::username')}" password: "%{hiera('wso2::datasources::mysql::password')}" jndi_config: jdbc/WSO2AM_DB max_active: "%{hiera('wso2::datasources::common::max_active')}" max_wait: "%{hiera('wso2::datasources::common::max_wait')}" test_on_borrow: "%{hiera('wso2::datasources::common::test_on_borrow')}" default_auto_commit: "%{hiera('wso2::datasources::common::default_auto_commit')}" validation_query: "%{hiera('wso2::datasources::mysql::validation_query')}" validation_interval: "%{hiera('wso2::datasources::common::validation_interval')}"
Create following database scemas schemas in MySQL server. The databases need to be created in each of the pattern is listed below.
Names of the databases that need to be created Description apimgtdb
database Database used for managing APIs. configdb
database Database used for the config registry. govregdb
database userd Database used for the gov registry. userdb
database Database used for the user management and user store. mbstoredb
database Database used for message broker. statdb
database Database used for getting statistics for API Manager. Note Addition to that if you are using pattern-6, create analyticseventstoredb and analyticprocesseddatastoredb which are used for Analytics recode store.
You need to run MySQL database scripts for following tables as mentioned below.
database script apimgtdb
<API-M_HOME>/dbscripts/apimgt/mysql.sql
Note If you are using MySQL 5.7 or later version, select
mysql5.7.sql
located in same directory without usingmysql.sql
script.configdb
<API-M_HOME>/dbscripts/mysql.sql
Note If you are using MySQL 5.7 or later version, select mysql5.7.sql located in same directory without using
mysql.sql
script.govregdb
<API-M_HOME>/dbscripts/mysql.sql
Note If you are using MySQL 5.7 or later version, select
mysql5.7.sql
located in same directory without usingmysql.sql
script.userdb
<API-M_HOME>/dbscripts/mysql.sql
Note If you are using MySQL 5.7 or later version, select
mysql5.7.sql
located in same directory without usingmysql.sql
script.mbstoredb
<API-M_HOME>/dbscripts/mb-store/mysql-mb.sql
Note You do not need to run the database scripts agains against following databases as the database tables of them will be created at runtime run time.
- statdb
- analyticseventstoredb
- analyticprocesseddatastoredb
If you are using a MySQL database, make the following changes:
- Download and copy the mysql MySQL driver jar JAR (mysql-connector-java-5.1.39-bin.jar) to the locations
/etc/puppet/environments/production/modules/wso2am_runtime/files/configs/repository/components/lib and
in Puppet Master./etc/puppet/environments/production/modules/wso2am_analytics/files/configs/repository/components/lib
Uncomment the
file_list
entry for JDBC connector JAR in the relevant hiera Hiera data files.Code Block wso2::file_list: - "repository/components/lib/%{hiera('wso2::datasources::mysql::connector_jar')}"
Update the JAR file name appropriately if your file name is not
mysql-connector-java-5.1.39-bin.jar
, which is set as the default value.Code Block wso2::datasources::mysql::connector_jar: mysql-connector-java-5.1.39-bin.jar
- Download and copy the mysql MySQL driver jar JAR (mysql-connector-java-5.1.39-bin.jar) to the locations
Configure deployment synchronization in each of the Gateway related nodes.
Use one of the following methods to carry out this configuration.Rsync
Note WSO2 recommends rsync instead of SVN, for deployment synchronization as it is an efficient, easy to use and lightweight solution compared to SVN.
Why can't I use SVN based deployment synchronization (Dep Sync)?
WSO2 has identified some inconsistencies when using Hazelcast clustering. As a result, from API-M 2.1.0 onwards WSO2 API-M has been designed so that it is possible to deploy API-M in a clustered setup without using Hazelcast clustering, so that users can use Hazelcast clustering only when absolutely necessary. However, if you use deployment synchronization as a content synchronization mechanism, you are compelled to use Hazelcast clustering. Therefore, WSO2 does not recommend using SVN based deployment synchronization.
If you prefer to use rsync, see Configuring rsync for Deployment Synchronization.
SVN Based
Make the respective SVN based configurations in the following files based on the pattern that you are using.Pattern Files to Update Pattern 3 /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-3/gateway-manager.yaml /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-3/gateway-worker.yaml
Pattern 4 /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-4/gateway-manager-env1.yaml
/etc/puppet/hieradata/wso2/wso2am_runtime/pattern-4/gateway-worker-env1.yaml
/etc/puppet/hieradata/wso2/wso2am_runtime/pattern-4/gateway-manager-env2.yaml
/etc/puppet/hieradata/wso2/wso2am_runtime/pattern-4/gateway-worker-env1.yamlPattern 5 /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-5/gateway-manager.yaml /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-5/gw-plus-km.yaml.yaml
Pattern 6 /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-6/gateway-manager.yaml /etc/puppet/hieradata/wso2/wso2am_runtime/pattern-6/gateway-worker.yaml
Configure the SVN based deployment synchronization changes as follows:
Uncomment the SVN based deployment synchronization configurations in the following files based on the pattern and update the configurations where required.
Patterns 3 to 6 are configured for SVN based deployment synchronization; however, the configurations are commented out by default.Code Block title Example wso2::dep_sync: enabled: true auto_checkout: true auto_commit: true repository_type: svn svn: url: http://svnrepo.example.com/repos/ user: username password: password append_tenant_id: true
- Copy the required JARs for SVN, into the respective locations.
- Copy the
svnkit-all-1.8.7.wso2v1.jar
into the<PUPPET_HOME>/modules/wso2am/files/configs/repository/components/dropins
directory. - Copy the
trilead-ssh2-1.0.0-build215.jar
into the<PUPPET_HOME>/modules/wso2am/files/configs/repository/components/lib
directory. Uncomment the
file_list
entries for the latter mentioned two JAR files in the respective Hiera data files related to gateway nodes.Code Block wso2::file_list: - "repository/components/dropins/svnkit-all-1.8.7.wso2v1.jar" - "repository/components/lib/trilead-ssh2-1.0.0-build215.jar"
- Copy the