WSO2 ESB 5.0.0 集群配置

Posted 菠萝蚊鸭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSO2 ESB 5.0.0 集群配置相关的知识,希望对你有一定的参考价值。

WSO2 ESB 5.0.0 集群配置

一、Worker / Manager 分离的集群部署模式

在此模式中,有三个 WSO2 ESB 节点:1 个节点充当管理节点,2 个节点充当工作节点,以实现高可用性和服务请求。 在此模式中,我们允许通过外部负载均衡器访问管理控制台。 此外,服务请求通过此负载均衡器定向到工作节点。 下图描述了此集群部署场景将遵循的示例模式。

以此模式配置WSO2集群配置时,请在配置文件 axis2.xml 中使用特定 IP 地址而不是 localhost 或主机名。

在这里,我们使用三个节点作为知名成员,一个是管理节点,另外两个是工作节点。 始终建议使用至少两个知名成员,以防止在某个知名成员关闭时重新启动集群中的所有节点。

二、配置负载均衡器

负载均衡器自动在多个 WSO2 产品实例之间分配传入流量。它能够在集群中实现更高级别的容错,并提供分配流量所需的负载平衡。

本实例用了 3 台虚拟机,这里 Nginx 和管理节点放在同一台虚拟机

1、nginx 安装

关闭虚拟机防火墙
CentOS 7.0 默认使用的是 firewall 作为防火墙
查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service 

Nginx 安装教程见:CentOS7安装Nginx

Nginx 注意事项

本博客的配置步骤是在假设该 ESB 集群的负载均衡器使用公开默认的 8000 和 8043 端口的情况下编写的。

如果使用域名,可以利用 80 和 443 端口做代理。

请注意以下几点:

  • 如上面的部署模式所示,负载均衡器端口是 HTTP 8000 和 HTTPS 8043。
  • 使用 http://192.168.1.128:8000/service 通过 HTTP 8000 端口将 HTTP 请求定向到工作节点。
  • 使用 https://192.168.1.128:8043/service 通过 HTTPS 8043 端口将 HTTPS 请求定向到工作节点。
  • 通过 HTTPS 8443 端口以 https://192.168.1.128:8443/carbon 身份访问管理控制台
  • 在 WSO2 ESB 集群中,工作节点在 PassThrough 传输端口(8280 和 8243)上处理服务请求,并且可以使用 HTTPS 8443 端口访问管理控制台。

2、Nginx 配置

拦截管理节点 8000 端口请求并转发到 129/130 两台机器的 8280 端口的 WSO2 ESB

esb.http.conf

upstream worker_node 
	server 192.168.1.129:8280;
	server 192.168.1.130:8280;

 
server 
	listen 8000;
	server_name localhost;
	location / 
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_read_timeout 5m;
		proxy_send_timeout 5m;
		proxy_pass http://worker_node;
	

拦截管理节点 8043 端口请求并转发到 129/130 两台机器的 8243 端口的 WSO2 ESB
esb.https.conf

upstream ssl_worker_node 
    server 192.168.1.129:8243;
    server 192.168.1.130:8243;
  

 
server 
listen 8043;
    server_name localhost;
    ssl on;
    ssl_certificate /usr/local/nginx/ssl/wrk.crt;
    ssl_certificate_key /usr/local/nginx/ssl/wrk.key;
    location / 
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_read_timeout 5m;
		proxy_send_timeout 5m;
        proxy_pass https://ssl_worker_node;
    

拦截管理节点 8443 端口请求并转发到管理节点,通过 9443 端口访问管理控制台
mgt.esb.https.conf

server 
    listen 8443;
    server_name localhost;
    ssl on;
    ssl_certificate /usr/local/nginx/ssl/wrk.crt;
    ssl_certificate_key /usr/local/nginx/ssl/wrk.key;
 
    location / 
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_read_timeout 5m;
		proxy_send_timeout 5m;
		proxy_pass https://192.168.1.128:9443/;
	
	error_log  /usr/local/nginx/logs/mgt-error.log ;
	access_log  /usr/local/nginx/logs/mgt-access.log;

3、创建 ssl 证书

cd /usr/local/nginx
mkdir ssl
cd ssl
openssl genrsa -des3 -out wrk.key 1024
openssl req -new -key wrk.key -out wrk.csr
cp wrk.key wrk.key.org
openssl rsa -in wrk.key.org -out wrk.key
openssl x509 -req -days 365 -in wrk.csr -signkey wrk.key -out wrk.crt

