我的服务器环境是 CentOS8,es运行方式是 docker
安装Elasticsearch以及相关查询工具,这里用的是 Elasticsearch7.14.2,查询工具用的elasticsearch-head。
关于集群的配置,往下翻
目录
安装单个docker
ES安装脚本(docker安装方式)
数据存储到 /data 目录下
docker pull elasticsearch:7.14.2
mkdir -p /data/elasticsearch/config
mkdir -p /data/elasticsearch/data
echo -e "http.host: 0.0.0.0\ncluster.name: \"docker-cluster\"\nnetwork.host: 0.0.0.0\nhttp.cors.enabled: true\nhttp.cors.allow-origin: \"*\"\npath.repo: [\"/tmp\"]" >> /data/elasticsearch/config/elasticsearch.yml
docker run --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.14.2
测试运行
直接访问 http://ip:9200,如果有JSON数据返回,一般就成功了。
elasticsearch-head安装
# 1. 官方镜像 拉取elasticsearch-head镜像,官方镜像,需要修改一个跨域
# docker pull mobz/elasticsearch-head:5
# 2. 在官方镜像基础上,修改了跨域问题,安装后直接使用
docker pull goldshooter/elasticsearch-head:5
#创建并启动容器
docker run -d --name elasticsearch-head -p 9100:9100 goldshooter/elasticsearch-head:5
es的查询接口:9200,head 的访问地址: 9100
输入 http://xxx.xxx.xxx.xxx:9100 连接 es,如果报错:
{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
需要调整head,网上有教程,具体就是修改 vendor.js,如下:
可使用下面镜像,装完就用,没有跨域问题:
docker pull goldshooter/elasticsearch-head:5
Public View
# 将文件下载到本地
docker cp 92a63c323449:/usr/src/app/_site/vendor.js ./
# 修改vendor.js 替换 application/x-www-form-urlencoded 为 application/json,然后上传到 docker
# 上传文件到docker
docker cp ./vendor.js 92a63c323449:/usr/src/app/_site/vendor.js
# 为了方便,把修改好的直接打包了,可以pull打包好的image
docker pull goldshooter/elasticsearch-head:5
附 Kibana 安装方式
docker pull kibana:7.14.2
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的IP地址:9200 -p 5601:5601 -d kibana:7.14.2
ElasticSearch 集群配置
目录结构如下,我选的目录是 /data/es ,配置文件都放到 config 目录下,数据放在 data1,data2,data3,共三个docker
做好准备工作
docker pull elasticsearch:7.14.2
mkdir -p /data/es/config
mkdir -p /data/es/data1
mkdir -p /data/es/data2
mkdir -p /data/es/data3
创建目录,结构如下:
[root@localhost es]# tree
.
├── config
│ ├── es1.yml
│ ├── es2.yml
│ └── es3.yml
├── data1
├── data2
├── data3
编辑三个docker的配置脚本,配置脚本如下,
[root@localhost es]# cat config/es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
http.host: 0.0.0.0
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.31.5:9300","192.168.31.5:9301","192.168.31.5:9302"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
[root@localhost es]# cat config/es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
http.host: 0.0.0.0
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.31.5:9300","192.168.31.5:9301","192.168.31.5:9302"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
[root@localhost es]# cat config/es3.yml
cluster.name: elasticsearch-cluster
node.name: es-node3
http.host: 0.0.0.0
network.host: 0.0.0.0
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.31.5:9300","192.168.31.5:9301","192.168.31.5:9302"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
安装和启动脚本如下:
firewall-cmd --add-port=9300/tcp
firewall-cmd --add-port=9301/tcp
firewall-cmd --add-port=9302/tcp
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /data/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:7.14.2
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /data/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:7.14.2
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /data/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:7.14.2