HCRM博客

CentOS7下WildFly配置指南

CentOS 7 环境下 WildFly 应用服务器部署与优化指南

作为长期管理生产环境的运维人员,我深知在 CentOS 7 上部署和优化 WildFly(原 JBoss AS)对业务稳定性的重要性,以下分享经过验证的实践方案:

高效部署:基础与安全加固

CentOS7下WildFly配置指南-图1
# 安装 JDK (推荐 OpenJDK 11)
sudo yum install -y java-11-openjdk-devel
# 下载 WildFly (以 26.1.3.Final 为例)
wget https://github.com/wildfly/wildfly/releases/download/26.1.3.Final/wildfly-26.1.3.Final.tar.gz
tar xvf wildfly-*.tar.gz
sudo mv wildfly-* /opt/wildfly
# 创建专用系统用户
sudo useradd -r -s /sbin/nologin wildfly
sudo chown -R wildfly:wildfly /opt/wildfly
# 配置 SELinux 上下文 (关键安全步骤)
sudo semanage fcontext -a -t bin_t "/opt/wildfly/bin/.*"
sudo restorecon -Rv /opt/wildfly

配置文件关键修改 (/opt/wildfly/standalone/configuration/standalone.xml):

<!-- 修改绑定地址 -->
<interface name="public">
    <inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
<!-- 添加安全用户 (避免默认管理员漏洞) -->
<management>
    <security-realms>
        <security-realm name="ManagementRealm">
            <authentication>
                <local default-user="$local"/>
                <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
            </authentication>
        </security-realm>
    </security-realms>
</management>

深度性能调优实践

  1. JVM 参数调整 (standalone.conf):

    JAVA_OPTS="-Xms2G -Xmx2G -XX:MaxMetaspaceSize=512m"
    JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  2. 线程池优化 (standalone.xml):

    <subsystem xmlns="urn:jboss:domain:io:3.0">
     <worker name="default" task-max-threads="200"/>
    </subsystem>
    <subsystem xmlns="urn:jboss:domain:ee:4.0">
     <default-bindings context-service="java:jboss/ee/concurrency/context/default" 
                      managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
    </subsystem>
  3. 数据库连接池建议:

    <datasource jndi-name="java:/MyDS" pool-name="MyDS_Pool">
     <min-pool-size>10</min-pool-size>
     <max-pool-size>100</max-pool-size>
     <prefill>true</prefill>
     <flush-strategy>IdleConnections</flush-strategy>
    </datasource>

运维关键技巧

CentOS7下WildFly配置指南-图2
  • 日志管理: 定期使用 journalctl -u wildfly 检查 systemd 日志,配置 logging.properties 分割日志
  • 热部署: 将应用 WAR 包放入 /opt/wildfly/standalone/deployments/ 实现秒级更新
  • 端口冲突解决:sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload
  • 内存泄漏排查: 配合 jcmd <pid> GC.heap_dump /path/to/dump.hprof 分析

生产环境安全加固

# 禁用高危协议
sed -i 's/<http-upgrade enabled="true"/<http-upgrade enabled="false"/g' standalone.xml
# 配置 TLS 1.2+ 加密
keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -validity 365 -keystore server.keystore
<subsystem xmlns="urn:jboss:domain:undertow:10.0">
    <https-listener name="https" socket-binding="https" 
                   security-realm="SSLRealm" enable-http2="true"/>
</subsystem>

监控与高可用

  • Prometheus 监控集成: 启用 WildFly 的 MicroProfile Metrics 模块
  • 集群配置: 使用 standalone-ha.xml 配置模版,结合 mod_cluster 实现负载均衡
  • 健康检查端点:http://server:9990/health 对接 Kubernetes 探针

经验之谈: 在流量突增场景下,优先检查线程池阻塞情况而非盲目扩容,曾通过优化 org.jboss.as.threads 日志级别定位到第三方库的同步锁问题,将 TPS 从 120 提升至 2100。

系统服务文件示例 (/etc/systemd/system/wildfly.service):

[Unit]
Description=WildFly Application Server
After=syslog.target network.target
[Service]
User=wildfly
Group=wildfly
ExecStart=/opt/wildfly/bin/standalone.sh -c standalone-full.xml
Restart=on-failure
RestartSec=30s
LimitNOFILE=102642
[Install]
WantedBy=multi-user.target

部署完成后使用 sudo systemctl daemon-reload && sudo systemctl start wildfly 启动服务,持续观察 GC 日志和线程状态比被动响应故障更重要,建议每周检查一次 server.log 中的 WARN 级别信息,版本更新时务必在测试环境验证配置兼容性,特别是安全补丁的回归测试。

CentOS7下WildFly配置指南-图3

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/35595.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~