一、ElasticSearch是什么?
Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。
不過,Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:
分布式的實時文件存儲,每個字段都被索引並可被搜索
分布式的實時分析搜索引擎
可以擴展到上百台服務器,處理PB級結構化或非結構化數據
拉取鏡像
docker pull elasticsearch:7.2.0 docker pull mobz/elasticsearch-head:5 docker pull kibana:7.2.0
運行容器
ElasticSearch的默認端口是9200,我們把宿主環境9200端口映射到Docker容器中的9200端口,就可以訪問到Docker容器中的ElasticSearch服務了,同時我們把這個容器命名為es。
docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.2.0
配置跨域
進入容器
由於要進行配置,因此需要進入容器當中修改相應的配置信息。
docker exec -it es /bin/bash
進行配置
# 顯示文件 ls 結果如下: LICENSE.txt README.textile config lib modules NOTICE.txt bin data logs plugins # 進入配置文件夾 cd config # 顯示文件 ls 結果如下: elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles elasticsearch.yml jvm.options role_mapping.yml users # 修改配置文件 vi elasticsearch.yml # 加入跨域配置 http.cors.enabled: true http.cors.allow-origin: "*"
重啟容器
由於修改了配置,因此需要重啟ElasticSearch容器。
docker restart es
展示如下:
運行kibana容器
#docker run -it -d -e ELASTICSEARCH_URL=http://192.168.100.10:9200 --restart=always --name kibana -p 5601:5601 kibana:7.2.0
docker run -d --restart=always --name kibana --link es:elasticsearch -p 5601:5601 kibana:7.2.0
如果遇到如下情況:請查看日志(docker logs kibana)
錯誤:
我這里的修改如下:
運行Head容器:
docker run -d --restart=always --name es_head -p 9100:9100 mobz/elasticsearch-head:5
展示如下:
參考:https://www.cnblogs.com/stellar/p/9967347.html
后來發現dejavu 這個工具也不錯:docker run --name=dejavu -p 1358:1358 -d appbaseio/dejavu 運行效果如下:
ES集群配置
#創建數據文件掛載目錄,並開放通信端口
pwd
mkdir -p ES/config
cd ES
mkdir data1
mkdir data2
mkdir data3
sudo chmod 777 data1
sudo chmod 777 data2
sudo chmod 777 data3
cd config
sudo ufw allow 9300 #firewall-cmd --add-port=9300/tcp
sudo ufw allow 9301 #firewall-cmd --add-port=9301/tcp
sudo ufw allow 9302 #firewall-cmd --add-port=9302/tcp
使用vi命令在config下分別創建如下文件:es1.yml,es2.yml,es3.yml
es1.yml
cluster.name: hzmt-es-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]
es2.yml
cluster.name: hzmt-es-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]
es3.yml
cluster.name: hzmt-es-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.100.19
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.100.19:9300","192.168.100.19:9301","192.168.100.19:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]
注:本機虛擬機ip:192.168.100.19 讀者請自行更改
調高JVM線程數限制數量,修改配置vi /etc/sysctl.conf 修改配置vim /etc/sysctl.conf, 增加vm.max_map_count=262144 , 然后啟動配置sysctl -p 這一步是為了防止啟動容器時,報出如下錯誤:
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
啟動ElasticSearch集群容器
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /root/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:7.2.0 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /root/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:7.2.0 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /root/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:7.2.0
注:設置-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 是因為/etc/elasticsearch/jvm.options 默認jvm最大最小內存是2G,讀者啟動容器后 可用docker stats命令查看
在瀏覽器地址欄訪問http://192.168.100.19:9200/_cat/nodes?pretty 查看節點狀態
注:節點名稱帶表示為主節點*
參考:
https://www.cnblogs.com/stellar/p/9967347.html
https://blog.csdn.net/belonghuang157405/article/details/83301937