您好,登錄后才能下訂單哦!
本博文只用于實現簡單群集配置,更深入的資料可以參考官方文檔。
環境如下:
系統版本 | IP | 角色 |
---|---|---|
centos 7.5 | 192.168.20.2 | ES 01、logstash、ES-Head、logstash、kibana |
centos 7.5 | 192.168.20.7 | ES 02 |
centos 7.5 | 192.168.20.8 | ES 03 |
注:文中用到的所有軟件包,均可在我的網盤鏈接中下載,或者去es中文社區下載es相關組件。
[root@node01 src]# cat > /etc/hosts << EOF
> 192.168.20.2 node01
> 192.168.20.7 node02
> 192.168.20.8 node03
> EOF
> #將hosts文件發送到其他節點
[root@node01 src]# scp /etc/hosts root@node02:/etc/hosts
[root@node01 src]# scp /etc/hosts root@node03:/etc/hosts
注:以下操作需要在所有節點上進行配置。
JDK官方下載地址
#卸載自帶的java環境
[root@node01 src]# rpm -qa | grep jdk
java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64
copy-jdk-configs-3.3-2.el7.noarch
java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64
java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64
[root@node01 src]# rpm -e java-1.8.0-openjdk-headless --nodeps
[root@node01 src]# rpm -e java-1.7.0-openjdk-headless --nodeps
#配置jdk環境
[root@node01 src]# tail -4 /etc/profile #追加內容如下
export JAVA_HOME=/usr/local/jdk1.8.0_241
export JRE_HOME=/usr/local/jdk1.8.0_241/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#刷新配置并查看配置是否正確
[root@node01 src]# . /etc/profile
[root@node01 src]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
注:下載安裝的操作需要再所有節點上執行
#下載并安裝elasticsearch
[root@node01 src]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-x86_64.rpm
[root@node01 src]# rpm -ivh elasticsearch-7.5.1-x86_64.rpm
#設置開機自啟動
[root@node01 src]# systemctl daemon-reload
[root@node01 src]# systemctl enable elasticsearch.service
#查看elasticsearch的配置文件目錄
[root@node01 elasticsearch]# pwd
/etc/elasticsearch
[root@node01 elasticsearch]# ls
elasticsearch.keystore jvm.options role_mapping.yml users
elasticsearch.yml log4j2.properties roles.yml users_roles
#elasticsearch默認內存使用為1G,可以更改如下配置,修改其默認使用內存
[root@node01 elasticsearch]# cat jvm.options
-Xms1g
-Xmx1g
注:生產環境中建議將Xms和Xmx兩個值設置為一致,一般設置為物理內存的一半,但最高最好不要超過30G
如果服務器文件數上線和線程上線較低,就會產生如下異常:
1. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]每個進程最大同時打開文件數太小
2. max number of threads [3818] for user [es] is too low, increase to at least [4096]最大線程個數太低
可以進行以下修改,以便修改可打開文件數的大小
[root@node01 elasticsearch]# vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
#注:修改上述配置后,需要退出當前用戶再重新登錄才可生效
#重新登錄后,可以使用以下命令查看是否生效
#查看最大線程個數
[root@node01 elasticsearch]# ulimit -Hu
4096
[root@node01 elasticsearch]# ulimit -Su
4096
#查看每個進程最大同時打開文件數
[root@node01 elasticsearch]# ulimit -Sn
65536
[root@node01 elasticsearch]# ulimit -Hn
65536
[root@node01 ~]# vim /etc/elasticsearch/elasticsearch.yml #修改es主配置文件
cluster.name: my-es #群集名稱
node.name: node01 #es節點名稱
bootstrap.memory_lock: false #啟動時不鎖定內存
network.host: 0.0.0.0 #監聽地址
http.port: 9200 #監聽端口
discovery.seed_hosts: ["node01", "node02", "node03"] #這里指定參與集群的主機節點
cluster.initial_master_nodes: ["node01", "node02", "node03"] #同上
#在配置文件末尾添加以下內容,后面es-head連接es群集時需要
http.cors.enabled: true #添加該行,開啟跨域訪問支持
http.cors.allow-origin: "*" #添加該行,跨域訪問允許的域名地址
#啟動服務,并將修改好的配置文件發送到其他節點
[root@node01 ~]# systemctl start elasticsearch
[root@node01 ~]# scp /etc/elasticsearch/elasticsearch.yml root@node02:/etc/elasticsearch/
[root@node01 ~]# scp /etc/elasticsearch/elasticsearch.yml root@node03:/etc/elasticsearch/
#node02節點配置如下(修改節點名稱即可)
[root@node02 ~]# sed -i 's#node.name: node01#node.name: node02#g' /etc/elasticsearch/elasticsearch.yml
[root@node02 ~]# systemctl start elasticsearch
#node03節點配置如下
[root@node03 ~]# sed -i 's#node.name: node01#node.name: node03#g' /etc/elasticsearch/elasticsearch.yml
[root@node03 ~]# systemctl start elasticsearch
訪問各個節點的9200端口,即可看到如下頁面:
谷歌提供的有elasticsearch head插件,在應用商店搜索如下即可安裝:
雖然可以使用chrome的插件,但是每個使用者都需要安裝chrome,并安裝ElasticSearch head插件。由于目前google被國內限制的緣故,安裝chrome比較麻煩。作為替代方案,我們可以在linux服務器安裝ElasticSearch Head應用。
該插件在github存在,可以參考安裝。
注:以下配置在其中一個節點進行即可
[root@node01 ~]# git clone git://github.com/mobz/elasticsearch-head.git
[root@node01 ~]# cd elasticsearch-head/
#安裝epel源及更新openssl
[root@node01 elasticsearch-head]# yum -y install epel-release
[root@node01 elasticsearch-head]# yum -y update openssl
#安裝npm(注:必須安裝epel源才可安裝npm)
[root@node01 elasticsearch-head]# yum -y install npm
[root@node01 elasticsearch-head]# npm install
注:如果在執行npm install命令時,長時間停留在如下界面,或者報錯,只需Ctrl+c終止后重新運行該命令即可。
后臺啟動elasticsearch head,否則會一直占用當前終端:
[root@node01 elasticsearch-head]# npm run start & #后臺啟動
[root@node01 ~]# ss -lnp | grep 9100 #確定9100端口在監聽
瀏覽器訪問elasticsearch head所在主機的9100端口,并連接到es群集的9200端口,即可在瀏覽器查看群集狀態,如下:
注:Elasticsearch默認不允許第三方接入,可以修改Elasticsearch的配置文件elasticsearch.yml,添加如下所示配置(我在第一次修改配置文件時,已經增加了如下配置):
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@node01 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-x86_64.rpm
[root@node01 src]# rpm -ivh kibana-7.5.1-x86_64.rpm
[root@node01 ~]# vim /etc/kibana/kibana.yml #編輯主配置文件
server.host: "0.0.0.0" #指定kibana監聽地址
elasticsearch.hosts: ["http://192.168.20.2:9200","http://192.168.20.7:9200","http://192.168.20.8:9200"]
#指定es監聽地址,可以寫群集中的某一個節點監聽地址
kibana.index: ".kibana" #在elasticsearch中添加.kibana索引
#設置開機自啟并啟動kibana
[root@node01 ~]# systemctl enable kibana
[root@node01 ~]# systemctl start kibana
[root@node01 ~]# ss -lnp | grep 5601 #確定kibana端口在監聽
tcp LISTEN 0 128 *:5601 *:* users:(("node",pid=2593,fd=28))
由于kibana 7之前的版本,官方并沒有支持中文,需要另外下載補丁包。
地址:https://github.com/anbai-inc/Kibana_Hanization
kibana 7的版本,官方加入了中文的選項,只需要修改kibana的配置文件即可,如下:
[root@node01 bin]# sed -i 's/#i18n.locale: "en"/i18n.locale: "zh-CN"/g' /etc/kibana/kibana.yml
注:修改配置文件后,記得重啟生效哦!
啟動完成后,訪問主機的5601端口,即可看到如下界面:
在實際生產環境中,大多中小架構可能是這樣的:filebeat===》kafka===》logstash===》elasticsearch===》kibana。我這里只是想將新版的某些組件安裝配置一下,所以省略了前兩個,直接用logstash來收集主機日志了。
注:下面收集的有nginx的日志,請自行配置nginx。
#下載logstash并安裝
[root@node01 src]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.1.rpm
[root@node01 src]# rpm -ivh logstash-7.5.1.rpm
#設置開機自啟
[root@node01 src]# systemctl daemon-reload
[root@node01 src]# systemctl enable logstash.service
#編輯配置文件,收集日志
[root@node01 src]# cd /etc/logstash/conf.d/
[root@node01 conf.d]# vim nginx_log.conf
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
file{
path => "/var/log/nginx/access.log"
type => "access"
start_position => "beginning"
}
file{
path => "/var/log/nginx/error.log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.20.2:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
if [type] == "access" {
elasticsearch {
hosts => ["192.168.20.2:9200"]
index => "access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.20.2:9200"]
index => "error-%{+YYYY.MM.dd}"
}
}
}
[root@node01 conf.d]# chmod +r /var/log/messages #賦予該目錄其他人的讀權限
[root@node01 conf.d]# ln -sf /usr/share/logstash/bin/logstash /usr/local/bin/ #對命令做軟連接
[root@node01 conf.d]# systemctl start logstash #啟動服務
[root@node01 conf.d]# logstash -f nginx_log.conf & #放入后臺運行
顯示如下,表示正常:
好了,至于kibana如何添加索引,自行研究吧,沒有耐心寫了,可以參考我之前的博文來進行添加kibana上的索引。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。