Elasticsearch介紹
ElasticSearch 是一個分佈式、高擴展、高實時的搜索與數據分析引擎,可以用於全文檢索、結構化檢索和分析,它能很方便的使大量數據具有搜索、分析和探索的能力。Wikipedia、Stack Overflow、GitHub 等都基於 Elasticsearch 來構建他們的搜索引擎(取自百度百科和其他博客介紹)。想要控制Elasticsearch的權限的同學需要注意一下,x-pack是能控制Elasticsearch權限的插件,是收費的。Elasticsearch在6.3版本以後將x-pack直接集成到Elasticsearch中,在7.1版本以後免費提供基礎的權限管理功能。所以想使用Elasticsearch的權限管理功能的同學,不妨安裝7.1以後的版本,來使用Elasticsearch的基礎權限功能。
- 本文安裝Elasticsearch7.1版本,配置文件與之前的版本可能有不同配置
- 7.1版本以後Elasticsearch基礎權限管理功能免費
- 本文采用RPM方式安裝,安裝方式簡單,一般情況下配置文件在/etc/{軟件名下面},而且可以用service的方式啓動
- 文章有問題請指出,不勝感激
環境準備
安裝JDK環境
修改文件句柄、線程池數
vi /etc/security/limits.conf
添加參數
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
修改JVM支撐的線程數
vi /etc/sysctl.conf
添加配置
vm.max_map_count=655360
執行命令檢查配置刷新配置
sysctl -p
關閉swapping
echo "vm.swappiness = 0">> /etc/sysctl.conf
RPM安裝
下載RPM安裝包,並複製到要安裝的服務器
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-x86_64.rpm.sha512
安裝RPM安裝包
shasum -a 512 -c elasticsearch-7.1.1-x86_64.rpm.sha512
sudo rpm --install elasticsearch-7.1.1-x86_64.rpm
如果碰到以下錯誤請安裝相關依賴
-bash: shasum: command not found
yum install perl-Digest-SHA
關鍵配置
使用RPM方式安裝的Elasticsearch的配置文件全部在/etc/elasticsearch下面
修改文件歸屬
chown -R elasticsearch:elasticsearch /etc/elasticsearch/
修改/etc/elasticsearch/elasticsearch.yml配置,添加如下配置
cluster.name: bigdata-cluster
node.name: tbig04
network.host: 0.0.0.0
network.publish_host: 172.16.4.5
#把原始的註釋
path.data: /opt/es/data
#把原始的註釋
#可以用逗號分隔添加多個路徑,優先使用磁盤更空閒的那個,雙io也可以提高效率
path.logs: /opt/es/log
cluster.initial_master_nodes: ["172.16.4.5"]
discovery.seed_hosts: ["172.16.4.3", "172.16.4.4"]
http.cors.enabled: true
http.cors.allow-origin: "*"
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
創建path.data和path.logs對應的文件夾,並修改文件歸屬的用戶和用戶組爲elasticsearch:elasticsearch
修改/etc/elasticsearch/jvm.options配置,兩個值要修改成一樣
-Xms4g
-Xmx4g
搭建其他節點
使用RPM的方式在其他節點上安裝,將文件複製到其他服務器,修改配置文件中的network.publish_host和node.name配置,並創建log和data文件夾
啓停
service elasticesearch start
service elasticesearch stop
X-pack權限配置
/usr/share/elasticsearch/bin/elasticsearch-certutil cert -out /etc/elasticsearch/elastic-certificates.p12 -pass ""
將生成的elastic-certificates.p12文件複製到/etc/elasticsearch下,並修改文件歸屬爲elasticsearch
chown -R elasticsearch:elasticsearch /etc/elasticsearch/elastic-certificates.p12
修改各個es節點的elasticsearch.yml配置,添加如下配置
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
重啓集羣以後,使用以下指令來初始化各個用戶的密碼
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
使用以下指令來測試權限是否添加成功,user後面接用戶名和密碼
curl --user elastic:123456 -XGET 'localhost:9200/_cat/health?v&pretty'
Kibana介紹
Kibana是一個開源分析和可視化平臺,旨在與ElasticSearch合作。您可以使用Kibana來搜索、查看和與ElasticSearch索引中存儲的數據交互。可以輕鬆地執行高級數據分析,並在各種圖表、表格和地圖中可視化數據。(介紹來自網上)
Kibana安裝
到官網下載對應的tar包
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-x86_64.rpm
shasum -a 512 kibana-7.1.1-x86_64.rpm
sudo rpm --install kibana-7.1.1-x86_64.rpm
Kibana配置
對應的kinana的配置文件在/etc/elasticsearch/kibana.yml
#後端服務器的主機地址
server.host: "0.0.0.0"
#"您的主機名" Kibana 實例對外展示的名稱
server.name: "es04"
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
創建kibana用戶和組
groupadd kibana
useradd kibana -a -G kibana
啓動
service kibana start
Logstash安裝
下載rpm包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.rpm
安裝logstatsh
rpm -ivh logstash-7.1.0.rpm
創建日誌保存目錄、數據目錄,並修改文件歸屬爲logstash(略)
mkdir /data1/logstath/log -p
mkdir /data1/logstath/data -p
修改/etc/logstash/logstash.yml配置(有默認配置)
path.logs: /data1/logstath/log
path.data: /data1/logstath/data
config.reload.automatic: true
config.reload.interval: 5s
#交給kibana監控
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: ***
xpack.monitoring.elasticsearch.password: ***
啓動
service logstash start
注意:logstash的任務的配置,直接寫到/etc/logstash/conf.d中,logstash每隔一段時間會掃描裏面的文件。配置文件中的每個input和output都應該添加type,防止出現交叉。