es安装笔记

it2022-05-05  197

https://note.youdao.com/ynoteshare1/index.html?id=dc6a3b2b1606dbf08e57fb4518cecef7&type=note

查看具体报错信息

sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch \ -Des.pidfile=/var/run/elasticsearch/elasticsearch.pid \ -Des.default.path.home=/usr/share/elasticsearch \ -Des.default.path.logs=/var/log/elasticsearch \ -Des.default.path.data=/var/lib/elasticsearch \ -Des.default.path.conf=/etc/elasticsearch

which: no java in (/usr/sbin:/usr/bin:/sbin:/bin) Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME

chmod 755 -R  ./  写入权限  ll路径查看权限

rpm安装  es   logstash   elasticsearch

https://www.elastic.co/guide/en/kibana/7.2/rpm.html

https://www.elastic.co/guide/en/logstash/7.2/installing-logstash.html

https://www.elastic.co/guide/en/elasticsearch/reference/7.2/rpm.html

 

1.main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

<jre>/lib/security/java.policy,文件中添加如下:

permission javax.management.MBeanTrustPermission "register";

2.系统变量中必须存在JAVA_HOME

 

其他条件

关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

 

保证JDK版本是 1.8+,使用 java -version检测,如果不是,则需要先删除旧版本的jdk,再安装新版本,步骤如下:

 

卸载JDK

Centos7一般都会带有自己的openjdk,我们一般都回用oracle的jdk,所以要卸载

步骤一:查询系统是否以安装jdk

  #rpm -qa|grep java

或 #rpm -qa|grep jdk

或 #rpm -qa|grep gcj

步骤二:卸载已安装的jdk

  #rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64

  #rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64

  #rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

  #rpm -e --nodeps java-1.7.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

步骤三:验证一下是还有jdk

  #rpm -qa|grep java

  #java -version

没有内容证明已经卸载干净了

 

步骤四:如果 java -version仍然有信息,则需要手动删除一些文件夹

1.执行 whereis java 找出java相关文件夹,然后依次删除

rm -rf 文件夹名称

2.删除环境变量 vim /etc/profile

删除 JAVA_HOME

source /etc/profile刷新环境变量,重新执行 java -version

 

安装JDK8

步骤一:

yum search java|grep jdk #查看yum库中都有哪些jdk版本

yum install java-1.8.0-openjdk #安装Java1.8

 

步骤二:配置环境变量

进入 cd /usr/lib/jvm 进入安装目录,复制jdk名称

编辑/etc/profile文件

vim /etc/profile #设置Java环境变量

 

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64

export JRE_HOME=/etc/alternatives/jre_1.8.0

export PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH

 

步骤三:生效profile

source /etc/profile

 

步骤四,验证java版本

java -version

 

安装elasticsearch

导入elasticsearch key秘钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

设置elasticsearch 源

进入/etc/yum.repos.d/文件夹,并创建文件 elasticsaerch.repo。

cd /etc/yum.repos.d

vim elasticsaerch.repo

 

写入如下内容:

