Docker 停靠的Elasticsearch节点不适用于Liferay 7.1
Liferay启动时无法识别我的Elasticsearch群集。以下是我的docker compose配置:Docker 停靠的Elasticsearch节点不适用于Liferay 7.1,docker,
elasticsearch,liferay,liferay-7,liferay-7.1,Docker,
elasticsearch,Liferay,Liferay 7,Liferay 7.1,Liferay启动时无法识别我的Elasticsearch群集。以下是我的docker compose配置: version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 container_name: es01 environment: - node.name=es01 - discovery.seed_hosts=es02
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- cluster.name=liferay-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- "9299:9200"
- "9399:9300"
expose:
- "9299"
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- cluster.name=liferay-cluster2
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9298:9200"
- "9398:9300"
expose:
- "9298"
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
com.liferay.portal.search.elasticsearch6.configuration.ElasticsearchConfiguration.config文件内容
transportAddresses="127.0.0.1:9299"
logExceptionsOnly="false"
operationMode="REMOTE"
indexNamePrefix="myprefix-"
clusterName="liferay-cluster"
启动docker compose时,我可以访问上的两个ES群集:和
但是,当liferay启动时,它无法访问ES节点:
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{vUNCF_HNRtu_tYUjkqhXvg}{127.0.0.1}{127.0.0.1:9299}]]
有人尝试过这种配置吗?任何帮助都将不胜感激。谢谢:-)默认情况下,elasticsearch仅将传输端口和http端口绑定到本地主机(本地)。所以docker暴露的端口不工作。您需要绑定到特定ip,或对所有或站点使用0.0.0.0,如下所述:
请记住,启用此选项将在生产模式下启动节点,然后进行几次引导检查。如果您需要有关此主题的更多信息,请参阅文档或进行搜索。我找到了解决方案。如果有人试图这样做,这可能会有所帮助 正如我在对@ibexit的评论中所说,我正在同一台机器上运行两个停靠的ES集群和两个独立的Liferay门户(不在容器中)(开发模式) 我更改了Liferay OSGi配置文件中的传输地址,因为它必须与运行ES的传输tcp端口匹配:
transportAddresses="127.0.0.1:9301"
logExceptionsOnly="false"
operationMode="REMOTE"
indexNamePrefix="myprefix-"
clusterName="liferay-cluster"
我还在我的ES群集中添加了属性network.publish_host=127.0.0.1
(没有此属性,Liferay无法检测ES节点)
这是我的docker compose.yml:
使用ES 6.1.4
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:6.1.4
container_name: es01
environment:
- node.name=es01
- cluster.name=liferay-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- transport.tcp.port=9301
- network.publish_host=127.0.0.1
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- "9201:9200"
- "9301:9301"
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:6.1.4
container_name: es02
environment:
- node.name=es02
- cluster.name=liferay-cluster2
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- transport.tcp.port=9302
- network.publish_host=127.0.0.1
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9202:9200"
- "9302:9302"
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
network.publish\u host
成功了 我的本地工作设置,docker compose和docker容器中的两个elasticsearch节点以及主机上运行的Liferay。我正在使用elasticsearch 6.8.2图像,根据docker hub提供的url进行修改
我正在使用gradle工作区。所以我已经配置:configs/local/osgi/configs/com.liferay.portal.search.elasticsearch6.configuration.ElasticsearchConfiguration.config
:
operationMode=REMOTE
clusterName=docker-cluster
transportAddresses=127.0.0.1:9300,127.0.0.1:9301
我已经用transportAddresses
配置消磨了很多时间,因为有文档记录使用方括号和方引号transportAddresses=[“192.168.1.1:9300”,“192.168.1.2:9300”]
但它不起作用。上面列出的配置包含实际的工作配置语法
我的docker compose.yml
:
version: '3.7'
services:
es01:
container_name: "es01"
image: ktorek/liferay7-elasticsearch:latest
environment:
- node.name=es01
- node.data=true
- cluster.name=docker-cluster
- xpack.security.enabled=false
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=es02"
ports:
- "9300:9300"
- "9200:9200"
networks:
- mynetwork
volumes:
- es01-data:/usr/share/elasticsearch/data
ulimits:
memlock:
soft: -1
hard: -1
es02:
container_name: "es02"
image: ktorek/liferay7-elasticsearch:latest
environment:
- node.name=es02
- node.data=true
- cluster.name=docker-cluster
- xpack.security.enabled=false
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=es01"
ports:
- "9301:9300"
- "9201:9200"
networks:
- mynetwork
volumes:
- es02-data:/usr/share/elasticsearch/data
ulimits:
memlock:
soft: -1
hard: -1
networks:
mynetwork:
name: mynetwork
driver: bridge
ipam:
config:
- subnet: 172.30.29.0/24
根据DXP7.1-elasticsearch 7.1与7.1 DXP不兼容。这可能是一个原因,请尝试使用6.1.X或6.5,如果您有FixPack5+我用指定的ES版本更新了我的docker compose(我对ES 6.1.4图像进行了docker拉取),但问题仍然存在。Liferay在启动时显示相同的错误。您的Liferay是否也在容器中运行?您能从liferay主机中获取弹性体吗?liferay未在容器中运行。ES运行得很好,因为它在我的浏览器上返回json响应。谢谢,但我是在本地开发模式下运行的。因此,它是一个只在一台机器上具有多个节点的开发集群