docker-compose部署ES伪集群,cerebro监控集群

1. 前言

当有且仅有一台虚拟机的情况下,又想体验ES集群,就可以试一下使用docker-compose部署一个ES伪集群。

2. 部署ES

2.1 修改linux系统权限

# 往/etc/sysctl.conf添加vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
# 执行命令,使配置生效
sysctl -p

2.2 运行 docker-compose.yaml

# docker-compose.yaml
version: '1.0'
services:
  es01:
    image: elasticsearch:7.12.1
    container_name: es01
    restart: always
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ELASTIC_PASSWORD=es123456"
    volumes:
      - data01:/usr/share/elasticsearch/data
      - plugins01:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
    networks:
      - elastic

  es02:
    image: elasticsearch:7.12.1
    container_name: es02
    restart: always
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ELASTIC_PASSWORD=es123456"
    volumes:
      - data02:/usr/share/elasticsearch/data
      - plugins02:/usr/share/elasticsearch/plugins
    ports:
      - 9201:9200
    networks:
      - elastic

  es03:
    image: elasticsearch:7.12.1
    container_name: es03
    restart: always
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ELASTIC_PASSWORD=es123456"
    volumes:
      - data03:/usr/share/elasticsearch/data
      - plugins03:/usr/share/elasticsearch/plugins
    ports:
      - 9202:9200
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local
  plugins01:
    driver: local
  plugins02:
    driver: local
  plugins03:
    driver: local

networks:
  elastic:
    driver: bridge

# 运行
docker-compose up -d
# 查看
docker-compose ls
[root@192 es]# docker-compose ls
NAME                STATUS              CONFIG FILES
es                  running(3)          /deploy/es/docker-compose.yaml

# 或者
docker ps |grep elasticsearch
[root@192 es]# docker ps |grep elasticsearch
ed644e91e74b   elasticsearch:7.12.1   "/bin/tini -- /usr/l…"   10 minutes ago   Up 10 minutes   9300/tcp, 0.0.0.0:9201->9200/tcp, :::9201->9200/tcp                                    es02
1d54eb78601b   elasticsearch:7.12.1   "/bin/tini -- /usr/l…"   10 minutes ago   Up 10 minutes   9300/tcp, 0.0.0.0:9202->9200/tcp, :::9202->9200/tcp                                    es03
c900e6b79827   elasticsearch:7.12.1   "/bin/tini -- /usr/l…"   10 minutes ago   Up 10 minutes   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp                                    es01

# 表示es的容器已经部署好了。

2.3 添加分词器

### 1.可以最开始制作带分词器的镜像,然后将yaml文件中的image改为该镜像即可。该步骤在<<k8s 部署ES集群>>中有提及。

### 2.在创建好容器之后,再添加分词器。下面是步骤:

# 下载
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
# 解压
unzip elasticsearch-analysis-ik-7.12.1.zip -d ./ik/
# 复制到容器中
docker cp ./ik/ es01:/usr/share/elasticsearch/plugins
docker cp ./ik/ es02:/usr/share/elasticsearch/plugins
docker cp ./ik/ es03:/usr/share/elasticsearch/plugins

# 重启容器
# 在docker-compose.yaml文件路径下
docker-compose restart
# 通用
docker restart es01 es02 es03

# 测试分词器是否生效
curl -XGET "http://192.168.255.132:9200/_analyze?pretty" -H 'Content-Type: application/json' -d '{"text": "今天天气真好","tokenizer": "ik_max_word"}'
# 有如下返回,则表示分词器生效了。
{
  "tokens" : [
    {
      "token" : "今天天气",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "今天",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "天天",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "天气",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "真好",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 4
    }
  ]
}

2.4 简单测试

# 访问路径: ip:port ;将ip替换为当前宿主机的ip,port为9200、9201、9202任意一个都可以
# 查看节点
curl -X GET "http://192.168.255.132:9200/_cat/nodes?v"
# 查看健康
curl -X GET "http://192.168.255.132:9200/_cluster/health?pretty"
# 添加索引
curl -X PUT "http://192.168.255.132:9200/my_index"
# 插入文档
curl -X POST "http://192.168.255.132:9200/my_index/_doc/1" -H "Content-Type: application/json" -d '{"title": "测试文档","content": "这是一个测试文档。"}'
# 搜索文档
curl -X GET "http://192.168.255.132:9200/my_index/_search?q=测试文档"
# 删除索引
curl -X DELETE "http://192.168.255.132:9200/my_index"

3. 部署cerebro

# 拉取镜像
docker pull lmenezes/cerebro
# docker run 运行
docker run -d -p 9002:9000 --restart=unless-stopped --name cerebro -v /etc/localtime:/etc/localtime -v cerebro:/opt/cerebro -h cerebro lmenezes/cerebro
#访问
ip:9002

在页面添加ES的访问地址即可。
在这里插入图片描述
进入后,便可以看见集群的监控面板了。
在这里插入图片描述

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值