Здесь я собираюсь построить два экземпляра APIM для высокой доступности. Вы можете попробовать это на двух узлах. Но здесь я пробую это на одном ПК. Поэтому я буду менять смещение порта. Я буду использовать WSO2 AM 4.6.0 для этой статьи.
Здесь вам понадобится
- MySQL Server.
- Драйвер MySQL JDBC. (Mysql-connector-java-xxxx-bin.jar)
1. Распакуйте AM 4.6.0 для двух каталогов, таких как node1 и node2
2. Сначала мы настроим базу данных MYSQL (три базы данных).
Моим именем пользователя MYSQL является «root», а паролем «root».
mysql> create database apimgtdb; mysql> use apimgtdb; mysql> source <APIM_HOME>/dbscripts/apimgt/mysql.sql; mysql> grant all on apimgtdb.* TO root@localhost identified by "root"; mysql> create database userdb; mysql> use userdb; mysql> source <APIM_HOME>/dbscripts/mysql.sql; mysql> grant all on userdb.* TO root@localhost identified by "root"; mysql> create database regdb; mysql> use regdb; mysql> source <APIM_HOME>/dbscripts/mysql.sql; mysql> grant all on regdb.* TO root@localhost identified by "root";
3. Теперь рассмотрим экземпляр APIM узла 1
4. Сконфигурируйте источники данных для трех баз данных, добавив ниже для <APIM_HOME> /repository/conf/datasources/master-datasources.xml
(Закомментируйте существующий источник данных для WSO2AM_DB)
<datasource> <name>WSO2AM_DB</name> <description>The datasource used for the API Manager database</description> <jndiConfig> <name>jdbc/WSO2AM_DB</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://apimgtdb.mysql-wso2.com:3306/apimgtdb?autoReconnect=true&relaxAutoCommit=true</url> <username>root</username> <password>root</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> </configuration> </definition> </datasource> <datasource> <name>WSO2UM_DB</name> <description>The datasource used by user manager</description> <jndiConfig> <name>jdbc/WSO2UM_DB</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://userdb.mysql-wso2.com:3306/userdb?autoReconnect=true&relaxAutoCommit=true</url> <username>root</username> <password>root</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> </configuration> </definition> </datasource> <datasource> <name>WSO2REG_DB</name> <description>The datasource used by user manager</description> <jndiConfig> <name>jdbc/WSO2REG_DB</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://regdb.mysql-wso2.com:3306/regdb?autoReconnect=true&relaxAutoCommit=true</url> <username>root</username> <password>root</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> </configuration> </definition> </datasource>
5. Добавьте «<DataSourceName> jdbc / WSO2AM_DB </ DataSourceName>», если он не указан в <APIM_HOME> /repository/conf/api-manager.xml.
6. Теперь обновите элемент <UserStoreManager> в <APIM _HOME> /repository/conf/user-mgt.xml
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager"> <Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property> <Property name="dataSource">jdbc/WSO2UM_DB</Property> <Property name="ReadOnly">false</Property> <Property name="MaxUserNameListLength">100</Property> <Property name="IsEmailUserName">false</Property> <Property name="DomainCalculation">default</Property> <Property name="PasswordDigest">SHA-256</Property> <Property name="StoreSaltedPassword">true</Property> <Property name="ReadGroups">true</Property> <Property name="WriteGroups">true</Property> <Property name="UserNameUniqueAcrossTenants">false</Property> <Property name="PasswordJavaRegEx">^[\S]{5,30}prebuffer_2lt;/Property> <Property name="PasswordJavaScriptRegEx">^[\S]{5,30}prebuffer_2lt;/Property> <Property name="UsernameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}prebuffer_2lt;/Property> <Property name="UsernameJavaScriptRegEx">^[\S]{3,30}prebuffer_2lt;/Property> <Property name="RolenameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}prebuffer_2lt;/Property> <Property name="RolenameJavaScriptRegEx">^[\S]{3,30}prebuffer_2lt;/Property> <Property name="UserRolesCacheEnabled">true</Property> <Property name="MaxRoleNameListLength">100</Property> <Property name="MaxUserNameListLength">100</Property> <Property name="SharedGroupEnabled">false</Property> <Property name="SCIMEnabled">false</Property> </UserStoreManager>
6.1 Обновите DataSourceName, как показано ниже, чтобы указать точку для совместного использования БД для разрешения.
<DataSourceName>jdbc/WSO2AM_DB</DataSourceName>
8. Компоненты Publisher и Store имеют доступ к базе данных реестра. Чтобы настроить ее, откройте <APIM_HOME> /repository/conf/registry.xml и добавьте к нему строки ниже.
<dbConfig name="govregistry"> <dataSource>jdbc/WSO2REG_DB</dataSource> </dbConfig> <remoteInstance url="https://govregistry.apim-wso2.com"> <id>gov</id> <dbConfig>govregistry</dbConfig> <readOnly>false</readOnly> <enableCache>true</enableCache> <registryRoot>/</registryRoot> </remoteInstance> <mount path="/_system/governance" overwrite="true"> <instanceId>gov</instanceId> <targetPath>/_system/governance</targetPath> </mount>
9. Измените записи в / etc / hosts (C: \ Windows \ System32 \ drivers \ etc), чтобы сопоставить соответствующие IP-адреса.
127.0.0.1 apimgtdb.mysql-wso2.com 127.0.0.1 userdb.mysql-wso2.com 127.0.0.1 regdb.mysql-wso2.com 127.0.0.1 govregistry.apim-wso2.com
10. Node1 готов к запуску
настройка узла2 или узла (n)
11. Просто вы можете скопировать и вставить вышеупомянутые файлы файлы для узла 2
12. (*) Измените смещение carbon.xml, если вы используете один и тот же компьютер, а не отдельные узлы. Если вы пытаетесь в отдельном узле не нужно менять смещение порта.
[НОТА]
изменение смещения порта не отражается в экономичном сервере, поэтому необходимо вручную изменить эти значения с 10397 на 10398, поскольку смещение равно 1.
<ThriftClientPort>10398</ThriftClientPort> <ThriftServerPort>10398</ThriftServerPort>
ИЛИ вы можете обновить для использования WS thrift
<KeyValidatorClientType>WSClient</KeyValidatorClientType> <ThriftClientPort>10397</ThriftClientPort> <ThriftClientConnectionTimeOut>10000</ThriftClientConnectionTimeOut> <ThriftServerPort>10397</ThriftServerPort> <EnableThriftServer>false</EnableThriftServer>
13. Теперь вы можете запустить оба
https://10.100.1.112:9443/publisher/
https://10.100.1.112:9443/publisher/
Создайте API и опубликуйте любой из указанных выше URL и подпишитесь на него в магазине.
Вот же токен доступа
издатель
вам необходимо кластеризовать компоненты Gateway, Publisher и Store, чтобы кэши работали должным образом. [1]
[1] http://docs.wso2.org/pages/viewpage.action?pageId=29918203
[2] http://docs.wso2.org/display/CLUSTER420/Clustering+API+Manager