🥖ElasticSearch-03-ElasticSearch单机安装
了解完ElasticSearch基础和Elastic Stack生态后,我们便可以开始学习使用ElastiSearch了。所以本文主要介绍ElasticSearch和Kibana的单机安装。
本系列教程基于ElasticSearch 7.x版本。
ElasticSearch 是基于Java平台的,所以先要安装Java. 默认es7匹配使用java11
🍼安装Java
安装 Elasticsearch 之前,你需要先安装一个较新的版本的 Java,最好的选择是,你可以从 www.java.com ✓ 获得官方提供的最新版本的 Java。安装以后,确认是否安装成功:
我这里还是默认的java8,但是不影响只是后面报个警告而已
[root@n2 script]# java -versionjava version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
🍼下载ElasticSearch
从这里下载ElasticSearch,比如可以通过curl下载
[root@n2 script]# curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
🍼增加elasticSearch用户
必须创建一个非root用户来运行ElasticSearch(ElasticSearch5及以上版本,基于安全考虑,强制规定不能以root身份运行。)
如果你使用root用户来启动ElasticSearch,则会有如下错误信息:
[2021-04-05T21:36:46,510][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [VM-0-14-centos] uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root....
所以我们增加一个独立的elasticsearch用户来运行
#先创建组, 再创建用户[root@n2 ~]# groupadd elasticsearch# 增加elasticsearch用户[root@n2 script]# useradd es[root@n2 script]# passwd esmkdir -p /work/elasticsearch#用户es 添加到 elasticsearch 用户组[root@n2 ~]# usermod -G elasticsearch es[root@n2 ~]# chown -R es /work/elasticsearch/#设置sudo权限#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作[root@n2 ~]# visudo#在root ALL=(ALL) ALL 一行下面#添加es用户 如下:es ALL=(ALL) ALL#添加成功保存后切换到es用户操作[root@n2 ~]# su es[es@n2 root]#
然后下载的tar包也好 上传的tar包也行,解压到我们的目录下面
# 解压Elasticsearchsu escd /work/elasticsearchtar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz
🍼添加data和log目录并修改配置文件
cd /work/elasticsearch/elasticsearch-7.6.1/configmkdir -p /work/elasticsearch/elasticsearch-7.6.1/logmkdir -p /work/elasticsearch/elasticsearch-7.6.1/datacp elasticsearch.yml elasticsearch.yml.backvim elasticsearch.ymlcluster.name: ralph-esnode.name: es1path.data: /work/elasticsearch/elasticsearch-7.6.1/datapath.logs: /work/elasticsearch/elasticsearch-7.6.1/lognetwork.host: 0.0.0.0http.port: 9200discovery.seed_hosts: ["192.168.230.135"]cluster.initial_master_nodes: ["es1"]bootstrap.system_call_filter: falsebootstrap.memory_lock: falsehttp.cors.enabled: truehttp.cors.allow-origin: "*"
🍼修改JVM
修改jvm.option配置文件,调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整.
cd /work/elasticsearch/elasticsearch-7.6.1/configvim jvm.options-Xms2g-Xmx2g
🍼修改Linux系统的限制配置
由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
添加如下内容: 注意*不要去掉了
sudo vim /etc/security/limits.conf* soft nofile 65536* hard nofile 131072* soft nproc 2048* hard nproc 4096
修改普通用户可以创建的最大线程数,如不修改可能会报错max number of threads [1024] for user [es] likely too low, increase to at least [4096]
Centos6sudo vim /etc/security/limits.d/90-nproc.conf* soft nproc 1024 #修改为* soft nproc 4096Centos7sudo vim /etc/security/limits.d/20-nproc.conf* soft nproc 1024 #修改为* soft nproc 4096
普通用户调大虚拟内存,如不修改可能会报错max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vim /etc/sysctl.confvm.max_map_count=262144
保存退出后 需要执行sysctl -p
以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效
🍼启动ES方式
nohup /work/elasticsearch/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &
也可以后台启动ES 进入bin目录 ./elasticsearch -d,启动成功之后jsp即可看到es的服务进程,并且访问页面,能够看到es启动之后的一些信息
http://192.168.230.135:9200/?pretty

如有报错可以在对应的log下面看信息,注意关不selinux和防火墙
启动脚本
#!/bin/bashexport ES_HOME=/work/elasticsearch/elasticsearch-7.6.1/export PATH=$ES_HOME/bin:$PATHAPP_NAME=elasticsearchusage() {echo "[INFO:] case:sh run.sh [start | stop | restart | status]"echo "[INFO:] Pls run ./es.sh start or ./es.sh restart"exit 1}case $1 instart)su es <<!cd $ES_HOME./bin/elasticsearch -d -p pidexit!echo "[INFO:] elasticsearch is started";;stop)pid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v x-pack-ml |awk '{print $2}'`kill -9 $pidecho "[INFO:] elasticsearch is stopped";;restart)pid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v x-pack-ml |awk '{print $2}'`kill -9 $pidecho "[INFO:] elasticsearch is stopped"sleep 1su es<<!cd $ES_HOME./bin/elasticsearch -d -p pidexit!echo "[INFO:] elasticsearch is started";;*)echo usage;;esacexit 0
🍼安装Kibana
Kibana是界面化的查询数据的工具,开放9200端口与图形界面客户端交互,下载时尽量下载与ElasicSearch一致的版本。
从这里下载Kibana,放置在对应目录并解压
tar -vxzf kibana-7.6.1-linux-x86_64.tar.gz
编辑 kibana.yml
server.port: 5601server.host: "服务器IP"elasticsearch.hosts: ["http://IP:9200"] #这里是elasticsearch的访问地址
启动kibana
[es@n2 bin]$ pwd/work/elasticsearch/kibana-7.6.1-linux-x86_64/bin[es@n2 bin]$ nohup ./kibana &
访问界面

可以导入simple data

密码配置
- 停止kibana和elasticsearch服务
- 将
xpack.security.enabled设置添加到ES_PATH_CONF/elasticsearch.yml文件并将值设置为true- 启动elasticsearch (
./bin/elasticsearch -d)- 执行如下密码设置器,
./bin/elasticsearch-setup-passwords interactive来设置各个组件的密码- 将elasticsearch.username设置添加到KIB_PATH_CONF/kibana.yml 文件并将值设置给elastic用户:
elasticsearch.username: "elastic"- 创建kibana keystore,
./bin/kibana-keystore create- 在kibana keystore 中添加密码
./bin/kibana-keystore add elasticsearch.password- 重启kibana 服务即可
nohup ./bin/kibana &

🍼安装IK分词器
我们后续也需要使用Elasticsearch来进行中文分词,所以需要单独给Elasticsearch安装IK分词器插件。
下载Elasticsearch IK分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases
使用es用户放置在插件目录下
/work/elasticsearch/elasticsearch-7.6.1/plugins/ik
下载好后解压安装
unzip elasticsearch-analysis-ik-7.6.1.zip
❗ 重启Elasticsearch
🥖ElasticSearch-03-ElasticSearch集群安装
同上面的单机安装, 所有的配置环境一样,仅在配置==elasticsearch.yml==中发生一点点的改变
| IP | ES-NodeName | ES-NodeName配置 |
|---|---|---|
| 192.168.230.135 | es1 | 4C8U |
| 192.168.230.134 | es2 | 4C8U |
| 192.168.230.133 | es3 | 2C4U |
#集群名称cluster.name: ralph-es#节点名称node.name: es1#索引数据存放路径path.data: /work/elasticsearch/elasticsearch-7.6.1/data#日志存放路径path.logs: /work/elasticsearch/elasticsearch-7.6.1/log#当前服务器IP地址network.host: 192.168.230.135#es服务对外提供的端口号http.port: 9200#服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)transport.tcp.port: 9300#设置是否压缩tcp传输时的数据,默认为false,不压缩transport.tcp.compress: true#集群各个节点的ipdiscovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]#集群各个节点名称,集群选举设置cluster.initial_master_nodes: ["es1","es2","es3"]#锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swapbootstrap.memory_lock: false#避免脑裂问题,集群节点数最少为半数+1discovery.zen.minimum_master_nodes: 2bootstrap.system_call_filter: false#开启跨域http.cors.enabled: truehttp.cors.allow-origin: "*"
#集群名称cluster.name: ralph-es#节点名称node.name: es2#索引数据存放路径path.data: /work/elasticsearch/elasticsearch-7.6.1/data#日志存放路径path.logs: /work/elasticsearch/elasticsearch-7.6.1/log#当前服务器IP地址network.host: 192.168.230.134#es服务对外提供的端口号http.port: 9200#服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)transport.tcp.port: 9300#设置是否压缩tcp传输时的数据,默认为false,不压缩transport.tcp.compress: true#集群各个节点的ipdiscovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]#集群各个节点名称,集群选举设置cluster.initial_master_nodes: ["es1","es2","es3"]#锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swapbootstrap.memory_lock: false#避免脑裂问题,集群节点数最少为半数+1discovery.zen.minimum_master_nodes: 2bootstrap.system_call_filter: false#开启跨域http.cors.enabled: truehttp.cors.allow-origin: "*"
#集群名称cluster.name: ralph-es#节点名称node.name: es3#索引数据存放路径path.data: /work/elasticsearch/elasticsearch-7.6.1/data#日志存放路径path.logs: /work/elasticsearch/elasticsearch-7.6.1/log#当前服务器IP地址network.host: 192.168.230.133#es服务对外提供的端口号http.port: 9200#服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)transport.tcp.port: 9300#设置是否压缩tcp传输时的数据,默认为false,不压缩transport.tcp.compress: true#集群各个节点的ipdiscovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]#集群各个节点名称,集群选举设置cluster.initial_master_nodes: ["es1","es2","es3"]#锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swapbootstrap.memory_lock: false#避免脑裂问题,集群节点数最少为半数+1discovery.zen.minimum_master_nodes: 2bootstrap.system_call_filter: false#开启跨域http.cors.enabled: truehttp.cors.allow-origin: "*"
可以只在一个节点中安装Kibana
GET _cat/nodes?vGET _cat/health?v

🍼Elasticsearch-head插件
由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面
elasticsearch-head这个插件是es提供的一个用于图形化界面查看的一个插件工具,可以安装上这个插件之后,通过这个插件来实现我们通过浏览器查看es当中的数据
具体的安装可以参考这份文档来完成

