ElasticsSearch伪集群搭建
⚠️⚠️⚠️该教程基于docker- compose建立伪集群,仅适用于开发和测试中使用
1、建立项目目录及各配置文件。
- 首先创建一些需要映射的目录:
root@ubuntu:~# mkdir -p es/data
root@ubuntu:~# mkdir -p es/logs
root@ubuntu:~# ll es/
total 16
drwxr-xr-x 4 root root 4096 Jan 10 02:25 ./
drwxr-xr-x 4 root root 4096 Jan 10 02:25 ../
drwxr-xr-x 2 root root 4096 Jan 10 02:25 data/
drwxr-xr-x 2 root root 4096 Jan 10 02:25 logs/
root@ubuntu:~# - 然后创建docker-compose.yml配置文件
version: '3'
services:
es_node0:
image: elasticsearch:7.16.2
container_name: es_node0
privileged: true
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- $PWD/es_node0.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- $PWD/data/node0:/usr/share/elasticsearch/data
- $PWD/logs/node0:/usr/share/elasticsearch/logs
ports:
- 29200:9200
- 29300:9300
es_node1:
image: elasticsearch:7.16.2
container_name: es_node1
privileged: true
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- $PWD/es_node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- $PWD/data/node1:/usr/share/elasticsearch/data
- $PWD/logs/node1:/usr/share/elasticsearch/logs
ports:
- 29201:9200
- 29301:9301
es_node2:
image: elasticsearch:7.16.2
container_name: es_node2
privileged: true
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- $PWD/es_node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- $PWD/data/node2:/usr/share/elasticsearch/data
- $PWD/logs/node2:/usr/share/elasticsearch/logs
ports:
- 29202:9200
- 29302:9302
kibana:
image: kibana:7.16.2
container_name: kibana
environment:
- SERVER_NAME=kibana
- ELASTICSEARCH_HOSTS=["http://es_node0:9200","http://es_node1:9201","http://es_node2:9202"]
- XPACK_MONITORING_ENABLED=true
ports:
- 25601:5601
depends_on:
- es_node0
⚠️:因为我的防火墙限制这台机器仅20000-30000端口能开放,所以我的容器端口映射出来都是20000+的端口,你们按照自己的实际情况去配置即可。
node0的配置
# 集群名称,三个节点要一致
cluster.name: es-cluster
# 当前节点名称
node.name: node0
# 是否有资格作为主节点
node.master: true
# 是否存储数据
node.data: true
# 最⼤集群节点数
node.max_local_storage_nodes: 3
# 监听host
network.host: 0.0.0.0
# 容器内服务端⼝ 默认9200即可
http.port: 9200
# 内部节点之间通信端⼝
transport.tcp.port: 9300
# es7.x之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["es_node0:9300","es_node1:9301","es_node2:9302"]
# es7.x之后新增的配置,初始化集群时需要此配置来选举master,此处的node名称为各节点配置文件中的节点名称
cluster.initial_master_nodes: ["node0", "node1", "node2"]
http.cors.allow-origin: "*"
http.cors.enabled: true
http.cors.allow-credentials: truenode1和node2的配置(node1和node2配置基本一致)
# 集群名称 三个节点要一致
cluster.name: es-cluster
# 当前节点名称
node.name: node1
# 是否有资格作为主节点
node.master: true
# 是否存储数据
node.data: true
# 最⼤集群节点数
node.max_local_storage_nodes: 3
#⽹关地址
network.host: 0.0.0.0
# 端⼝
http.port: 9201
# 内部节点之间通信端⼝
transport.tcp.port: 9301
# es7.x之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["es_node0:9300","es_node1:9301","es_node2:9302"]
# es7.x之后新增的配置,初始化集群时需要此配置来选举master,此处的node名称为各节点配置文件中的节点名称
cluster.initial_master_nodes: ["node0", "node1", "node2"]
http.cors.allow-origin: "*"
http.cors.enabled: true
http.cors.allow-credentials: true
2、启动和安装ik分词器
- 启动
docker-compose up |
教你们一个骚操作:我们这里直接是使用up启动并没有带上-d参数后台启动,这样就不用执行查看日志的命令就可以第一时间直接看见启动日志。什么? 你问我这样启动之后怎么后台运行? 直接关掉当前这个终端即可,这个是我2019年的时候发现的docker-compose与其他持续运行软件的差异。
- 安装ik分词器(一共三个容器每次替换掉容器名称/容器ID 执行三次即可)
root@ubuntu:~# docker exec -ti es_node0 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.2/elasticsearch-analysis-ik-7.16.2.zip
root@ubuntu:~# docker restart es_node0
✋:这一步操作实际上可以在Dockerfile中操作。
3、查询集群状态
- 推荐使用Chrome的ElasticSearch Head插件,有条件的可以直接点击跳转到下载页面进行安装。
- 没有网络条件的可以点击此处下载然后再手动进行离线安装【一般是打开插件管理的开发者模式然后直接把crx文件拖进去,如果不行请搜索一下教程】。
插件打开后填入链接地址即可连接ES并展示出状态信息如下所示:
3、可能遇到的问题
1、Error opening log file ‘logs/gc.log’: Permission denied
可能会报这种权限不足的情况,这种情况下想简单点就直接chmod -R 777 ./logs将logs目录设置成所有用户可读写即可。
2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
这个是提示你的内核参数vm.max_map_count设置的过低,直接按照提示修改即可。
root@ubuntu:~# vi /etc/sysctl.conf |
内核参数生效后重新启动docker-compose即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eber的小窝!
评论


