为 WSO2 ESB 5.0.0 集群配置 MySQL 数据库

  • 一、集群数据库
  • 二、创建数据库
  • 三、配置管理节点
  • 四、配置工作节点
  • 五、在管理和工作节点上挂载注册表
  • 六、测试

集群配置见:WSO2 ESB 5.0.0 集群配置

一、集群数据库

每个基于 Carbon 的产品都使用一个数据库来存储用户管理详细信息和注册表数据等信息。 集群中的所有节点都必须使用一个中央数据库进行配置和治理注册表挂载。

  • 不建议在生产中使用 H2。
  • 不建议在企业测试和生产环境中使用嵌入式 H2 数据库。 它具有较低的性能、集群限制,并且可能导致文件损坏失败。 请改用行业标准的 RDBMS,例如 Oracle、PostgreSQL、MySQL 或 MS SQL。
  • 可以在开发环境中使用嵌入式 H2 数据库,也可以将其用作注册表挂载中的本地注册表。

创建以下数据库和关联的数据源

数据库 描述
WSO2_USER_DB JDBC 用户存储和授权管理器
REGISTRY_DB 在产品节点中安装用于配置和治理注册表的共享数据库
REGISTRY_LOCAL1 管理节点中的本地注册空间
REGISTRY_LOCAL2 工作节点中的本地注册空间

下图说明了这些数据库如何连接到管理和工作节点

二、创建数据库

执行以下步骤来创建必要的数据库。这里使用 MySQL 作为示例,可以使用任何合适的数据库来代替。

  • 1、下载并安装 MySQL 服务器。

  • 2、下载 MySQL JDBC 驱动程序。

  • 3、将下载的 MySQL 驱动压缩包解压,将 MySQL JDBC 驱动 JAR (mysql-connector-java-x.x.xx-bin.jar) 复制到管理节点和工作节点的 <PRODUCT_HOME>/repository/components/lib目录中。

  • 4、通过打开 /etc/hosts 文件并添加以下行来定义用于配置新数据库权限的主机名:<MYSQL-DB-SERVER-IP> carbondb.mysql-wso2.com,仅当数据库不在本地计算机和单独的服务器上时,才需要执行此步骤。

  • 5、在终端/命令窗口中输入以下命令,其中 username 是要用于访问数据库的用户名:mysql -u username -p

  • 6、出现提示时,使用指定的用户名指定用于访问数据库的密码。

  • 7、使用以下命令创建数据库,其中 <PRODUCT_HOME>是安装的任何产品实例的路径,用户名和密码与在前面的步骤中指定的相同:

关于在不同操作系统中使用 MySQL

对于 Microsoft Windows 用户,在 MySQL 中创建数据库时,将字符集指定为 latin1 很重要。不这样做可能会在启动集群时导致错误(错误代码:1709)。此错误发生在某些版本的 MySQL (5.6.x) 中,与 UTF-8 编码有关。 MySQL 最初默认使用 latin1 字符集,它以 2 字节的序列存储字符。然而,在最近的版本中,为了对国际用户更友好,MySQL 默认使用 UTF-8。因此,必须在数据库创建命令中使用 latin1 作为字符集,如下所示以避免此问题。请注意,这可能会导致非拉丁字符(如希伯来语、日语等)出现问题。以下是数据库创建命令的 sql。

mysql> create database <DATABASE_NAME> character set latin1;

对于其他操作系统的用户,标准的数据库创建命令就足够了。对于这些操作系统,以下是数据库创建命令的 sql。

mysql> create database <DATABASE_NAME>;
create database WSO2_USER_DB character set latin1;
use WSO2_USER_DB;
source <PRODUCT_HOME>\dbscripts\mysql5.7.sql;
source <PRODUCT_HOME>\dbscripts\identity\mysql-5.7+.sql;
grant all on *.* TO regadmin@"%" identified by "regadmin";create database REGISTRY_DB character set latin1;
use REGISTRY_DB;
source <PRODUCT_HOME>\dbscripts\mysql5.7.sql;
grant all on *.* TO regadmin@"%" identified by "regadmin";create database REGISTRY_LOCAL1 character set latin1;
use REGISTRY_LOCAL1;
source <PRODUCT_HOME>\dbscripts\mysql5.7.sql;
grant all on *.* TO regadmin@"%" identified by "regadmin";create database REGISTRY_LOCAL2 character set latin1;
use REGISTRY_LOCAL2;
source <PRODUCT_HOME>\dbscripts\mysql5.7.sql;
grant all on *.* TO regadmin@"%" identified by "regadmin";alter user 'regadmin'@'%' identified by 'regadmin';
flush privileges;

