第 5 章 启动集群 JBoss EAP
5.1. 启动集群的 JBoss EAP AMI(无需 mod_cluster 和 VPC) 复制链接链接已复制到粘贴板!
本主题列出了在没有 mod_cluster 和 VPC 的情况下启动集群 JBoss EAP AMI 的步骤。
- 您可以使用镜像提供的示例配置脚本。
如需了解有关为 Amazon EC2 配置 JBoss EAP 子系统的信息,请参阅将 JBoss EAP 子系统配置为在云平台上工作。
要在单机服务器实例上启动集群的 JBoss EAP AMI,您可以使用示例 /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml 文件,其中包含预配置的 S3_PING JGroups 堆栈。如需更多信息,请参阅与 JGroups 可靠的组通信中的 S3_PING。此 standalone-ec2-ha.xml 配置文件必须从 /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/ 复制到 JBoss EAP 配置目录 /opt/rh/eap7/root/usr/share/wildfly/standalone/configuration/。然后,您必须将以下行添加到 JBoss EAP 服务配置文件中:
WILDFLY_SERVER_CONFIG=standalone-ec2-ha.xml
需要为 undertow 子系统中的每个单机服务器实例设置唯一的 instance-id。可以通过编辑 standalone 的值。例如,您可以使用管理 CLI 设置 -ec2-ha.xml 文件或使用管理 CLI 手动设置 instance- idinstance-id,如下所示:
/subsystem=undertow:write-attribute(name=instance-id,value={${jboss.jvmRoute}})
然后,可以使用 JAVA_OPTS 变量在 standalone.conf 中指定 jboss.jvmRoute 的值。
EC2 配置文件中的 jgroups 子系统需要一些 S3_PING 特定属性来发现群集成员。您必须指定要用于发现的 S3、secret access key 和 S3 存储桶的访问密钥。这些属性可以指定为 Java 选项,或者通过编辑或 CLI 直接放入 XML 文件中。
您需要创建一个 S3 存储桶来发现。如需更多信息,请参阅 Amazon Simple Storage Service 文档。您可能还必须配置所需的权限。JGroups 堆栈需要绑定到 IP 地址,用于与其他节点通信。这可以通过添加 Java 选项以及 S3 Java 选项到 /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf 文件来完成。例如,如果专用 IP 地址为 10.10.10.10,则需要在 standalone.conf 文件中添加以下行:
JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.private=10.10.10.10"
您可以部署一个示例应用: /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war 并观察 /opt/rh/eap7/root/usr/share/wildfly/standalone/log/server.log 中的日志,查看 JBoss EAP 服务器是否已创建了集群。
对于域控制器实例
-
将
domain-ec2.xml文件从/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs复制到 JBoss EAP 配置目录中。 在适当的服务配置文件中设置以下变量:
WILDFLY_SERVER_CONFIG=domain-ec2.xml WILDFLY_HOST_CONFIG=host-master.xml在
host-master.xml文件中添加 S3 域控制器发现配置:<local> <discovery-options> <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery"> <property name="access-key" value="S3_ACCESS_KEY"/> <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/> <property name="location" value="S3_BUCKET_NAME"/> </discovery-option> </discovery-options> </local>- 配置用户,并将用户的机密值添加到主机控制器实例。如需更多信息,请参阅《JBoss EAP 配置指南 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/configuration_guide/#create_a_managed_domain_on_two_machines 》中的在两台机器上创建受管域。
对于主机控制器实例
在适当的服务配置文件中设置以下变量:
WILDFLY_HOST_CONFIG=host-slave.xml在
host-slave.xml文件中添加 S3 域控制器发现配置:<remote security-realm="ManagementRealm"> <discovery-options> <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery"> <property name="access-key" value="S3_ACCESS_KEY"/> <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/> <property name="location" value="S3_BUCKET_NAME"/> </discovery-option> </discovery-options> </remote>注意
在网络掩码小于 24 位或跨多个子网的子网中运行 JBoss EAP 群集会使每个群集成员获取唯一的服务器对等 ID。
自动缩放 Amazon EC2 功能可用于 JBoss EAP 群集节点。不过,请确保它在部署前经过测试。您应该确保您的特定工作负载扩展到所需的节点数量,并确保性能满足您计划使用的实例类型的需求,不同的实例类型会收到 EC2 云资源的不同共享。
此外,实例本地性和当前网络/存储/主机计算机/RDS 利用率可能会影响群集性能。使用您预期的实时负载测试,并尝试考虑意外状况。
Amazon EC2 缩减操作会在没有任何机会正常关闭节点的情况下终止节点,因为可能会中断一些事务,其他集群节点和负载均衡器则需要时间来故障转移。这可能会影响您的应用程序用户体验。
建议您通过从 mod_cluster 管理界面禁用服务器,直到完成的会话完成,手动缩减应用群集,或者通过 SSH 访问实例或红帽 JBoss 运营网络安全地关闭 JBoss EAP 实例。
测试您的缩减流程不会对用户体验造成负面影响。特定的工作负载、负载均衡器和设置可能需要额外的测量结果。