ElasticSearch學習大綱
一、ES集群規劃:
關系型數據庫(比如Mysql) | 非關系型數據庫(Elasticsearch) | 非關系型數據庫(Elasticsearch) |
---|---|---|
centos7 | hadoop103 | 192.168.148.3 |
centos7 | hadoop104 | 192.168.148.4 |
centos7 | hadoop105 | 192.168.148.5 |
二、集群環境搭建:
2.1.Docker部署ES-7.12集群:
第1步:.編寫docker-compose文件:
version: '2.2'
services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastices02:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data02:/usr/share/elasticsearch/datanetworks:- elastices03:image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- data03:/usr/share/elasticsearch/datanetworks:- elasticvolumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridge
第2步:執行docker-compose文件:
docker-compose up
2.2.直接搭建方式(基于ES-7.8.0):
第1步:下載ES
- 1.解壓壓縮包:
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
- 2.將文件名更改成es-cluster:
mv elasticsearch-7.8.0 es-cluster
:
第2步:創建用戶:
- 1.創建用戶:Elasticsearch 因為安全問題,不允許 root 用戶直接運行,所以要在每個節點中創建新用戶,在 root 用戶中創建新用戶
useradd es #新增 es 用戶
passwd es #為 es 用戶設置密碼
userdel -r es #如果錯了,可以刪除再加
chown -R es:es /opt/module/es-cluster #文件夾所有者
- 2.將軟件分發到另外兩臺服務器上:
第3步:更改配置
- 1.配置目錄:安裝完畢后會生成很多文件,包括配置文件日志文件等等,下面幾個是
最主要的配置文件路徑
/opt/module/es-cluster/
# elasticsearch 安裝目錄/opt/module/es-cluster/config/elasticsearch.yml
#elasticsearch的配置文件/opt/module/es-cluster/config/jvm.options
#JVM相關的配置,內存大小等等/data/elk1/data
# 數據存放路徑/data/elk1/logs
# 日志存放路徑
- 2.創建用于存放數據與日志的目錄:數據文件會隨著系統的運行飛速增長,所以默認的日志文件與數據文件的路徑不能滿足我們的需求,需要手動創建日志與數據文件路徑
mkdir -p /data/elk1/data
mkdir -p /data/elk1/logs
- 3.集群配置:
vim /opt/module/es-cluster/config/elasticsearch.yml
(yml文件有嚴格的語法要求,在配置的時候,一定要注意語法,這里容易出現錯誤)
# 加入如下配置
# #集群名稱cluster.name: cluster-es
# 節點名稱,每個節點的名稱不能重復node.name: node-1
#ip 地址,每個節點的地址不能重復network.host: hadoop103
#是不是有資格主節點node.master: truenode.data: truehttp.port: 9200
## head 插件需要這打開這兩個配置http.cors.allow-origin: "*"http.cors.enabled: truehttp.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉 mastercluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,節點發現discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]gateway.recover_after_nodes: 2network.tcp.keep_alive: truenetwork.tcp.no_delay: truetransport.tcp.compress: true
##集群內同時啟動的數據任務個數,默認是 2 個cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或刪除節點及負載均衡時并發恢復的線程個數,默認 4 個cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化數據恢復時,并發恢復線程的個數,默認 4 個cluster.routing.allocation.node_initial_primaries_recoveries: 16
# 加入如下配置
# #集群名稱cluster.name: cluster-es
# 節點名稱,每個節點的名稱不能重復node.name: node-2
#ip 地址,每個節點的地址不能重復network.host: hadoop104
#是不是有資格主節點node.master: truenode.data: truehttp.port: 9200
## head 插件需要這打開這兩個配置http.cors.allow-origin: "*"http.cors.enabled: truehttp.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉 mastercluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,節點發現discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]gateway.recover_after_nodes: 2network.tcp.keep_alive: truenetwork.tcp.no_delay: truetransport.tcp.compress: true
##集群內同時啟動的數據任務個數,默認是 2 個cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或刪除節點及負載均衡時并發恢復的線程個數,默認 4 個cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化數據恢復時,并發恢復線程的個數,默認 4 個cluster.routing.allocation.node_initial_primaries_recoveries: 16
# 加入如下配置
# #集群名稱cluster.name: cluster-es
# 節點名稱,每個節點的名稱不能重復node.name: node-3
#ip 地址,每個節點的地址不能重復network.host: hadoop105
#是不是有資格主節點node.master: truenode.data: truehttp.port: 9200
## head 插件需要這打開這兩個配置http.cors.allow-origin: "*"http.cors.enabled: truehttp.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉 mastercluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,節點發現discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]gateway.recover_after_nodes: 2network.tcp.keep_alive: truenetwork.tcp.no_delay: truetransport.tcp.compress: true
##集群內同時啟動的數據任務個數,默認是 2 個cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或刪除節點及負載均衡時并發恢復的線程個數,默認 4 個cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化數據恢復時,并發恢復線程的個數,默認 4 個cluster.routing.allocation.node_initial_primaries_recoveries: 16
- 三臺機器不一樣的
elasticsearch.yml
配置點如下
node.name: node-1 #192.168.148.3
node.name: node-2 #192.168.148.4
node.name: node-3 #192.168.148.5
network.host: 192.168.148.3 #192.168.148.3
network.host: 192.168.148.4 #192.168.148.4
network.host: 192.168.148.5 #192.168.148.5
- 4.JVM配置:
- 由于Elasticsearch是Java開發的,所以可以通過
/etc/elasticsearch/jvm.options
配置文件來設定JVM的相關設定。如果沒有特殊需求按默認即可。 - 但是其中還是有兩項最重要的-Xmx1g與-Xms1gJVM的最大最小內存。如果太小會導致Elasticsearch剛剛啟動就立刻停止。太大會拖慢系統本身。
- 由于Elasticsearch是Java開發的,所以可以通過
vim /opt/module/es-cluster/config/jvm.options
-Xms1g 修改為 ===> -Xms2g
-Xmx1g 修改為 ===> -Xmx2g
第4步:修改配置
- 1.修改
/etc/sysctl.conf
:添加如下配置后并重新加載:sysctl -p
:
vm.max_map_count=655360
- 2.切換用戶es后,切到es的安裝目錄后,啟動服務:
./bin/elasticsearch
2.3."_cat"集群命令介紹:
GET /_cat/nodes #查看所有節點。集群中會用到
GET /_cat/health #查看es健康狀況
GET /_cat/master #查看主節點
GET /_cat/indices #查看所有索引 ,等價于mysql數據庫的show databases;