三、本地 SVN 服务器配置

Linux 配置 SVN 服务器

四、配置管理节点

1、下载 WSO2 ESB

下载并解压缩 WSO2 ESB 二进制发行版。将提取的目录为<PRODUCT_HOME>

2、设置集群配置

编辑<PRODUCT_HOME>/repository/conf/axis2/axis2.xml文件如下。

  • 为此节点启用集群:
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
  • 将成员资格方案设置 wka 为启用众所周知的地址注册方法(该节点向我们稍后定义的 WKA 成员发送集群启动消息)。
<parameter name="membershipScheme">wka</parameter>
  • 指定此节点将加入的集群的名称。
<parameter name="domain">wso2.esb.domain</parameter>
  • 指定用于传送集群消息的主机的 IP 地址(不是 localhost 或主机名)。
<parameter name="localMemberHost">192.168.1.128</parameter>
  • 指定用于传送集群消息的端口。此端口号不受<PRODUCT_HOME>/repository/conf/carbon.xml中指定的端口偏移值的影响。如果此端口号已分配给另一台服务器,则集群框架会自动增加此端口号。但是,如果两台服务器在同一台机器上运行,必须确保为每台服务器设置一个唯一的端口。
<parameter name="localMemberPort">4100</parameter>
  • 指定知名成员。
    在以下示例中,知名成员是工作程序节点。这里的hostName值是主机的 IP 地址。WKA 工作节点的port值必须与其相同 localMemberPort (在本例中为 4200)。虽然此示例仅表示一个知名成员,但建议在此至少添加两个知名成员。这样做是为了确保集群具有高可用性。
<members>
	<member>
		<hostName>192.168.1.128</hostName>
		<port>4100</port> 
	</member>
    <member>
		<hostName>192.168.1.129</hostName>
		<port>4101</port> 
	</member>
	<member>
		<hostName>192.168.1.130</hostName>
		<port>4102</port> 
	</member>
</members>
  • 更改以下集群属性。
<parameter name="properties">
    <property name="backendServerURL" value="https://$hostName:$httpsPort/services/"/>
    <property name="mgtConsoleURL" value="https://$hostName:$httpsPort/"/>
</parameter>

3、配置 HostName

编辑 <PRODUCT_HOME>/repository/conf/carbon.xml

<HostName>192.168.1.128</HostName>
<MgtHostName>192.168.1.128</MgtHostName>

4、配置基于 SVN 的部署同步

启用基于 SVN 的部署同步,并将 AutoCommit 属性标记为 true。 为此,请编辑 <PRODUCT_HOME>/repository/conf/carbon.xml文件,如下所示。

<DeploymentSynchronizer>
	<Enabled>true</Enabled>
	<AutoCommit>true</AutoCommit>
	<AutoCheckout>true</AutoCheckout>
	<RepositoryType>svn</RepositoryType>
	<SvnUrl>svn://192.168.1.130/wso2</SvnUrl>
	<SvnUser>wso2</SvnUser>
	<SvnPassword>123456</SvnPassword>
	<SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
</DeploymentSynchronizer>

WSO2 配置 SVN: Configuring+SVN-Based+Deployment+Synchronizer

5、配置端口偏移

<PRODUCT_HOME>/repository/conf/carbon.xml文件中,可以指定端口偏移值。仅适用于在同一服务器上托管多个 WSO2 产品的情况。

<Ports>
    ...
    <Offset>0</Offset>
    ...
</Ports>

6、将主机名映射到 IP

如果需要,可以将以下主机条目添加到 DNS 或集群所有节点中的 “/etc/hosts” 文件(在 Linux 中)。 可以映射数据库服务器的 IP 地址。 本例中使用 mysql 作为数据库服务器,所以 <MYSQL-DB-SERVER-IP>是数据库服务器的实际 IP 地址。

<IP-of-MYSQL-DB-SERVER>   carbondb.mysql-wso2.com

7、仅允许通过负载均衡器访问管理控制台

如果需要,可以通过编辑 <PRODUCT_HOME>/repository/conf/tomcat/catalina-server.xml文件,配置 HTTP/HTTPS 代理端口以通过负载均衡器进行通信,如下所示。

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="9763"
    proxyPort="xxxx"
    ...
    />
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="9443"
    proxyPort="xxxx"
    ...
    />

五、配置工作节点

1、设置集群配置

