Elasticsearch集群部署
初始基础环境
cos7系统关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
禁用SElinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
系统参数调整
/etc/security/limits.conf配置文件中追加以下两行
* soft nofile 65536
* hard nofile 65536
在/etc/sysctl.conf配置文件中追加以下两行
vm.swappiness=1
vm.max_map_count=262144
使用命令sysctl -p加载配置
配置/etc/hosts文件,将项目所有主机的IP地址与hostname信息添加进去,如:
92.168.0.1 serve001
192.168.0.2 server002
使用命令配置主机名,如:
hostnamectl set-hostname serve001
时间同步
systemctl stop chronyd
systemctl disable chronyd
关闭时间服务,然后重新安装配置 ntpd
或者使用同步时间命令定时同步其他主机时间,或者手动调整时间
安装JDK
rpm -qa|grep openjdk
rpm -e --nodeps java-1.8.0-openjdk-* java-1.8.0-openjdk-headless-*
rpm -ivh jdk-8u162-linux-x64.rpm
基础环境完成,开始部署ES
unzip elasticsearch-5.6.4.zip -d /server/ES
groupadd elsearch
useradd elsearch -g elsearch
chown -R elsearch:elsearch /server/elasticsearch-5.6.4
mkdir -p /data/fes/data1
chown -R elsearch:elsearch /iflytek/data/fk-es/data1
修改ES配置文件/server/elasticsearch-5.6.4/config/elasticsearch.yml,注意:
1、集群内所有节点cluster.name需要相同,且必须为fk-es;
2、集群内所有节点node.name不能相同,可以使用变量获取主机名作为nodename;
3、ES实例角色为master时,配置node.master为true,ES实例角色为data时,配置node.data为true,既是master又是data角色时,两者都配置为true;
4、path.data配置ES的本地存储路径,需要根据实际规划的ES数据盘来配置,当存在多个数据盘时,每个数据盘配置一行,在单台服务器启动多个ES实例时,不同实例分别配置各自的存储路径;
5、http.port和transport.tcp.port两个参数,在单台服务器只启动一个ES实例的时候,可以使用默认的9200和9300端口,当单台服务器上启动多个ES实例时,各实例不能相同,如:第二个实例可以使用9201和9301端口;
6、单台服务器启动多个实例的情况下,拷贝一个ES部署包,根据实际情况修改elasticsearch.yml中的配置项,如:node.name、path.data、http.port和transport.tcp.port等;
7、将集群内所有节点信息配置到discovery.zen.ping.unicast.hosts参数中;
8、各配置项的key和value之间需要有一个空格字符。
cluster.name: ces
cluster.routing.allocation.same_shard.host: true
node.name: ${HOSTNAME} --单机配置名称时需要不同
node.master: true
node.data: true
path.data: /serve/data/fk-es/data1
network.host: 0.0.0.0
http.port: 9200 --单机配置时需要不同尾数如9201
transport.tcp.port: 9300 --单机配置时需要不同尾数如9301
discovery.zen.ping.unicast.hosts: ["IP1:9300","IP2:9300","IP3:9300"] --单机配置时同一个服务名,不同端口如IP1:9300","IP1:9301
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true
根据实际情况,编辑以下文件,调整jvm内存(机器内存充足情况下,可配置30G内存):
/server/elasticsearch-5.6.4/config/jvm.options
检查/修改执行权限:
chmod +x /server/elasticsearch-5.6.4/bin/*
使用elsearch用户启动ES:
su - elsearch
/server/elasticsearch-5.6.4/bin/elasticsearch -d
elasticsearch-head部署
安装head插件——————两种方法,第一张https://www.cnblogs.com/hts-technology/p/8477258.html本地安装插件直接使用
第二种如下
1. 下载head插件,将下载好的插件配置上传到linux中,注意不要放在es目录下,与es目录同级即可。解压
unzip elasticsearch-head-master
2. head 插件是node.js实现的,因此需要安装nodejs
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install -y nodejs
安装完成,验证是否安装成功:
[elastic@localhost es]$ node -v
v8.11.1
[elastic@localhost es]$ npm -v
5.6.0
3. 进入elasticsearch-head-master目录,安装grunt
npm install grunt --save-dev
npm install
4. 修改配置文件,cd 进入elasticsearch-head-master 文件夹下,执行命令vim Gruntfile.js文件:增加hostname属性,设置为*;如图:
5. 修改head插件的连接地址,vim _site/app.js 文件:修改head的连接地址:,如图所示:在js文件的最下面,我是找了蛮久,ip地址改为你的es所在服务器的ip
6. 修改配置,elasticsearch.yml,添加
http.cors.enabled: true
http.cors.allow-origin: "*"
这个配置主要是允许插件访问。
7. 在elasticsearch-head-master 下执行,npm run start 命令,启动。
这是就可以在浏览器中访问es了,注意端口是9100.成功结果了