Статьи

Настройка WSO2 API Manager для высокой доступности

Здесь я собираюсь построить два экземпляра 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 и подпишитесь на него в магазине.

образ

Вот же токен доступа

d1

издатель

образ

вам необходимо кластеризовать компоненты Gateway, Publisher и Store, чтобы кэши работали должным образом. [1]

[1] http://docs.wso2.org/pages/viewpage.action?pageId=29918203

[2] http://docs.wso2.org/display/CLUSTER420/Clustering+API+Manager