编辑 <PRODUCT_HOME>/repository/conf/axis2/axis2.xml文件如下。

  • 为此节点启用集群。
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
  • 将成员资格方案设置 wka 为启用众所周知的地址注册方法(此节点将向我们稍后定义的 WKA 成员发送集群启动消息)。
<parameter name="membershipScheme">wka</parameter>
  • 指定此节点将加入的集群的名称。
<parameter name="domain">wso2.esb.domain</parameter>
  • 指定用于传送集群消息的主机的 IP 地址(不是 localhost 或主机名)。
<parameter name="localMemberHost">192.168.1.129</parameter>
  • 指定用于传送集群消息的端口。如果此节点与管理节点或其他工作节点位于同一台服务器上,请将其设置为唯一值,例如工作节点 1 和 2 为 4000 和 4001。此端口号不受 中端口偏移量的影响 carbon.xml。如果这个端口号已经分配给另一个服务器,集群框架会自动增加这个端口号。
<parameter name="localMemberPort">4101</parameter>
  • <parameter name="properties">通过在元素 内添加以下属性,将子域定义为工作者 :
<property name="subDomain" value="worker"/>
  • hostName通过提供和 localMemberPort 值来指定知名成员。这里的hostName值是主机的 IP 地址。
    在以下示例中,知名成员是管理器节点。定义管理器节点很有用,因为 部署同步器需要它 以有效的方式运行。部署同步器使用此配置来识别管理器并跨集群的节点同步部署工件。
<members>
	<member>
		<hostName>192.168.1.128</hostName>
		<port>4100</port> 
	</member>
    <member>
		<hostName>192.168.1.129</hostName>
		<port>4101</port> 
	</member>
	<member>
		<hostName>192.168.1.130</hostName>
		<port>4102</port> 
	</member>
</members>

2、配置 carbon.xml

配置<PRODUCT_HOME>/repository/conf/carbon.xml文件以使集群配置与产品相匹配。

  • 配置 HostName。编辑<PRODUCT_HOME>/repository/conf/carbon.xml文件。
<HostName>192.168.1.129</HostName>
<MgtHostName>192.168.1.128</MgtHostName>

3、配置基于 SVN 的部署同步

启用基于 SVN 的部署同步,并将 AutoCommit 属性标记为 false。 为此,请编辑 <PRODUCT_HOME>/repository/conf/carbon.xml文件,如下所示。

<DeploymentSynchronizer>
    <Enabled>true</Enabled>
    <AutoCommit>false</AutoCommit>
    <AutoCheckout>true</AutoCheckout>
    <RepositoryType>svn</RepositoryType>
    <SvnUrl>svn://192.168.1.130/wso2</SvnUrl>
    <SvnUser>wso2</SvnUser>
    <SvnPassword>123456</SvnPassword>
    <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
</DeploymentSynchronizer>

4、指定端口偏移

<PRODUCT_HOME>/repository/conf/carbon.xml文件中,可以指定端口偏移值。仅适用于在同一服务器上托管多个 WSO2 产品的情况。

<Ports>
    ...
    <Offset>0</Offset>
    ...
</Ports>

6、创建第二个工作节点

通过刚刚配置为工作程序节点的 WSO2 产品的副本来创建第二个工作程序节点,并在 <PRODUCT_HOME>/repository/conf/axis2/axis2.xml文件中更改以下内容。

<parameter name="localMemberHost">192.168.1.130</parameter>
<parameter name="localMemberPort">4102</parameter>

配置 HostName。编辑<PRODUCT_HOME>/repository/conf/carbon.xml文件。

<HostName>192.168.1.130</HostName>
<MgtHostName>192.168.1.128</MgtHostName>

六、测试集群

1、启动管理节点

./wso2server.sh -Dsetup

2、启动工作节点

./wso2server.sh -DworkerNode= true

3、测试

启动所有节点,工作节点启动后,管理节点的日志可以看到成员加入的日志消息。

进入管理控制台:https://192.168.1.128:8443
放一个碳应用上去


postman 测试,请求 8000 端口,nginx 进行负载均衡


SVN 文件

以上是关于WSO2 ESB 5.0.0 集群配置的主要内容,如果未能解决你的问题,请参考以下文章

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

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

WSO2 ESB 5.0.0 最低高可用性部署

WSO2 ESB 5.0.0 最低高可用性部署

WSO2 ESB 5.0.0 配置 MySQL 数据源

WSO2 ESB 5.0.0 配置 MySQL 数据源