使用elasticsearch-6.5.1.tar.gz
jdk版本最低需要1.8
1,配置jdk1.8
下载jdk-8u171-linux-x64.gz
tar -zxvf 解压
配置环境变量:
vim /etc/profile
在文件最后加入如下行
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
PATH=$JAVA_HOME/bin:/bin:/usr/bin
export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile
使配置生效
2,安装elasticsearch
官网获取最新版本 https://www.elastic.co/cn/downloads/elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz 下载
切换目录至elasticsearch-6.5.1
./bin/elasticsearch 运行elasticsearch
抛出如下异常java.lang.RuntimeException: can not run elasticsearch as root,
不能以root用户运行,我这里新建用户es ,切换到es用户运行,
抛出如下异常 java.nio.file.AccessDeniedException: /usr/local/elasticsearch-6.5.1/config/jvm.options
当前用户没有执行权限,用root用户给其赋权限
chown es elasticsearch-6.5.1 -R
再次执行,不抛异常,新开一个终端执行 curl localhost:9200
返回如下信息表示elasticsearch 启动成功
{
"name" : "iFpK5gT",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ml4u3QnATf2f3qEXMqFRPA",
"version" : {
"number" : "6.5.1",
"build_flavor" : "default",
"build_type" : "tar",
"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 只能本机访问问题
关闭防火墙或者开放9200端口
我这里直接关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
修改config下elasticsearch.yml文件,最后新增一行
network.host: 0.0.0.0
重新启动,抛出如下异常
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决[1]
切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
解决[2]
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
如果提示-bash: sysctl: 未找到命令,则执行whereis sysctl
使用绝对路径执行 /usr/sbin/sysctl -p
重新启动elasticsearch,还是无效?
必须重新登录启动elasticsearch的账户才可以
打开浏览器使用ip:port访问
4,配置nodejs环境
安装head插件需要nodejs 环境
下载最新nodejs https://nodejs.org/en/download/
image.png
wget https://nodejs.org/dist/v10.14.1/node-v10.14.1-linux-x64.tar.xz
***.tar.xz格式文件需要两部解压步骤
xz -d node-v8.11.2-linux-x64.tar.xz
tar -xvf node-v8.11.2-linux-x64.tar
配置环境:
ln -s /usr/local/node-v10.14.1-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/node-v10.14.1-linux-x64/bin/npm /usr/local/bin/npm
node -v
5,安装head插件
github上下载最新head插件
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
解压 unzip elasticsearch-head-master.zip
进入elasticsearch-head-master目录执行
npm install 抛出如下异常:
设置npm镜像
npm config get proxy
npm config get https-proxy
如果不为null 则设置为null
npm config set proxy null
npm config set https-proxy null
npm config set registry [http://registry.cnpmjs.org](http://registry.cnpmjs.org)
npm info underscore
继续执行 npm install 抛出如下异常:
image.png
执行 npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
完成后继续执行 npm install不抛异常执行npm run start
image.png
head 安装完成
6,集成head
在elasticsearch.yml 末端增加
如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.enabeld: true
如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。
http.cors.allow-origin: "*"
重启es与head
[es@zhuli elasticsearch-6.5.1]$ ./bin/elasticsearch -d #-d 表示后台启动
[es@zhuli elasticsearch-head-master]$ nohup npm run start >run.log 2>&1 & #后台启动 lsof -i:9100 查看进程
image.png
注意:红框里面默认地址是localhost 需要改成服务端ip
7,elasticsearch 集群搭建
修改配置,建立master:
vim config/elasticsearch.yml 在最后增加
#集群名称
cluster.name: zhuli
#节点名称
node.name: master
node.master: true
新建文件夹es_slave 用于存放slave,复制个es 文件夹命名为es_slave1和es_slave2
修改es_slave1配置文件:
cluster.name: zhuli
node.name: slave1
network.host: 0.0.0.0
#避免和master端口冲突
http.port: 9201
#避免和master是同一个网络
discovery.zen.ping.unicast.hosts:ip:port
修改es_slave2配置文件:
cluster.name: zhuli
node.name: slave2
network.host: 0.0.0.0
#避免和master端口冲突
http.port: 9202
#避免和master是同一个网络
discovery.zen.ping.unicast.hosts:ip:port
分别启动master和两个slave
image.png
slave无法加入master的问题:
slave节点的配置文件config/elasticsearch.yml
discovery.zen.ping.unicast.hosts:ip:port
应该与master节点的transport_address一致,节点信息用以下命令查看
image.png
网友评论