从 Carbon 内核 4.4.6 开始,产品将附带两个 MySQL 脚本,如下所示:

mysql.sql :此脚本用于 5.7 之前的 MySQL 版本。

mysql5.7.sql :此脚本用于 MySQL 5.7 及更高版本。

请注意,如果在服务器启动期间使用 -DSetup 选项自动创建数据库,则默认情况下将使用 mysql.sql 脚本来设置数据库。因此,如果为服务器设置了 MySQL 5.7 版,请务必在启动服务器之前执行以下操作:

  • 首先,将现有的 mysql.sql 文件更改为不同的文件名。
  • <PRODUCT_HOME>/dbscripts/mysql5.7.sql脚本更改为 mysql.sql。
  • <PRODUCT_HOME>/dbscripts/identity/mysql5.7.sql脚本更改为 mysql.sql。

MySQL 5.7 仅推荐用于基于 Carbon 4.4.6 或更高版本的产品。

三、配置管理节点

  • 1、在管理器节点上,打开 <PRODUCT_HOME>/repository/conf/datasources/master-datasource.xml文件,并将数据源配置为指向 REGISTRY_LOCAL1、WSO2_REGISTRY_DB 和 WSO2_USER_DB 数据库,如下所示(更改用户名、密码和数据库 环境所需的 URL)。
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration"><providers><provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider></providers><datasources><datasource><name>REGISTRY_LOCAL1</name><description>The datasource used for registry- local</description><jndiConfig><name>jdbc/WSO2CarbonDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_LOCAL1?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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>REGISTRY_DB</name><description>The datasource used for registry- config/governance</description><jndiConfig><name>jdbc/WSO2RegistryDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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>WSO2_USER_DB</name><description>The datasource used for registry and user manager</description><jndiConfig><name>jdbc/WSO2UMDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/WSO2_USER_DB?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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></datasources>
</datasources-configuration>

确保将用户名和密码替换为 MySQL 数据库用户名和密码。

  • 2、要配置数据源,请更新管理器节点的 <PRODUCT_HOME>/repository/conf/user-mgt.xml中的 dataSource 属性,如下所示:
<Property name="dataSource">jdbc/WSO2UMDB</Property>
  • 3、必须更新管理节点的 <PRODUCT_HOME>/repository/conf/registry.xml文件中的 dataSource 属性,如下所示。
<dbConfig name="sharedregistry">   <dataSource>jdbc/WSO2RegistryDB</dataSource>
</dbConfig>

四、配置工作节点

  • 1、在工作节点上,打开 <PRODUCT_HOME>/repository/conf/datasources/master-datasource.xml文件并将数据源配置为指向 REGISTRY_LOCAL2、WSO2_REGISTRY_DB 和 WSO2_USER_DB 数据库,如下所示(更改用户名、密码和数据库 URL 根据您的环境需要):
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration"><providers><provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider></providers><datasources><datasource><name>REGISTRY_LOCAL2</name><description>The datasource used for registry- local</description><jndiConfig><name>jdbc/WSO2CarbonDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_LOCAL2?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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>REGISTRY_DB</name><description>The datasource used for registry- config/governance</description><jndiConfig><name>jdbc/WSO2RegistryDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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>WSO2_USER_DB</name><description>The datasource used for registry and user manager</description><jndiConfig><name>jdbc/WSO2UMDB</name></jndiConfig><definition type="RDBMS"><configuration><url>jdbc:mysql://carbondb.mysql-wso2.com:3306/WSO2_USER_DB?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</url><username>regadmin</username><password>regadmin</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></datasources>
</datasources-configuration>
  • 2、配置数据源,更新工作节点的 <PRODUCT_HOME>/repository/conf/user-mgt.xml文件中的 dataSource 属性,如下所示。
<Property name="dataSource">jdbc/WSO2UMDB</Property>
  • 3、必须更新工作节点的 <PRODUCT_HOME>/repository/conf/registry.xml文件中的 dataSource 属性,如下所示。
<dbConfig name="sharedregistry">   <dataSource>jdbc/WSO2RegistryDB</dataSource>
</dbConfig>

