一、实战环境
1、架构图
相比上一篇博客,该架构的变化在于将单点ES替换为ES集群(master+data_node)
2、机器分布
192.168.117.136 Nginx+filebeat
192.168.117.137 Nginx+filebeat
192.168.117.138 logstash
192.168.117.139 es+kibana+nginx(master)
192.168.117.140 es(data-node)
192.168.117.141 es(data-node)
3、组件版本
java-1.8.0-openjdk
filebeat-5.2.2
logstash-5.2.2
elasticsearch-5.2.2
kibana-5.2.2
nginx-1.6.1
4、安装部署
在上一篇博客中讲述了filebeat,logstash,kibana的安装配置,所以此处只讲述如何部署es集群
(1)、配置yum源(所有机器)
#配置yum源#
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elk.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
(2)、安装es(139 140 141机器)
##安装es#
yum install -y elastcisearch
##配置es##
master:
mv /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_bak
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: master-node # 集群中的名称
node.name: master # 该节点名称
node.master: true # 意思是该节点为主节点
node.data: false # 表示这不是数据节点
network.host: 0.0.0.0 # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200 # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.117.139", "192.168.117.140", "192.168.117.141"]#配置自动发现
##将该配置文件发送给140 141机器,修改下列三项即可##
node.name: slave1/slave2
node.master: false
node.data: true
(3)、依次启动es服务(先master)
#139 140 141#
systemctl start elasticsearch
systemctl enable elasticsearch
(4)、安装es的head插件(可在web界面查看es集群的状态)
##head插件在5.x版本中需要独立启动,所以需要先更新node.js##
##下载node.js tar包##
cd /opt/
wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz
tar Jxf node-v10.15.0-linux-x64.tar.xz
##配置环境变量##
vim /etc/profile
#添加:#
export PATH=/mnt/node-v10.15.0-linux-x64/bin:$PATH
source /etc/profile
##下载es head插件##
yum install -y git npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm install -g grunt-cli
nohup grunt server &
(5)、修改master的es配置文件,否则插件无法连接到es集群
#在139机器的/etc/elasticsearch/elasticsearch.yml文件中添加如下两行#
http.cors.enabled: true
http.cors.allow-origin: "*"
#重启master的服务
systemctl restart elasticsearch
(6)、网页查看集群状态http://192.168.117.139:9100/
集群状态值为green即表示集群工作正常!!!
(7)、修改138机器上logstash的nginx日志过滤配置文件
##由于我们把es数据节点放在了140和141机器上,所以logstash接收到filebeat的日志数据后应当发送给140和141机器##
#将138机器上 /etc/logstash/conf/nginx.conf文件做如下修改:#
output {
elasticsearch {
hosts => ["192.168.117.140:9200","192.168.117.141:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
document_type => "%{type}"
}
#stdout { codec => rubydebug }
}
#即把原来的hosts => ["192.168.117.139:9200"]更改为
hosts => ["192.168.117.140:9200","192.168.117.141:9200"]
然后重新启动logstash即可。。。