elasticsearch,liferay,liferay-7,liferay-7.1,Docker,elasticsearch,Liferay,Liferay 7,Liferay 7.1" /> elasticsearch,liferay,liferay-7,liferay-7.1,Docker,elasticsearch,Liferay,Liferay 7,Liferay 7.1" />

Docker 停靠的Elasticsearch节点不适用于Liferay 7.1

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

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
      - 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响应。谢谢,但我是在本地开发模式下运行的。因此,它是一个只在一台机器上具有多个节点的开发集群