写一个笔记记录一下我在服务器上部署ElasticStack全家桶所遇到的问题以及安装方式,方便下次安装查阅,希望对你们也有用
1.安装配置ElasticSearch
1.1下载解压
这里我下载的版本号是7.17.4大家可以根据需求在官网上进行下载,放个elasticsearch7.17.4的下载链接,进入下载页面后点击Linux x86_64,服务器的内存要在4G以上不然可能会因为内存不足而引起服务器崩溃(我的2GB服务器就因为这个原因崩溃,我这里使用的是8GB的服务器进行操作的)更多详情请参考官方文档
下载好之后上传至服务器中,我将安装包上传到/software/中,终端进入到该目录下
cd /software
进入后输入以下命令解压软件包,等待解压完毕
tar zxvf elasticsearch-7.17.4-linux-x86_64.tar.gz
解压后使用在此目录使用ls -l 可以查看以下内容:
!!!如果目前登录的用户是root用户的话请先创建一个用户,然后用另一个用户进行操作,因为ES官方不允许使用root用户进行操作(在进行启动时会报错,提示不允许root用户进行运行)
1.2创建新用户
在root用户下创建用户组名为es
groupadd es
在root用户下创建用户并将用户添加到用户组中
useradd es -g es
#给es用户设置密码
passwd es
为该用户指定命令解释程序(/bin/bash)
usermod -s /bin/bash es
为用户创建家目录
#进入home目录
1. cd /home
#出那个键es目录将其作为家目录
2.mkdir es
将刚刚创建的/home/es设置为es用户的家目录
usermod -d /home/es es
查看修改是否完成
cat /etc/passwd
以上说名修改完成在root用户下修改刚刚的/software/elasticsearch-7.17.4文件夹的权限为es用户组中的es用户
chown -Rf es:es /software/elasticsearch-7.17.4
切换到es用户
su es
#输入密码
1.3运行elasticsearch
用户切换好后,我们直接进入解压好的elasticsearch-7.17.4中的bin目录中
cd /software/elasticsearch-7.17.4/bin
可以ls -l 一下就可以看到以下文件,下面圈出来的就是主程序
有两种运行方式,一个是直接运行(前台运行),一个是后台运行(使用nuhop)
1.3.1前台运行
可以测试一下elasticsearch能否正常运行,其依赖Java环境,所以还需要提前部署好Java环境,若还没有部署JAVA环境的话可以借鉴我这个博客Ubuntu部署java项目和vue项目
./elasticsearch
#关闭的时候使用CTRL+C
1.3.2后台运行
后续教程都是采用后台运行的方式
#在刚刚的bin目录下运行该命令,运行后会在本目录下自动创建名为log的日志文件
nohup ./elasticsearch >/dev/null 2>log &
后台运行成功后可以使用命令查看一下(输入上面后台运行命令后等待10几秒查看程序会不会自动崩溃)
ps -ef |grep elasticsearch
看到一下信息就说明启动成功了,这时候我们在命令行输入官方文档的测试命令
curl -X GET "localhost:9200/?pretty"
输入后终端出现以下输出就说明elasticsearch部署成功了
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.17.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.11.3",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
1.4远程连接elasticsearch
如果你需要远程连接elasticsearch,kibana等就需要配置elasticsearch让其能够远程连接
1.4.1修改配置文件
#1.打开配置文件/software/elasticsearch-7.17.4/config/elasticsearch.yml
sudo vim /software/elasticsearch-7.17.4/config/elasticsearch.yml
#2.在文章末添加如下内容
network.host: 0.0.0.0 #开启远程连接
http.port: 9230 #指定端口号,官方的是9200,保险起见我们还是自定义端口号
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#保存
修改配置文件并保存后进入到/software/elasticsearch-7.17.4/bin中并且执行以下代码
./elasticsearch-setup-passwords interactive
执行后,程序会让你在终端设置6个账号的密码设置完成后将刚刚运行的elasticsearch程序进行关闭输入以下内容(记得终止字最多的那个程序,不要终止错了)--密码要记住后面步骤要用(尽量6个账号密码统一)
#1.查询程序进程
ps -ef |grep elasticsearch
#2.将elasticsearch程序进行终止,主要不要杀错了,不要吧目前登录的es用户终止了,若终止es用户,就会回到root用户,使用root用户再执行第一步再执行下一步
kill -9 [进程号]
终止后再执行其在后台运行的命令1.3.2,等待10几秒后在查看程序状态(可能程序80%会出错)
报错如下(报错信息在名为log日志文件里):(ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch. bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] bootstrap check failure [2] of [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured ERROR: Elasticsearch did not exit normally - check the logs at /software/elasticsearch-7.17.4/logs/elasticsearch.log)这里借鉴的是阿里社区的解决方法
这个时候在 /etc/security/limits.conf 文件末尾追加以下内容
#1,打开文件
sudo vim /etc/security/limits.conf
#追加以下内容
* soft nofile 65536
* hard nofile 65536
在 /etc/sysctl.conf 文件下追加以下内容
#打开文件
sudo vim /etc/security/limits.conf
#追加以下内容
vm.max_map_count=655360
保存退出后再输入以下指令刷新配置
sysctl -p
重启elasticsearch,可能有60%报以下错误(ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; at least one of )
如果报以上错误进入到elasticsearch.yaml()里面再追加一行内容
#1.打开配置文件/software/elasticsearch-7.17.4/config/elasticsearch.yml
sudo vim /software/elasticsearch-7.17.4/config/elasticsearch.yml
#添加以下内容
cluster.initial_master_nodes: ["node-1"]
1.4.2配置成功
修改完成后保存重新启动elasticsearch (方法在1.3.2),启动完成,在本地浏览器输入地址:端口号,并且按照提示输入用户名和密码后出现以下内容说明配置成功,如果报错请查看log日志进行排错,如果程序正常运行并且访问不了,请查看防火墙,端口,安全组的开启情况
用户名:elastic
密码:刚刚你设置的密码
1.5安装ik分词器
ik是对中文比较友好的开源的分词器,这里是下载地址:下载链接,根据elasticsearch的版本下对应版本的ik分词器版本,我的是7.17.4版本,所以我选择的也是相同版本的分词器
下载好后将其上传到 /software/elasticsearch-7.17.4/plugins 然后解压到当前目录下
#进入到上传的目录中
cd /software/elasticsearch-7.17.4/plugins
#解压文件
unzip elasticsearch-analysis-ik-7.17.4.zip -d ik
#删除压缩包
rm elasticsearch-analysis-ik-7.17.4.zip
解压安装完毕,重启elasticsearch
2.安装配置Kibana
2.1下载解压
要安装与ElasticSearch版本相同的kibana,我上面的ElasticSearch安装的就是7.17.4版本,所以我的Kibana就安装7.17.4,放一个下载链接在这里,下载以下版本,更多请参考官方文档
我还是将其上传到 /software文件夹下,使用以下命令进行解压
#进入存储目录进行执行
tar -xzvf kibana-7.17.4-linux-x86_64.tar.gz
解压后得到以下文件
这里切换到root用户给es用户文件夹权限
#1.切换root用户
su root
#2.添加权限
chown -Rf es:es /software/kibana-7.17.4-linux-x86_64
#切回es用户
su es
2.2修改配置文件
切换到es用户后,修改Kibana的配置文件,在文件最后追加以下内容
#打开文件
vim /software/kibana-7.17.4-linux-x86_64/config/kibana.yml
#追加以下内容
server.port: 5630 #官方默认5601,建议自行指定
server.host: "0.0.0.0" #开启远程连接
elasticsearch.hosts: ["http://localhost:9200"]#elasticsearch端口号
elasticsearch.username: "elastic"
elasticsearch.password: "刚刚在elasticsearch设置的密码"
2.2启动Kibana
保存文件,进入kibana的bin目录下进行启动程序
#进入bin目录
cd /software/kibana-7.17.4-linux-x86_64/bin
查看bin目录下的文件信息,可以看到圈出来的就是主程序
2.2.1前台运行
命令行输入
./kibana
可以看到运行结果,如果报错请查看elasticsearch是否正常运行
在本地浏览器中输入【服务器ip】:【kibana端口号】可以看到以下网页,提示输入账号密码,账号和密码与ElasticSearch一样,这样说明kibana能够正常运行了(若失败请检查防火墙,端口开放情况以及安全组设置)
2.2.2后台运行
进入到bin目录输入以下内容
#进入bin目录
cd /software/kibana-7.17.4-linux-x86_64/bin
#输入执行命令
nohup ./kibana >/dev/null 2>log &
查看运行情况:
ps -ef |grep kibana
再在本地输入ip+端口号,可以看到已经能正常的使用了
这里就可以对elasticsearch进行可视化操作
执行上图命令可以看到右面正常输出,说明kibana与elasticsearch完全连接了可以进行自定操作
3.安装配置 Logstash
3.1下载解压
安装配置 Logstash实现Elasticsearch与数据库数据同步,更多详情请参考官方文档,版本也要与Elasticsearch的版本保持一致下载链接
将其上传到 /software 目录下并且在当前目录进行解压,命令如下
#进入到上传目录
cd /software
#解压logstash
3.2编写示例
进入到/software/logstash-7.17.4/config 中创建自己的实例
#进入到config目录中
cd /software/logstash-7.17.4/config
#创建自己的实例
touch mytask.conf
创建文件后,进入文件进行编写
sudo vim mytask.conf
#输入以下内容
input {
udp {
port => 514
type => "syslog"
}
}
output {
stdout { codec => rubydebug }
}
保存后进入到 /software/logstash-7.17.4/bin 中运行下面代码
#进入到bin目录中
cd /software/logstash-7.17.4/bin
#运行下面脚本启动程序
./bin/logstash -f ./config/mytask.conf
看到以下输出就说明logstash能够根据自己编写的conf运行了
3.3编写与数据库映射文件
终止程序重新回到config目录中,编写与数据库映射conf,注意这里要添加mysql-connector-java-8.0.29.jar的文件在服务器中,不然他会没有mysql驱动,这个可以在网上进行下载或者去idea项目去提取,下面可以参考官方文档,我这里提供了网盘地址,需要的友友自取
mysql-connector-java-8.0.29.jar
链接: https://pan.baidu.com/s/1jwNGdWooAhTq1bDtRLDBuw 提取码: sd97
#进入到config目录中
cd /software/logstash-7.17.4/config
#示例
input {
jdbc {
jdbc_driver_library => "mysql-connector-java-8.0.29.jar的文件地址"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/my_db"
jdbc_user => "数据用户"
jdbc_password => "密码"
statement => "SELECT * from post where updateTime > :sql_last_value and updateTime < now() order by updateTime desc"
tracking_column => "updatetime"
tracking_column_type => "timestamp"
use_column_value => true
parameters => { "favorite_artist" => "Beethoven" }
schedule => "*/5 * * * * *" #每5秒执行一次
jdbc_default_timezone => "Asia/Shanghai"
}
}
filter {
mutate {
rename => {
"updatetime" => "updateTime"
"userid" => "userId"
"createtime" => "createTime"
"isdelete" => "isDelete"
}
remove_field => ["thumbnum", "favournum"]
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
user =>"logstash_system"
pasword=>"上面你设置的elasticsearch密码"
hosts => "127.0.0.1:9200"#Elasticsearch ip以及端口地址
index => "post_v1"#映射到Elasticsearch哪个表中
document_id => "%{id}" #id
}
}
保存后然后我们回到/software/logstash-7.17.4/ 运行以下指令
./bin/logstash -f ./config/mysqltask.conf
可以看到以下输出代表已经配置成功
然后停掉他,将其进行后台运行
nohup ./bin/logstash -f ./config/mysqltask.conf >/dev/null 2>log &
#检查运行状态
ps -ef|grep logstash
得到以下输出代表 logstash 配置运行成功
我的本篇博客到这就告一段落了,制作不易,如果可以的话方便给个三连吗
我是Jerry,每天进步一点点