【问题标题】:mod_jk hybris loadbalancermod_jk hybris 负载均衡器
【发布时间】:2016-04-12 19:50:52
【问题描述】:

我有两台 apache 2.4 网络服务器和两台 hybris 5.7.3 应用服务器。我决定在两个带有应用服务器负载平衡的 Web 服务器中配置 mod_jk 1.2.41。应用服务器只能在 https 上运行,谁能帮我为 hybris 配置 mod_jk。

感谢@Benoit 的快速回复。这是配置:

httpd.conf 文件

LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

    <VirtualHost *>
      ServerAlias www.thaitrade.dev
      DocumentRoot /var/www
      ServerName webserverurl
      JkMount /* loadbalancer
      JkMount /status/* status
    </VirtualHost>

更新 workers.properties 配置

 # workers to contact, that's what you have in your httpd.conf
    worker.list=loadbalancer,status

    #setup node1
    worker.worker1.port=8009
    worker.worker1.host=hybrisserver1.ip
    worker.worker1.type=ajp13
    worker.worker1.lbfactor=50

    #setup node2
    worker.worker2.port=8009
    worker.worker2.host=hybrisserver2.ip
    worker.worker2.type=ajp13
    worker.worker2.lbfactor=100

    #setup the load-balancer
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=worker1,worker2
    worker.loadbalancer.sticky_session=True
    #worker.loadbalancer.sticky_session_force=True

    # Status worker for managing load balancer
    worker.status.type=status

并将jvmRoute添加到hybrisserver1中的server.xml

 <Engine name="Catalina" defaultHost="localhost"  jvmRoute="worker1">

在 hybrisserver2 中将 jvmRoute 添加到 server.xml

<Engine name="Catalina" defaultHost="localhost"  jvmRoute="worker2">

我在 server.xml 中额外添加了下面的配置

 <Connector protocol="AJP/1.3" port="8010" proxyPort="443" scheme="https" secure="true" />

创建了一个新的 ssl 虚拟主机配置

    Listen 443 https

    <VirtualHost *:443>
    SSLEngine on
    JkMountCopy On
    SSLCertificateFile  /etc/httpd/conf.d/certificate.crt
    SSLCertificateKeyFile  /etc/httpd/conf.d/certificate.key
     </VirtualHost>

以下是 mod_jk 错误

   [Wed Apr 13 19:29:24 2016] [17689:140131769874496] [debug] jk_translate::mod_jk.c (3855): missing uri map for webservername:/hmc
    [Wed Apr 13 19:29:24 2016] [17689:140131769874496] [debug] jk_map_to_storage::mod_jk.c (4023): missing uri map for webservername:/hmc
    [Wed Apr 13 19:29:25 2016] [17826:140131769874496] [debug] jk_child_init::mod_jk.c (3474): Initialized mod_jk/1.2.41
    [Wed Apr 13 19:29:27 2016] [17689:140131769874496] [debug] jk_translate::mod_jk.c (3855): missing uri map for webservername:/hac
    [Wed Apr 13 19:29:27 2016] [17689:140131769874496] [debug] jk_map_to_storage::mod_jk.c (4023): missing uri map for webservername:/hac

这是我的配置。 我没有收到 ssl 证书。暂时我会生成自签名证书,你能指导我如何将 ssl 证书添加到 mod_jk 配置中,我还需要在workers.properties 文件中添加新的worker 和worker 端口吗?

【问题讨论】:

  • 到目前为止你有什么尝试? SSL 证书在哪里卸载?
  • 对我来说至少对 HTTP 来说似乎不错,之后我们会看到 HTTPS,你有什么错误?您在 server.xml 文件中添加的 conf 也不需要。
  • @BenoitVanalderweireldt,但我们只有 https 站点,我做了一些更改。
  • 您的 SSL 证书在哪里配置?
  • 嗨@BenoitVanalderweireldt,问题更新了,你可以检查一下

标签: mod-jk hybris


【解决方案1】:

嗨@BenoitVanalderweireldt,删除了代理端口并在 server.xml 中添加了 jvmRoute,还在 ssl 配置中添加了 x-forwarded-proto。就是这样,配置现在正在工作。感谢您的大力支持

【讨论】:

  • 您确定 Apache 和 Tomcat 正在使用 mod_dk 进行通信吗?你能分享你的 mod_jk 日志吗?
  • 嗨@BenoitVanalderweireldt,我发现ssl 页面无法正常工作,所以我寻找解决方案。有些网站说配置tomcat集群,有些说配置tomcat会话复制。我已经使用 nfs 共享和 jgroups 配置了 hybris 集群 i 应用程序级别。 .我的疑问是我是否需要配置 tomcat 集群或 tomcat 会话复制以及 ajp 属性呢?
  • 除非需要,否则您不必配置 Tomcat 会话复制。什么有效,什么无效?我通常在 Apache 中卸载 SSL 证书并添加“X-Forwarded-Proto”标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2023-04-02
相关资源
最近更新 更多