一、安装es
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库--无论是开源还是私有。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。
Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段 可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。
就 Elasticsearch 而言,起步很简单。对于初学者来说,它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。 它 开箱即用 。只需最少的理解,你很快就能具有生产力。
随着你知识的积累,你可以利用 Elasticsearch 更多的高级特性,它的整个引擎是可配置并且灵活的。 从众多高级特性中,挑选恰当去修饰的 Elasticsearch,使它能解决你本地遇到的问题。
vim 编辑文件
Esc+:+wq 退出并保存当前文件
Esc+:+q! 退出不保存当前编辑文件
ctrl+c 退出当前编译
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl start firewalld.service 开启防火墙
yum install firewalld 启动firewalld服务
firewall-cmd --query-port=8080/tcp 查看8080端口有没有开启
firewall-cmd --add-port=8080/tcp --permanent 将8080端口开启
firewall-cmd --reload 开启后重启
1. 去官网下载ES(下载地址:https://www.elastic.co/cn/downloads/elasticsearch)
2. jdk1.8安装
#检查当前系统是否有jdk
java -version
rpm -qa|grep java
#移除当前系统安装的jdk
rpm -e xxx
#解压jdk8
tar -zxvf jdk-8u112-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_112 jdk
#在profile文件中添加环境变量
vim /etc/profile
```
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
```
source /etc/profile
3. 放到服务器上,并解压(如果一台服务器需要配置多个实例,需要几个就拷贝几个)
tar -zxvf elasticsearch-6.3.0.tar.gz -C /usr/local/
4. elasticsearch.yml配置
vim config/elasticsearch.yml
# 大小写敏感,使用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可# 表示注释,从这个字符一 直到行尾,都会被解析器忽略。
# cluster.name可以确定你的集群名称,当你的elasticsearch集群在同一个网段中elasticsearch会自动的找到具有相同cluster.name的elasticsearch服务.
# 所以当同一个网段具有多个elasticsearch集群时cluster.name就成为同一个集群的标识.
cluster.name: elasticsearch
#################################### Node #####################################
# https://www.elastic.co/guide/en/elasticsearch/reference/5.1/modules-node.html#master-node
# 节点名称同理,可自动生成也可手动配置. (同一个集群节点名称不能重复)
node.name: node-1
# 允许一个节点是否可以成为一个master节点,es是默认集群中的第一台机器为master,如果这台机器停止就会重新选举master.
node.master: true
# 允许该节点存储数据(默认开启)
node.data: true
# 默认情况下,多个节点可以在同一个安装路径启动,如果你想让你的es只启动一个节点,可以进行如下设置
node.max_local_storage_nodes: 1
#################################### Paths ####################################
# 建议数据和日志的保存路径自己定义在es外边的位置,以便后期如果升级es之类的,数据和日志还在
# 数据存储位置
path.data: /usr/local/elasticserch-6.3.0/data
# 日志文件的路径
path.logs: /usr/local/elasticserch-6.3.0/logs
################################### Memory ####################################
# 当JVM开始写入交换空间时(swapping)ElasticSearch性能会低下,你应该保证它不会写入交换空间
# 设置这个属性为true来锁定内存
bootstrap.mlockall: true
# 注意:内存也不是越大越好,一般64位机器,最大分配内存别才超过32G
############################## Network And HTTP ###############################
network.host: 192.168.192.128 #绑定监听IP
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# 设置对外服务的http端口,默认为9200
http.port: 9200
################################## Discovery ##################################
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点.默认为1,对于大的集群来说,可以设置大一点的值(2-4)
# discovery.zen.minimum_master_nodes: 1
# 这是一个集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测(只需要配置有资格成为master的节点就行了)
discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
#禁用swap:
sudo swapoff -a
#修改linux内核参数
sudo vim /etc/security/limits.conf
#添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft memlock unlimited
* hard memlock unlimited
#修改虚拟内存空间及swap使用率
sudo vim /etc/sysctl.conf
vm.max_map_count=655360
vm.swappiness=1
sudo sysctl -p
#修改创建本地线程数
sudo vim /etc/security/limits.d/20-nproc.conf
#添加如下内容:
* hard nproc 4096
--启动
ES不能用root用户启动,否则会启动报错
①添加es用户
adduser es
②给es用户赋予操作文件夹的权限
chown -R es:es /usr/local/elasticserch-6.3.0
③切换到es用户,启动es
su es
④将9200端口打开,再启动
/usr/local/elasticserch-6.3.0/bin/elasticsearch
访问:
若启动报运行时错误,就将/usr/local/elasticsearch-6.3.0/config/jvm.optinots中Xms值改小点
----------------------------------------------------------------------------------------------------------------
一、安装kibana
上传kibana-6.2.4-linux-x86_64.tar.gz
tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz -C /usr/local/
vim config/kibana.yml
```
server.port: 5601
server.host: "192.168.192.128"
elasticsearch.url: "http://192.168.192.128:9200"
```
启动:
/usr/local/kibana-6.3.0-linux-x86_64/bin/kibana
二、x-pack的安装(用于设置用户名和密码)
es6.3和kibana6.3版本,x-pack在你安装es和kibana时就默认安装了,要开启只需要修改相应的配置就行了。
在上述步骤,启动了es和kibana之后,此时通过浏览器访问es和kibana是不需要登陆的,
进入kibana---》Management--》License Management,有个免费使用30天的,点击开启(如
下图)
1. 配置证书
bin/elasticsearch-certutil ca # 默认直接点击进行下一步,密码也可以不输
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 默认直接点击进行下一步,密码也可以不输
# 这时在es目录下会生成elastic-certificates.p12、elastic-stack-ca.p12
mkdir config/certs/
mv elastic-certificates.p12 config/certs/
# 多个节点不用重新生成,cp过去就行了
然后修改elasticsearch.yml文件:
xpack.security.enabled: true #开启x-pack验证
xpack.security.transport.ssl.enabled: true #开启ssl
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
重启es前可以先设置elastic的密码
bin/elasticsearch-keystore add bootstrap.password #设置内置用户elastic的密码(会提示输入密码,这个就是elastic用户的密码)
重新启动es,设置内置用户密码
(https://www.elastic.co/guide/en/elastic-stack-overview/current/built-in-users.html#set-built-in-user-passwords)
bin/elasticsearch-setup-passwords interactive #可以自定义设置elastic、kibana等这些用户的密码
此时由于es开启了x-pcak验证,kibana需要设置连接的es用户、密码
方式一:vim kibana/config/kibana.yum
填入前面设置的用户及密码
#elasticsearch.username: "user"
#elasticsearch.password: "pass"
方式二(建议):使用keystore,这种方式会在kibana/data下生成一个kibana.keystore文件,该文件是加密的(https://www.elastic.co/guide/en/kibana/current/secure-settings.html)
bin/kibana-keystore create
bin/kibana-keystore add elasticsearch.username
bin/kibana-keystore add elasticsearch.password
(建议就使用kibana用户及对应的密码)
然后重新启动kibana,访问kibana时会提示输入用户名密码了