一、Worker / Manager 分离的集群部署模式二、配置负载均衡器
1、Nginx 安装
Nginx 注意事项 2、Nginx 配置3、创建 ssl 证书 三、本地 SVN 服务器配置四、配置管理节点
1、下载 WSO2 ESB2、设置集群配置3、配置 HostName4、配置基于 SVN 的部署同步5、配置端口偏移6、将主机名映射到 IP7、仅允许通过负载均衡器访问管理控制台 五、配置工作节点
1、设置集群配置2、配置 carbon.xml3、配置基于 SVN 的部署同步4、指定端口偏移6、创建第二个工作节点 六、测试集群
1、启动管理节点2、启动工作节点3、测试 一、Worker / Manager 分离的集群部署模式
在此模式中,有三个 WSO2 ESB 节点:1 个节点充当管理节点,2 个节点充当工作节点,以实现高可用性和服务请求。 在此模式中,我们允许通过外部负载均衡器访问管理控制台。 此外,服务请求通过此负载均衡器定向到工作节点。 下图描述了此集群部署场景将遵循的示例模式。
以此模式配置WSO2集群配置时,请在配置文件 axis2.xml 中使用特定 IP 地址而不是 localhost 或主机名。
在这里,我们使用三个节点作为知名成员,一个是管理节点,另外两个是工作节点。 始终建议使用至少两个知名成员,以防止在某个知名成员关闭时重新启动集群中的所有节点。
负载均衡器自动在多个 WSO2 产品实例之间分配传入流量。它能够在集群中实现更高级别的容错,并提供分配流量所需的负载平衡。
本实例用了 3 台虚拟机,这里 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/nginxmkdir sslcd sslopenssl genrsa -des3 -out wrk.key 1024openssl req -new -key wrk.key -out wrk.csrcp wrk.key wrk.key.orgopenssl rsa -in wrk.key.org -out wrk.keyopenssl x509 -req -days 365 -in wrk.csr -signkey wrk.key -out wrk.crt
三、本地 SVN 服务器配置Linux 配置 SVN 服务器
四、配置管理节点 1、下载 WSO2 ESB 下载并解压缩 WSO2 ESB 二进制发行版。将提取的目录为
编辑
为此节点启用集群:
将成员资格方案设置 wka 为启用众所周知的地址注册方法(该节点向我们稍后定义的 WKA 成员发送集群启动消息)。
指定此节点将加入的集群的名称。
指定用于传送集群消息的主机的 IP 地址(不是 localhost 或主机名)。
指定用于传送集群消息的端口。此端口号不受 指定知名成员。 更改以下集群属性。 编辑 启用基于 SVN 的部署同步,并将 AutoCommit 属性标记为 true。 为此,请编辑 WSO2 配置 SVN: Configuring+SVN-based+Deployment+Synchronizer 在 如果需要,可以将以下主机条目添加到 DNS 或集群所有节点中的 “/etc/hosts” 文件(在 Linux 中)。 可以映射数据库服务器的 IP 地址。 本例中使用 MySQL 作为数据库服务器,所以 如果需要,可以通过编辑 编辑 为此节点启用集群。 将成员资格方案设置 wka 为启用众所周知的地址注册方法(此节点将向我们稍后定义的 WKA 成员发送集群启动消息)。 指定此节点将加入的集群的名称。 指定用于传送集群消息的主机的 IP 地址(不是 localhost 或主机名)。 指定用于传送集群消息的端口。如果此节点与管理节点或其他工作节点位于同一台服务器上,请将其设置为唯一值,例如工作节点 1 和 2 为 4000 和 4001。此端口号不受 中端口偏移量的影响 carbon.xml。如果这个端口号已经分配给另一个服务器,集群框架会自动增加这个端口号。 hostName通过提供和 localMemberPort 值来指定知名成员。这里的hostName值是主机的 IP 地址。 配置 配置 HostName。编辑 启用基于 SVN 的部署同步,并将 AutoCommit 属性标记为 false。 为此,请编辑 在 通过刚刚配置为工作程序节点的 WSO2 产品的副本来创建第二个工作程序节点,并在 配置 HostName。编辑 ./wso2server.sh -Dsetup ./wso2server.sh -DworkerNode= true 启动所有节点,工作节点启动后,管理节点的日志可以看到成员加入的日志消息。 SVN 文件
在以下示例中,知名成员是工作程序节点。这里的hostName值是主机的 IP 地址。WKA 工作节点的port值必须与其相同 localMemberPort (在本例中为 4200)。虽然此示例仅表示一个知名成员,但建议在此至少添加两个知名成员。这样做是为了确保集群具有高可用性。
在以下示例中,知名成员是管理器节点。定义管理器节点很有用,因为 部署同步器需要它 以有效的方式运行。部署同步器使用此配置来识别管理器并跨集群的节点同步部署工件。
进入管理控制台:https://192.168.1.128:8443
放一个碳应用上去
postman 测试,请求 8000 端口,nginx 进行负载均衡