五、在管理和工作节点上挂载注册表

执行此步骤以确保用于治理和配置的共享注册表安装到两个节点。 此数据库是 REGISTRY_DB。

在管理节点的 <PRODUCT_HOME>/repository/conf/registry.xml文件中配置共享注册表数据库和挂载详细信息,如下所示:

注意:添加以下配置时,不得删除名为 wso2registry 的现有 dbConfig。

<dbConfig name="sharedregistry"><dataSource>jdbc/WSO2RegistryDB</dataSource>
</dbConfig><remoteInstance url="https://localhost:9443/registry"><id>instanceid</id><dbConfig>sharedregistry</dbConfig><readOnly>false</readOnly><enableCache>true</enableCache><registryRoot>/</registryRoot><cacheId>regadmin@jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</cacheId>
</remoteInstance><mount path="/_system/config" overwrite="true"><instanceId>instanceid</instanceId><targetPath>/_system/config</targetPath>
</mount><mount path="/_system/governance" overwrite="true"><instanceId>instanceid</instanceId><targetPath>/_system/governance</targetPath>
</mount>

在工作节点的 <PRODUCT_HOME>/repository/conf/registry.xml中配置共享注册表数据库和挂载详细信息,如下所示:

<dbConfig name="sharedregistry"><dataSource>jdbc/WSO2RegistryDB</dataSource>
</dbConfig><remoteInstance url="https://localhost:9443/registry"><id>instanceid</id><dbConfig>sharedregistry</dbConfig><readOnly>false</readOnly><enableCache>true</enableCache><registryRoot>/</registryRoot><cacheId>regadmin@jdbc:mysql://carbondb.mysql-wso2.com:3306/REGISTRY_DB?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=GMT%2B8</cacheId>
</remoteInstance><mount path="/_system/config" overwrite="true"><instanceId>instanceid</instanceId><targetPath>/_system/config</targetPath>
</mount><mount path="/_system/governance" overwrite="true"><instanceId>instanceid</instanceId><targetPath>/_system/governance</targetPath>
</mount>

以下是添加这些配置时需要注意的一些要点:

  • <dbConfig name="sharedregistry">标签下指定的 dataSource 必须与 manager 和 worker 的 master-datasources.xml 文件中指定的 jndiConfig 名称匹配。
  • 注册表挂载路径用于标识注册表的类型。例如,/_system/config指的是配置注册表,/_system/governance指的是治理注册表。
  • dbconfig 条目使您能够识别您在 master-datasources.xml 文件中配置的数据源。使用唯一名称 sharedregistry 来引用该数据源条目。
  • remoteInstance 部分是指外部注册表挂载。可以指定此实例的只读/读写性质以及缓存配置和注册表根位置。如果是工作节点,readOnly 属性应该是 true,如果是管理器节点,这个属性应该设置为 false。
  • 此外,必须指定 cacheId,它使缓存能够在集群环境中正常运行。请注意,cacheId 与注册表数据库的 JDBC 连接 URL 相同。该值是远程实例的 cacheId。这里的cacheId应该是$database_username@$database_url的格式,其中$database_username是远程实例数据库的用户名,$database_url是远程实例数据库的URL。此 cacheID 用于标识启用缓存时应查找的缓存。在这种情况下,我们应该连接的数据库是 REGISTRY_DB,它是所有 master/workers 节点共享的数据库。可以通过查看使用相同数据源的安装配置来识别它。
  • 必须为每个远程实例定义一个唯一名称 id,然后从挂载配置中引用该名称。在上面的示例中,远程实例的唯一 ID 是 instanceId。
  • 在每个挂载配置中,指定实际挂载路径和目标挂载路径。 targetPath 可以是任何有意义的名称。在本例中,它是 /_system/config

六、测试

进入管理控制台:https://192.168.1.128:8443
修改日志打印级别为:info

管理节点:

工作节点1:

工作节点2:

从日志打印可以看到,在管理控制台修改的配置会同步到所有工作节点上面。