[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md

 

安装elasticsearch

sudo yum install elasticsearch

 

启动elasticsearch

sudo systemctl daemon-reload #对于新创建的unit文件或,修改了的unit文件,要通知systemd重载此配置文件 sudo systemctl enable elasticsearch.service #开机启动

sudo systemctl start elasticsearch.service #启动elasticsearch服务 sudo systemctl stop elasticsearch.service #停止elasticsearch服务

 

检测elasticsearch服务是否正常

curl localhost:9200

正确返回如下:

{

"name" : "ZhVu-ER",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "bRrwwzXPQDKx5nYaLH5iyQ",

"version" : {

"number" : "6.5.1",

"build_flavor" : "default",

"build_type" : "rpm",

"build_hash" : "8c58350",

"build_date" : "2018-11-16T02:22:42.182257Z",

"build_snapshot" : false,

"lucene_version" : "7.5.0",

"minimum_wire_compatibility_version" : "5.6.0",

"minimum_index_compatibility_version" : "5.0.0"

},

"tagline" : "You Know, for Search"

}

 

3.配置elasticsearch

配置文件的路径在/etc/sysconfig/elasticsearch中配置,默认配置文件的路径是 /etc/elasticsearch, 可以在/etc/sysconfig/elasticsearch中修改ES_PATH_CONF。

主要有3个配置文件:

elasticsearch.yml elastsearch配置文件

jvm.options elasticsearch jvm配置文件

log4j2.properties elasticsearch日志配置文件

 

elasticsearch.yml中配置:

path.data: /var/lib/elasticsearch #data存放路径

path.logs: /var/log/elasticsearch #日志存放路径

http.port: 9200 #表示elasticsearch的端口

cluster.name: pengxuancluster #集群名称,相同集群名字的节点才能加入到同一个集群

node.name: pengxuannode-1 #节点名称,集群内唯一

network.host: 0.0.0.0 #默认值为127.0.0.1,也可以指定为内网ip,指定为0.0.0.0则可以过外网ip访问

discovery.zen.ping.unicast.hosts: ["122.207.86.14", "122.207.86.15"] #广播host,表示要加入到同一个集群的host地址,会扫描 9300--9305端口。

 

jvm.options 配置:

-Xms2g #表示最小使用2g内存

-Xmx4g #表示最大使用4g内存

 

4.启动/关闭elastisearch

4.1 启动: systemctl start elasticsearch 关闭:systemctl stop elasticsearch

4.2 启动: ./bin/elasticsearch 关闭:直接 ctrl + c

4.3 后台启动: ./bin/elasticsearch -d 关闭:ps -ef|grep Elasticsearch,得到pid,然后执行

kill -SIGTERM pid

5.测试 打开 ip:9200测试是否正常,如果无法打开,关闭防火墙,或者添加端口号为可通过防火墙

firewall-cmd --permanent --add-port=9200/tcp

firewall-cmd --reload

 

安装kibana

导入kibana秘钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

设置kibana 源

进入/etc/yum.repos.d/文件夹,并创建文件 kibana.repo,写入内容:

[kibana-6.x] name=Kibana repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md

 

执行安装命令

sudo yum install kibana

 

启动kibana

sudo systemctl daemon-reload ##对于新创建的unit文件或,修改了的unit文件,要通知systemd

 

重载此配置文件 sudo systemctl enable kibana.service #设置开机启动

sudo systemctl start kibana.service #启动服务 sudo systemctl stop kibana.service #停止服务

 

配置kibana

进入/etc/kibana ,编辑文件 kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://122.207.86.14:9200"

 

测试 打开 ip:5601测试是否正常,如果无法打开,关闭防火墙,或者添加端口号为可通过防火墙

firewall-cmd --permanent --add-port=5601/tcp

firewall-cmd --reload

 

破解x-pack

x-pack,默认已经安装了,所以只需要破解即可。

1.为什么要破解x-pack?

因为涉及到了ES服务的安全性。

2.本教程前提

默认你已经安装好了elasticsearch 和kibana

3.适用范围

所有ES版本都适用,破解原理都一样

 

1.重写x-pack下的2个类:LicenseVerifier.java和XPackBuild.java

重写完的类链接: https://pan.baidu.com/s/1ESqoZW8eieO7Zdgs31hxsQ 密码: uqnd

覆盖流程

1.找到目标jar包 elasticsearch-6.3.1\modules\x-pack\x-pack-core\x-pack-core-6.3.1.jar

2.用LicenseVerifier.class 覆盖x-pack-core-6.3.1.jar\org\elasticsearch\license目录下的同名文件

3.同理用 XPackBuild.class 覆盖 x-pack-core-6.3.1.jar\org\elasticsearch\xpack\core 目录下的同名文件

 

2.去官网申请license证书

https://license.elastic.co/registration 官网地址

1.邮箱认真写,用来接收json文件的

2.country写china,其它都可以随便写

3.点击申请后邮箱马上会收到一个邮件

 

3.修改申请到的证书

主要修改这几个地方

1."type":"basic" 替换为 "type":"platinum" # 基础版变更为铂金版

2."expiry_date_in_millis":1561420799999 替换为 "expiry_date_in_millis":3107746200000# 1年变为50年

好好保存,修改后的文件可以重复使用到其它ES服务器

 

4.上传证书完成修改

上传前准备,打开elasticsearch.yml 配置文件 加入 xpack.security.enabled: false打开elasticsearch服务 和 kibana服务进入kibana后台 localhost:5601,进入到如下图所示的页面:

 

4.上传证书,就是那个json文件 upload license

5.上传成功.到此破解x-pack已经成功了.如图所示续命到了2068年,可以随意使用ES X-pack的一些付费功能

5.修改ES启动用户

使用x-pack用户认证的时候,如果使用root用户启动es,则会出现错误,这是因为出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,所以需要创建一个单独的用户来运行elasticsearch。

1.创建elastic用户组以及elastic用户

groupadd elastic

useradd elastic -g elastic -p pengxuan # elastic为用户名 -g 表示组名 -p 表示密码

 

2.针对文件夹添加权限

chown -R elastic:elastic /usr/share/elasticsearch

chown -R elastic:elastic /var/log/elasticsearch

chown -R elastic:elastic /var/lib/elasticsearch

chown -R elastic:elastic /etc/elasticsearch

chown -R elastic:elastic /etc/sysconfig/elasticsearch

chown -R elastic:elastic /etc/init.d/elasticsearch

 

3.重新开启elasticsearch

3.1进入elasticsearch文件夹 cd /usr/share/elasticsearch 执行./bin/elasticsearch -d -p /usr/share/elasticsearch/elasticsearch.pid,如果有提示无权访问某个文件或者文件夹,则切回到root用户,执行2中的命令,将文件夹修改为无权访问的文件夹即可。

3.2如果执行出现错误,max file descriptors [4096] for elasticsearch process is too low, increase to

at least [65536]。

切回到root用户,vim /etc/security/limits.conf 添加如下设置:

elastic soft nofile 65536 #elastic为用户名称

elastic hard nofile 65536 #leastic为用户名称

执行 exit,退出elastic用户,使配置生效。

3.3重新执行3.1步骤即可

3.4在执行

 

6.开启ES的登录功能

1.修改elasticsearch.yml配置

# 添加如下2行,打开安全配置功能 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true

2.重置登陆权限密码,默认为changeme

bin/elasticsearch-setup-passwords interactive

按步骤分别重置elastic/kibana等账号的密码elastic就是登陆elasticsearch服务的最高权限账号

3.修改kibana配置

# 在kibana.yml下添加如下两行 elasticsearch.username: "elastic" elasticsearch.password: {你修改的password}

此处修改完后,重启ES和kibana服务就需要登陆账号和密码了

4.x-pack设置完毕后,head无法登陆的问题

# 在elasticsearch.yml中添加如下三行配置 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

重启服务,并通过如下形式访问head端口

http://192.168.36.61:9100/?auth_user=elastic&auth_password=passwd

 

 

安装logstash

导入logstsh的密钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

创建logstash源

进入 /etc/yum.repos.d/ 文件夹,创建文件 logstash.repo,写入如下内容:

[logstash-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md

 

执行安装脚本

yum install logstash

 

 

配置logstash

进入cd cd /etc/logstash文件夹,logstash.yml为logstash配置文件

修改

node.name #表示节点的名字,默认为机器的hostname

path.data #表示数据存放文件夹,默认为LOGSTASH_HOME/data

path.config #表示config文件的存放路径,默认路径配置在 /etc/logstash/pipelines.yml中,路径是/etc/logstash/conf.d/*.conf

 

添加logstash config

新增一个input为mysql,output为elasticsearch的config

进入 /etc/logstash/conf.d文件夹,新建文件 logstash-mysql.conf,写入内容:

input {

jdbc {

jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"

jdbc_driver_class => "com.mysql.jdbc.Driver"

jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"

jdbc_user => "mysql"

jdbc_password => ""

tracking_column=> "createtime" #表示 sql_last_value所使用的列

tracking_column_type=> "timestamp" #表示sql_last_value列的类型

schedule => "* * * * *"

statement => "SELECT * from tablename where createtime >:sql_last_value"

}

}

output{

elasticsearch{

id => "tablename"

index => "tablename-%{+YYYY.MM.dd}" #index规则

document_id => "%{id}" #文档的id

hosts => ["122.207.86.14:9200"] #es的地址

}

}

 

设置开机启动

systemctl enable logstash

 

可能出现错误:failed to start logstash unit not found

解决方案:执行 /usr/share/logstash/bin/system-install 即可,重新执行上述命令

 

可能出现错误:Could not find logstash.yml

解决方案:执行命令时候加上参数 --path.settings=/etc/logstash

 

可能出现错误:Unable to connect to database. Tried 1 times {:error_message=>"Java::JavaSql::SQLException: Access denied for user 'root'@'本机ip' (using password: YES)"

解决方案:mysql默认只能在当前local中进行连接,如果需要在其他ip访问,则需要添加用户,并指定ip地址和mysql root用户(其他用户)的密码,同时设置权限即可。

 

可能出现错误:Error writing file 'xxxx.tmp'

解决方案:表示mysql数据库所在的临时文件目录磁盘空间过小,修改mysql的my.ini文件,指定tmpdir为另外的磁盘即可。

 

 

创建索引模板

PUT /_template/everything_template

{

"index_patterns": "visit-*",

"settings": {

"number_of_shards": 2, #设置主分片数

"number_of_replicas" : 1 #设置复制分片数

}

}


最新回复(0)