Elasticsearch集群部署实战指南

环境准备

1、关闭防火墙与增强功能

bash 复制代码
systemctl stop firewalld --now  #关闭防火墙    
setenforce 0    #关闭增强功能

2、更改主机名、配置域名解析、查看Java环境

bash 复制代码
Node1节点:hostnamectl set-hostname node1            
Node2节点:hostnamectl set-hostname node2

3、主机名与IP解析

bash 复制代码
vim /etc/hosts      
192.168.73.129 node1 
192.168.73.128 node2   

4、java安装

注:版本问题

bash 复制代码
java -version	

#如果没有安装,yum -y install java

Elasticsearch 集群部署

1、部署 Elasticsearch 软件

(1)安装elasticsearch---rpm包

#上传elasticsearch-6.7.2.rpm到/opt目录下

bash 复制代码
cd /opt
rpm -ivh elasticsearch-6.7.2.rpm

(2)加载系统服务

bash 复制代码
systemctl daemon-reload            
systemctl enable elasticsearch.service

(3)修改elasticsearch主配置文件

bash 复制代码
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak            
vi /etc/elasticsearch/elasticsearch.yml

--17--取消注释,指定集群名字

cluster.name: my-elk-cluster

--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2

node.name: node1

--33--取消注释,指定数据存放路径

path.data: /data/elk_data

--37--取消注释,指定日志存放路径

path.logs: /var/log/elasticsearch/

--43--取消注释,改为在启动的时候不锁定内存

bootstrap.memory_lock: false

--55--取消注释,设置监听地址,0.0.0.0代表所有地址

network.host: 0.0.0.0

--59--取消注释,ES 服务的默认监听端口为9200

http.port: 9200

--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2

discovery.zen.ping.unicast.hosts: "node1", "node2"

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

(4)创建数据存放路径并授权

bash 复制代码
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

(5)启动elasticsearch是否成功开启

bash 复制代码
systemctl start elasticsearch.service                                  
netstat -antp | grep 9200


(6)查看节点信息

浏览器访问 http://192.168.73.128:9200http://192.168.73.128:9200 查看节点 Node1、Node2 的信息。

浏览器访问 http://192.168.73.129:9200/_cluster/health?prettyhttp://192.168.73.128:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

浏览器访问 http://192.168.73.129:9200/_cluster/state?pretty 检查群集状态信息。

2.安装 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。

安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。

node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。

bash 复制代码
java -jar weifuwu.jar/war  

(1)编译安装 node

#上传软件包 node-v8.2.1.tar.gz 到/opt v10 ~ 16

bash 复制代码
yum install gcc gcc-c++ make -y  

cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/  
./configure
make  && make install

(2)安装 phantomjs(前端的框架)

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到

bash 复制代码
cd /opt          
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

(3)安装 Elasticsearch-head 数据可视化工具

#上传软件包 elasticsearch-head.tar.gz 到/opt

bash 复制代码
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

(4)修改 Elasticsearch 主配置文件

bash 复制代码
vim /etc/elasticsearch/elasticsearch.yml  

--末尾添加以下内容--

http.cors.enabled: true #开启跨域访问支持,默认为 false

http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有

bash 复制代码
systemctl restart elasticsearch  

(5)启动 elasticsearch-head 服务

#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。

bash 复制代码
cd /usr/local/src/elasticsearch-head/
npm run start &

#elasticsearch-head 监听的端口是 9100

bash 复制代码
netstat -natp |grep 9100  

(6)通过 Elasticsearch-head 查看 Elasticsearch 信息

通过浏览器访问 http://192.168.73.129:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

(7)插入索引

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。

浏览器访问 http://192.168.73.129:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。

点击"数据浏览",会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。

1.更改主机名

bash 复制代码
hostnamectl set-hostname httpd         

2.安装Apahce服务(httpd)

bash 复制代码
yum -y install httpd
systemctl start httpd

3.安装Java环境

bash 复制代码
yum -y install java  
java -version

4.安装logstash

#上传软件包 logstash-6.7.2.rpm 到/opt目录下

bash 复制代码
cd /opt
rpm -ivh logstash-6.7.2.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/  

5.测试 Logstash

Logstash 命令常用选项:

-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。

-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。

-t:测试配置文件是否正确,然后退出。

#使用 rubydebug 输出详细格式显示,codec 为一种编解码器

bash 复制代码
logstash -e 'input { stdin{} } output { stdout{} }'       

6.定义 logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。

input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等

filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式

output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。

#格式如下:

input {...}

filter {...}

output {...}

#在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {

file { path =>"/var/log/messages" type =>"syslog"}

file { path =>"/var/log/httpd/access.log" type =>"apache"}

}

#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。

bash 复制代码
chmod +r /var/log/messages					#让 Logstash 可以读取日志

vim /etc/logstash/conf.d/system.conf                            
input {
    file{
        path =>"/var/log/messages"
        type =>"system"			
        start_position =>"beginning"
    }
}
output {
    elasticsearch {						
        hosts => ["192.168.73.129:9200"]		
        index =>"system-%{+YYYY.MM.dd}"			
    }
}

systemctl restart logstash 

浏览器访问 http://192.168.73.128:9100/ 查看索引信息

Kiabana 部署

1.安装 Kiabana

#上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录

bash 复制代码
cd /opt  
rpm -ivh kibana-6.7.2-x86_64.rpm

2.设置 Kibana 的主配置文件

bash 复制代码
vim /etc/kibana/kibana.yml    

--2--取消注释,Kiabana 服务的默认监听端口为5601

server.port: 5601

--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址

server.host: "0.0.0.0"

--28--取消注释,设置和 Elasticsearch 建立连接的地址和端口

elasticsearch.hosts: "http://192.168.10.13:9200"

--37--取消注释,设置在 elasticsearch 中添加.kibana索引

kibana.index: ".kibana"

3.启动 Kibana 服务

bash 复制代码
systemctl start kibana.service      
systemctl enable kibana --now

netstat -natp | grep 5601  

4.验证 Kibana

浏览器访问 http://192.168.73.129:5601

相关推荐
serve the people9 小时前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
一个儒雅随和的男子10 小时前
Elasticsearch出现深度分页问题怎么解决?
大数据·elasticsearch·搜索引擎
开发者联盟league1 天前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
江华森1 天前
Jenkins 运维管理实战博客大纲
运维·jenkins
X1A0RAN1 天前
解决jenkins(本机部署或容器部署)安全机制【CSP】问题
jenkins·allure报告
烧饼Fighting1 天前
Jenkins自动化编译部署Spring Boot项目
spring boot·自动化·jenkins
serve the people1 天前
Elasticsearch(3) show me some examples
大数据·elasticsearch·jenkins
是一个Bug1 天前
Elasticsearch 保姆级入门:从“找文件”到“秒级搜索”
大数据·elasticsearch·搜索引擎
牛奶咖啡131 天前
CI/CD——通过Jenkins插件实现与K8s集成并部署应用到k8s集群的实践保姆级教程
ci/cd·kubernetes·jenkins·jenkins安装k8s插件·jenkins对k8s配置凭据·jenkins配置pod模板·编写流水线脚本部署应用到k8s
serve the people1 天前
Elasticsearch(4) show me some more advanced content
大数据·elasticsearch·jenkins