为 WSO2 ESB 5.0.0 集群配置 MySQL 数据库相关推荐

  1. Redis-5.0.5集群配置

    Redis-5.0.5集群配置 版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://gith ...

  2. JBOSS4.0.2集群配置

    JBOSS4.0.2 HTTP集群配置之一:JBOSS集群介绍 Jboss 支持如下类型的cluster:EJB.HTTP.JNDI.JMS,本文主要了解HTTP cluster.JBOSS的HTTP ...

  3. RedHat AS4-U2下Mysql 5.0的集群配置

    最近看到过很多关于cluster的资料,一直在研究linux系统级的负载均衡和高可用,但是还没有完全成功,只是实现了一些简单的服务:今天在搜集资料中看到有关mysql的cluster,看上去不是很复杂 ...

  4. RedHat AS4-U2下Mysql 5.0.22集群配置

    一.实验环境 1. Linux操作系统版本. RedHat AS4-U2 2. Mysql数据库版本 mysql-max-5.0.22-linux-i686-glibc23.tar.gz 共三台机器P ...

  5. 运维企业专题(11)RHCS高可用集群下MySql数据库与共享磁盘(单点写入、多点写入)的设置

    实验环境 主机名 IP 服务 server1 172.25.6.1 ricci,luci, iscsi,mysql-server server2 172.25.6.2 ricci,iscsi,mysq ...

  6. 在线安装k3s集群-外置mysql数据库

    我这里使用的系统是centos7.6 一.首先准备一个mysql数据库 推荐使用mysql5.7版本,mysql5.7以下版本安装会有问题 二.准备工作 关闭swap # 临时关闭swap分区,当前会 ...

  7. Hadoop集群中MySQL数据库的使用

    [实验目的] 1.MySQL数据库的基本命令: 2.MySQL数据库中使用SQL语句: 3.MySQL数据库中数据库.表.数据测操作: [实验要求] 1.熟悉MySQL数据库的基本命令和SQL语句的使 ...

  8. Jboss4集群配置【转】

    1.前言 2006年,Jboss公司被Redhat公司收购了.这直接导致Jboss产品结构调整,并将以前收费的Jboss AS文档改为免费.jijian91本次集群试验的最初依据就是由此得到的Jbos ...

  9. 人大金仓多节点数据库集群配置参数一键修改

    对于单个数据库来讲,修改配置参数相对比较容易: 对于多节点的主备集群环境的来讲,集群配置参数修改并不是简单的数据主备同步过程,而是需要对每个节点的配置文件进行调整. 金仓KingbaseES数据库集群 ...

  10. Spark 0.8 集群(CentOS6.4)-简单统计测试

    环境:CentOS 6.4, hadoop-2.0.0-cdh4.2.0, JDK 1.6, spark-0.8.0-incubating-bin-cdh4.tar.gz,Scala 2.9.3 1. ...

最新文章

  1. 【透明版九宫格背景图片】仅依靠background的几个属性组合搭配出酷炫的透明背景卡片效果→适用于大数据可视化、数据大屏展示页面
  2. oracle设置大表空间,Oracle怎样设置表空间数据文件大小
  3. 【数据竞赛】CV赛题总结:人民币面值与编码识别
  4. python语言的类型是_Python语言类型
  5. u-boot懂你并不难
  6. Asp.net 中 Eval 调用后台函数的写法
  7. docker安装Oracle 11g
  8. classpath理解
  9. 大数据学习笔记19:MR案例——汇总三科成绩表文件
  10. java 写一个简单的计算器
  11. Oracle作业5——多表查询、子查询
  12. Generic Netlink内核实现分析(二):通信
  13. adsl密码查看器,宽带密码查看器,无广告,绿色版
  14. 串口通信linux单片机,Linux与单片机串口通信
  15. antd系列之Select
  16. Seventh season eighteenth episode,Joey got an award??????
  17. 效率工具 Snipaste、坚果云、印象笔记
  18. 打造数字化软件工厂 —— 一站式 DevOps 平台全景解读
  19. c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析
  20. python打卡提醒机器人(企业微信)

热门文章

  1. ActionForm的详解
  2. 诺基亚如何利用计算机上网,诺基亚E63的WIFI上网功能全教程
  3. html化学式编辑器,化学反应方程式编辑器软件(ChemDraw Pro)
  4. 冰点还原精灵有什么作用
  5. Foxit PDF SDK for iOS--零基础Cordova开发
  6. 使用instsrv.exe+srvany.exe将应用程序安装为windows服务的方法
  7. 基于ECharts和腾讯疫情数据接口的全球疫情地图(超全)
  8. 逆波兰表达式(后缀表达式)
  9. vue实现点击复制文本功能
  10. 手机变成投影仪 建筑穿上节能衣