下载
ElasticSearch官网下载、
当前案例版本6.6.0,建议使用 7.x 以上的版本
安装
- 解压
[admin@hadoop102 software]$ tar -zxvf elasticsearch-6.6.0.tar.gz -C /opt/module/
tar -zxvf :解压tar.gz 命令
-C:解压之后的保存目录
- cd 进入 -C 目录
[admin@hadoop102 software]$ cd /opt/module
- 重命名
[admin@hadoop102 module]$ mv elasticsearch-6.6.0/ elasticsearch
- 创建 datas目录
es需要存储一些资源到本地,创建datas目录便于指定资源存放地址。
[admin@hadoop102 elasticsearch]$ mkdir datas
- 查看结构
[admin@hadoop102 elasticsearch]$ ls
bin // 存放 es 的一些服务命令,启动停止等
config // es 配置相关的
datas // 上面创建用于存放 es 资源的目录
lib // es 的依赖包
LICENSE.txt
logs // es 的运行日志
modules // 需要额外加载的第三方模块
NOTICE.txt
plugins // es 插件 包括 ik 分词器
README.textile
配置
- 进入到
config
目录中
[admin@hadoop102 elasticsearch]$ cd config/
- 配置结构
[admin@hadoop102 config]$ ls
elasticsearch.yml
jvm.options
log4j2.properties
role_mapping.yml
roles.yml
users
users_roles
- 配置
elasticsearch.yml
,配置如下
# 集群名称
cluster.name: my-application
# es 每个节点的唯一的id(集群配置)
node.name: node-1
# es 数据存储的目录(上面创建的 datas目录的绝对路径)
path.data: /opt/module/elasticsearch/datas
# 日志文件 默认在es安装目录的家目录/logs中(所有可以不用指定)
#path.logs: /path/to/logs
#默认为true,我这里修改为false,若为true 会将堆大小设置为当前节点可用内存的一半,这样也有好处,若堆内存设置太小,当内存资源不够时,需要再次申请资源,为了避免申请资源时带来额外的消耗所以默认设置为true。
#我使用的虚拟机,还得运行其他服务,再加上es运算资源不会太大,所以就改成了false。
bootstrap.memory_lock: false
#额外加的一个参数,出现错误的原因(百度找的):是因为centos6.x操作系统不支持SecComp,而elasticsearch 5.5.2默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
#在elasticsearch.yml中添加配置项:bootstrap.system_call_filter为false:
bootstrap.system_call_filter: false
# 绑定的主机名(es 安装在哪台服务器就绑定那台服务器IP
network.host: 192.168.0.1
# es 端口,可以不用指定,默认就是9200
#http.port: 9200
# 加入集群的设置,如果当前机器启动时,希望加入集群,会向哪些节点发送加入集群的请求。
#(若需要集群配置,就打开注释,host1和host2 就是绑定的其他节点的IP)
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
保存退出
:wq
- 修改jvm.options
es 启动默认会占用1G资源,若服务器性能不是很好,就需要配置一下。
修改
-Xms1g
-Xmx1g
为
-Xms256m
-Xmx256m
- 分发(若有集群,则向其他服务器进行安装配置)
以下配置需要注意一下,需要进行更改
# es 每个节点唯一的id
node.name: node-1
# 绑定的主机名(es 安装在哪台服务器就绑定那台服务器IP
network.host: 192.168.0.1
- 修改操作系统配置
es 的配置已经搞定了,但是es本身可以算得上时一种数据库,就得要求操作系统的配置得跟上数据库,es需要往系统写很多数据,因此他对系统的磁盘页大小包括同时启动的线程数量都是由要求的,所以就得改一些Linux本地的配置。
需要切换到root
用户,使用 su root
命令。
[admin@hadoop102 config]$ su root
密码:
- 编辑
limits.conf
配置
vi /etc/security/limits.conf
添加以下内容(具体是啥不太清除,会影响Linux内核)
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
注意:*
不要省略掉
- 进入limits.d目录下修改配置文件。
(CentOS7.x不用改)
vi /etc/security/limits.d/90-nproc.conf
将
soft nproc 1024
修改成
soft nproc 1024
- 编辑
sysctl.conf
vi /etc/sysctl.conf
添加以下配置,用于调大线程数
vm.max_map_count=655360
若想知道命令是否执行生效,需要执行sysctl -p
命令
[root@hadoop102 config]# sysctl -p
vm.max_map_count = 655360
- 若配置的是集群,那么其他服务器都得操作
- 最后一步,服务器必须重启,否则es可能无法启动(
必须做
)
sudo reboot
启动
配置完成,重启之后,就可以启动es了,若是集群配置,其他都服务器也得手动启,非集群配置,启动一台即可。
- 进入安装es的家目录中。
[admin@hadoop102 ~]$ cd /opt/module/elasticsearch/
- 执行
sh bin/elasticsearch
[admin@hadoop102 elasticsearch]$ sh bin/elasticsearch
- 该方式是前台启动,所以直接可以在终端查看到启动日志
[2021-08-02T18:45:39,747][INFO ][o.e.e.NodeEnvironment ] [node-102] using [1] data paths, mounts [[/ (/dev/sda3)]], net usable_space [30.5gb], net total_space [46.9gb], types [xfs]
[2021-08-02T18:45:39,748][INFO ][o.e.e.NodeEnvironment ] [node-102] heap size [989.8mb], compressed ordinary object pointers [true]
[2021-08-02T18:45:39,749][INFO ][o.e.n.Node ] [node-102] node name [node-102], node ID [fvWvPj5nRzKuaqd3ooT1IA]
[2021-08-02T18:45:39,749][INFO ][o.e.n.Node ] [node-102] version[6.6.0], pid[2341], build[default/tar/a9861f4/2019-01-24T11:27:09.439740Z], OS[Linux/3.10.0-1160.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_212/25.212-b10]
[2021-08-02T18:45:39,749][INFO ][o.e.n.Node ] [node-102] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-6713700111977558191, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/opt/module/elasticsearch, -Des.path.conf=/opt/module/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=tar]
...
- 测试
浏览器输入
http://es的IP地址:9200/_cat
响应信息如下,就表示安装成功了
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
启动脚本
我这里配置的是es 集群,所以启动es需要多个服务器都得一个一个启动,比较麻烦,所以需要一个启动脚本帮我完成这种繁琐的事。
- 创建一个
es.sh
文件
vim es.sh
- 内容如下
#!/bin/bash
# 参数个数校验,只能传一个参数
if [ $# -ne 1 ];then
echo "参数只支持[start,stop]"
exit;
fi
# es 的安装目录
es_home=/opt/module/elasticsearch/
# 参数推断
case $1 in
# 启动
"start") {
for i in hadoop102 hadoop103 hadoop104
do
echo "==============$i=============="
ssh $i "source /etc/profile;${es_home}/bin/elasticsearch >/dev/null 2>&1 &"
sleep 4s;
done
};;
# 停止
"stop") {
for i in hadoop102 hadoop103 hadoop104
do
echo "==============$i=============="
ssh $i "ps -ef|grep $es_home |grep -v grep|awk '{print \$2}'|xargs kill" >/dev/null 2>&1
done
};;
esac
- 授权
chmod u+x es.sh
- 注意:以下几点
- 每台服务器之间需要配置
免密
。 - 每天服务器的es安装路径是一致的。
- 测试
- 启动
sh es.sh start
- 停止
sh es.sh stop
网友评论