安装jdk
jdk网盘提取地址:https://pan.baidu.com/s/1-PYah5kwSmcJ9NnTt2_yNQ
# rz
# tar xf jdk-8u101-linux-x64.tar.gz -C /opt/app/
# ln -s /opt/app/jdk1.8.0_101/ /opt/app/jdk
# vim /etc/profile
JAVA_HOME=/opt/app/jdk
JRE_HOME=/opt/app/jdk/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
# source /etc/profile
# java -version
java version "1.8.0_101"
- 怎么找到es(elasticsearch的简写)版本对应的jdl版本?
打开https://www.elastic.co/guide/en/elasticsearch/reference/6.2/index.html ——>输入你的es版本——>点击 Set up Elasticsearch ——>找到Java version的一段信息就知道当前es需要啥版本的jdk了。
安装es
下载软件
# cd /opt/src/
# rz
用户可以选择去官网下载或者百度网盘下载
百度网提取地址:https://pan.baidu.com/s/1LaQSVxnr4Sv9GZGi2NNP_A
elasticsearch-5.5.2.zip #我这篇文档是用的这个版本(版本过高的话,得去官网重新查找安装方法)
安装依赖
# yum install zip unzip -y #需要用到unzip解压
创建对应的目录
mkdir /opt/app /data/es /data/logs/es /data/es_backup -p
/opt/app/ #存放es主程序 /data/es #存放es数据 /data/logs/es #存放es日志 /data/es_backup #存放快照
创建es用户
# groupadd -g 550 es && useradd -u 550 -g 550 -s /sbin/nologin es #默认不支持root用户运行es,建议新建个用户去运行es
安装es
# unzip elasticsearch-5.5.2.zip
# mv elasticsearch-5.5.2/ /opt/app/ #因为是个二进制文件,解压之后直接移到主程序目录下即可
# ln -s /opt/app/elasticsearch-5.5.2/ /opt/app/es #可以做软链接,也可以直接用原名,客官你随意
授权
# $ chown es.es -R /opt/app/es /data/logs/es/ /data/es/ /data/es_backup/
编辑配置文件
# cp /opt/app/es/config/elasticsearch.yml{,.bak} #建议先备份一份原件
# vim /opt/app/es/config/elasticsearch.yml
## 常用配置
cluster.name: es_cluster #自定义集群名字(es默认是以集群方式启动)
node.name: es_node #自定义节点名称
path.data: /data/es/ #索引数据的存放位置(默认是在/data目录下,多个目录用' , '号隔开,/data/es/,/es1/)
path.logs: /data/logs/es/ #日志存放路径
http.port: 9200 #设置es对外服务的http端口
#主要是解决es与head插件连通的问题
http.cors.enabled: true
http.cors.allow-origin: "*" #*的话是所有节点
##其他配置
#network.host: 192.168.1.18 #默认是127.0.0.1,对外的话需要绑定当前节点的ip地址
#discovery.zen.ping.unicast.hosts: [ip] #设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
#gateway.recover_after_nodes: 2 #设置集群中N个节点启动时,进行数据恢复,默认是1
#discovery.zen.minimum_master_nodes: 2 #设置当前集群中有几个集群可以成为master,大集群可以设置为2-4个,默认是1个
#discovery.zen.ping.timeout: 30s #设置集群自动发现其它节点的ping连接超时时间,默认是3s,网络有延迟的尽量大些
#discovery.zen.ping.multicast.enabled: false #是否打开多播发现节点,默认是true
#client.transport.ping_timeout: 30s #ping一个节点的响应时间 默认5秒
#cluster.routing.allocation.node_initial_primaries_recoveries: 6 #初始化进程时,并发恢复的线程个数,默认是4个
#cluster.routing.allocation.node_concurrent_recoveries: 5 #添加/删除节点或负载均衡时并发恢复线程的个数,默认是4个
#indices.recovery.max_bytes_per_sec: 50mb #设置数据恢复时限制的带宽,如50mb,0为无限制
#indices.recovery.concurrent_streams: 5 #设置这个参数可以限制其他分片恢复数据时最大打开流的个数,默认是5
#transport.tcp.compress: true #是否压缩tcp传输时数据,默认是flase,不压缩
#index.number_of_shards: 5 #设置默认索引分片个数,默认5篇
#index.number_of_replicas: 1 #设置默认索引副本个数,默认是1个
#node.data: true #该节点是否存储索引数据,默认是ture
# vim /etc/default/es #定义一些es的环境变量(供es.service文件中EnvironmentFile参数读取)
ES_USER="es"
ES_GROUP="es"
JAVA_HOME="/opt/app/jdk" #设置jdk路径
LOG_DIR="/data/logs/es" #设置log路径
MAX_OPEN_FILES=655350 #最大打开文件描述符
MAX_MAP_COUNT=262144 #设置虚拟内存值
CONF_DIR="/opt/app/es/config" #配置文件路径
DATA_DIR="/data/es" #索引数据存放路径
生成systemctl启动脚本
# vim /etc/systemd/system/es.service
[Unit]
Description=elasticsearch5 #描述
[Service]
Type=simple #定义访问daemon启动方式,有simple(默认值,有Execstart指令启动,启动后常驻内存中),forking(需要产生很多子进程用fork),oneshot(跟simple类似,但是当工作完成后,就直接退出了),dbus,idle,前3种用的较多
User=es
Group=es
EnvironmentFile=-/etc/default/es #EnvironmentFile 指定是从文本文件中读取变量 EnvironmentFile=-+目录(减号一定不要忘记哦)
ExecStart=/opt/app/es/bin/elasticsearch -Epath.conf=/opt/app/es/config #指定服务启动运行的命令
ExecStop=/bin/kill -s QUIT $MAINPID #指定服务关闭运行的命令 $MAINPID是通过simple获取值
PrivateTmp=false #
Restart=always #有7个值,常用的on(默认) 退出后不会重启,always不管啥原因退出都重启,on-success,on-failure,on-abnormal,on-abort,on-watchdog。
LimitNOFILE=655350
[Install] #定义由systemctl enable或systemctl disable命令再实现服务是否能够开机启用或禁用的选项
WantedBy=multi-user.target #此参数是代表在命令模式下启动,还有个参数是图形界面下启动的
# systemctl daemon-reload
# systemctl restart es
# ss -nalpt | grep 9200
LISTEN 0 128 ::ffff:127.0.0.1:9200 :::* users:(("java",pid=1512,fd=118))
LISTEN 0 128 ::1:9200 :::* users:(("java",pid=1512,fd=116))
报错1
原因:虚拟内存给的太低
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:修改虚拟内存
# more /proc/sys/vm/max_map_count
65530
# vim /etc/sysctl.conf
vm.max_map_count=262144
# sysctl -p
vm.max_map_count = 262144
报错2
原因:内存至少要2G
max number of threads [1786] for user [es] is too low, increase to at least [2048]
解决:把内存给2G
安装head插件
-
head插件是 es的可视化插件,简单来说通过此插件一个能以一个更清晰的界面去操作es。
注:在head插件官方说,head是已经作为一个独立的服务运行了# vim /opt/app/es/config/elasticsearch.yml #在es的主配置文件添加这2行信息,使es支持head插件 http.cors.enabled: true http.cors.allow-origin: "*" # git clone git://github.com/mobz/elasticsearch-head.git # cd elasticsearch-head/ # yum install npm -y #NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题(类似于yum) # yum install bzip2 libXext libXrender fontconfig libfontconfig.so.1 -y # npm install # npm run start