docker-compose搭建ES集群

2 篇文章 0 订阅
2 篇文章 0 订阅

步骤:

1.两台以上主机,可以虚拟机等等,本文以两个节点为例

2.主机配置:vi  /etc/sysctl.conf  在最后一行添加
   vm.max_map_count = 262144 

   qw!保存退出

  执行systemctl -p检查

2.两台主机分别安装docker,jdk

3.在两台主机上用docker拉取ES镜像

4.创建配置文件elasticsearch.yml

比如在本地/home/ES目录下创建elasticsearch.yml,挂载到容器默认目录/usr/share/elasticsearch/config/。在docker-compose.yml挂载就可以。主机1的elasticsearch.yml:

cluster.name: "elasticsearch-cluter"

node.name: "es-node1"

node.master: true                                                      //master节点设为true,其他为false

node.data: true

network.host: 0.0.0.0                                         //默认随机分配一个本机的ip给容器,并用127.0.0.1或者0.0.0.0可以访问该容器

network.publish_host: 192.168.0.1              //绑定本机的ip给容器,以此为例

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.0.1:9300","192.168.0.2:9300"] //注意如果不使用network.publish_host绑定此ip,那么跨主机的容器之间相互发现不了,因为network.host已经随机分配了一个,但和这里的不一致

cluster.initial_master_nodes: "es-node1" //需与hostname保持一致

http.cors.enabled: true

http.cors.allow-origin: "*"

主机2的elasticsearch.yml:

cluster.name: "elasticsearch-cluter"

node.name: "es-node2"

node.master: false                                             

node.data: true

network.host: 0.0.0.0                       

network.publish_host: 192.168.0.2            

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.0.1:9300","192.168.0.2:9300"] 

cluster.initial_master_nodes: "es-node1"

http.cors.enabled: true

http.cors.allow-origin: "*"

5.主机1的docker-compose.yml:

version: '2.2'

services:

es01:                                                            //服务名

        image: elasticsearch:7.4.0                //镜像名

        container_name: es01                       //容器名

        environment:

             bootstrap.memory_lock: "true"    //注意true要加引号

             ES_JAVA_OPTS: -Xms256m -Xmx256m

        ulimits:

             memlock:

                  soft: -1

                  hard: -1

        volumes:

             - /home/ES/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml         //:前的目录与上文一致

       ports:

           - 9200:9200

           - 9300:9300

       hostname: es-node1

主机2的docke-compose.yml:

version: '2.2'

services:

es02:                                                            //服务名

        image: elasticsearch:7.4.0                //镜像名

        container_name: es02                       //容器名

        environment:

             bootstrap.memory_lock: "true"    //注意true要加引号

             ES_JAVA_OPTS: -Xms256m -Xmx256m

        ulimits:

             memlock:

                  soft: -1

                  hard: -1

        volumes:

             - /home/ES/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml         //:前的目录与上文一致

       ports:

           - 9200:9200

           - 9300:9300

       hostname: es-node2

6.分别在两主机的docker-compose.yml所在目录执行:docker-compose.yml即可

注意点:

两主机的配置除了名称以外尽量一致

注意在两主机里的容器相互访问与一主机里的容器相互访问不同,更不能用一个docker-compose.yml启动不同主机的容器

 

 

好的,下面是使用docker-compose搭建ES集群的步骤: 1. 首先,在你的机器上安装DockerDocker Compose。 2. 创建一个新的文件夹,用于存储docker-compose.yml文件和ES配置文件。 3. 在该文件夹中创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中: ``` version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 container_name: elasticsearch environment: - node.name=es-node1 - cluster.name=es-docker-cluster - discovery.seed_hosts=es-node1,es-node2,es-node3 - cluster.initial_master_nodes=es-node1,es-node2,es-node3 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet elasticsearch2: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 container_name: elasticsearch2 environment: - node.name=es-node2 - cluster.name=es-docker-cluster - discovery.seed_hosts=es-node1,es-node2,es-node3 - cluster.initial_master_nodes=es-node1,es-node2,es-node3 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata2:/usr/share/elasticsearch/data networks: - esnet elasticsearch3: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 container_name: elasticsearch3 environment: - node.name=es-node3 - cluster.name=es-docker-cluster - discovery.seed_hosts=es-node1,es-node2,es-node3 - cluster.initial_master_nodes=es-node1,es-node2,es-node3 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata3:/usr/share/elasticsearch/data networks: - esnet volumes: esdata1: driver: local esdata2: driver: local esdata3: driver: local networks: esnet: ``` 这个文件定义了三个ES节点,每个节点都有自己的容器,并且它们都属于同一个网络。 4. 创建一个名为elasticsearch.yml的文件,并将以下内容复制到文件中: ``` cluster.name: "es-docker-cluster" network.host: 0.0.0.0 discovery.seed_hosts: elasticsearch,elasticsearch2,elasticsearch3 cluster.initial_master_nodes: elasticsearch,elasticsearch2,elasticsearch3 ``` 这个文件定义了ES节点的配置信息。 5. 运行以下命令启动ES集群: ``` docker-compose up -d ``` 这个命令将启动三个ES节点,并在后台运行它们。 6. 等待片刻,然后运行以下命令来查看ES集群的状态: ``` curl http://localhost:9200/_cat/nodes?v ``` 如果一切正常,你应该能够看到三个节点的状态信息。 这样,一个使用docker-compose搭建ES集群就创建完成了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值