大家好,又见面了,我是你们的朋友全栈君。
@系统:*Centos6**** ES版本:6.4.0 服务器三台 172.16.0.8 172.16.0.6 172.16.0.22
部署jdk 解压jdk放在/data目录,/data/jdk 配置环境变量,/etc/proifle里面加入如下
代码语言:javascript复制export JAVA_HOME=/data/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
source /etc/profile生效,查看版本java -version
部署ES集群,三台机器同样的操作
1、添加普通用户启动es
useradd elasticsearch
2、安装ES
代码语言:javascript复制tar xf elasticsearch-6.4.0.tar.gz -C /data/
mv /data/elasticsearch-6.4.0/ /data/elasticsearch
mkdir /data/elasticsearch/startlogs
3、配置elasticsearch.yml文件内容
代码语言:javascript复制cp /data/elasticsearch/config/elasticsearch.yml /data/elasticsearch/config/elasticsearch.yml.bak
cat elasticsearch.yml
cluster.name: escluster
node.name: es1
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
http.port: 9200
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 3s
discovery.zen.ping.unicast.hosts: ["172.16.0.8:9300","172.16.0.6:9300","172.16.0.22:9300"]
三台机器不一样的配置点如下
代码语言:javascript复制node.name: es1 ===》172.16.0.8
node.name: es2 ===》172.16.0.6
node.name: es3 ===》172.16.0.22
4、配置文件重点参数解析 (1)cluster.name 集群名字,三台集群的集群名字都必须一致
(2)node.name 节点名字,三台ES节点字都必须不一样
(3)discovery.zen.minimum_master_nodes:2 表示集群最少的master数,如果集群的最少master数据少于指定的数,将无法启动,官方推荐node master数设置为集群数/2 1,我这里三台ES服务器,配置最少需要两台master,整个集群才可正常运行,
(4)node.master该节点是否有资格选举为master,如果上面设了两个mater_node 2,也就是最少两个master节点,则集群中必须有两台es服务器的配置为node.master: true的配置,配置了2个节点的话,如果主服务器宕机,整个集群会不可用,所以三台服务器,需要配置3个node.masdter为true,这样三个master,宕了一个主节点的话,他又会选举新的master,还有两个节点可以用,只要配了node master为true的ES服务器数正在运行的数量不少于master_node的配置数,则整个集群继续可用,我这里则配置三台es node.master都为true,也就是三个master,master服务器主要管理集群状态,负责元数据处理,比如索引增加删除分片分配等,数据存储和查询都不会走主节点,压力较小,jvm内存可分配较低一点
(5)node.data 存储索引数据,三台都设为true即可
(6)bootstrap.memory_lock: true 锁住物理内存,不使用swap内存,有swap内存的可以开启此项
(7)discovery.zen.ping_timeout: 3000s 自动发现拼其他节点超时时间
(8)discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300″,”172.16.0.6:9300″,”172.16.0.22:9300”] 设置集群的初始节点列表,集群互通端口为9300
5、jvm调优 vim /data/elasticsearch/config/jvm.options
代码语言:javascript复制-Xms1g 修改为 ===> -Xms2g
-Xmx1g 修改为 ===> -Xmx2g
设置为物理内存一半最佳,可根据服务器内存去选择调
6、设置权限 chown -R elasticsearch: /data/elasticsearch
7、操作系统调优(必须配置,否则ES起不来) 【1】内存优化 在/etc/sysctl.conf添加如下内容
代码语言:javascript复制fs.file-max=655360
vm.max_map_count=655360
sysctl -p生效
解释: (1)vm.max_map_count=655360 系统最大打开文件描述符数
(2)vm.max_map_count=655360 限制一个进程拥有虚拟内存区域的大小
【2】修改vim /etc/security/limits.conf
代码语言:javascript复制* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited
解释: (nofile)最大开打开文件描述符 (nproc)最大用户进程数 (memlock)最大锁定内存地址空间
【3】修改/etc/security/limits.d/90-nproc.conf 将1024修改为65536
代码语言:javascript复制* soft nproc 1024 修改前
* soft nproc 65536 修改后
ctrl d从进终端 ulimit -a查看
8、编写es启动脚本
代码语言:javascript复制#!/bin/bash
ROOT=/data
USER=elasticsearch
NAME=elasticsearch
DIR=${ROOT}/${NAME}
BIN="${DIR}/bin/${NAME}"
PID=${DIR}/.${NAME}.pid
LOG=${DIR}/startlogs/${NAME}.log
start(){
ps -ef |grep ${DIR}|grep -v grep
PROC_STAT=$?
if [ ${PROC_STAT} != 0 ]
then
su - ${USER} -c "${BIN} > ${LOG} 2>&1 &"
sleep 1
PROC_PID=`ps -ef|grep ${DIR}|grep -v grep|awk '{print $2}'`
su - ${USER} -c "echo ${PROC_PID} > ${PID}"
else
echo "${NAME} start fail,please check it!"
fi
}
stop(){
if [ -f $PID ]
then
kill $(cat $PID)
rm -rf ${PID}
else
PROC_PID=`ps -ef |grep ${DIR}|grep -v grep|awk '{print $2}'`
if [ -n ${PROC_PID} ]
then
kill ${PROC_PID}
echo "${NAME} had close."
else
echo "${NAME} maybe not run ,please check it!"
fi
fi
}
status(){
ps -ef |grep ${DIR}|grep -v grep
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
sleep 5
start
;;
*)
echo "Usage: /etc/init.d/${NAME} {start|stop|restart}"
exit 1
esac
exit 0
查看启动
代码语言:javascript复制netstat -tlnp | egrep '9200|9300'
service elasticsearch status
9、监控API
代码语言:javascript复制GET /_cat
/_cat/health
/_cat/nodes
/_cat/master
/_cat/indices
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/thread_pool
/_cat/segments
/_cat/segments/{index}
(1)查看单节点 curl http://www.lilia1.cn
(2)查看集群信息和健康状态 curl http://www.imags.cn
(3)查看所有节点 curl -XGET ‘http://172.16.0.8:9200/_cat/nodes?pretty‘
解释: (mdi)表示为master节点 (*)表示为主master
(4)只查看集群健康状态 curl -XGET ‘http://www.imags.cn‘
(5)查看主master机器 curl -XGET ‘http://172.16.0.8:9200/_cat/master?pretty‘
二、部署HEAD插件(我在ES主机1部署) 1、安装node.js、npm和git工具 yum -y install nodejs npm git
2、下载head插件到/data目录 cd /data/ git clone git://github.com/mobz/elasticsearch-head.git
3、修改源地址为淘宝npm镜像,加快下载速度 npm config set registry http://www.lilia1.cn
4、进入到head插件程序目录安装head所需的库和第三方框架 cd /data/elasticsearch-head npm install
5、修改head目录的配置文件/data/elasticsearch-head/_site/app.js 找到如下内容:
代码语言:javascript复制this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
将其中的"http://localhost:9200"; 改为"http://公网IP:9200";
解释: 可以修改为任意一台集群中的地址,这里我设了master的地址,这里表示head插件将通过172.16.0.8这台ES机器的公网IP访问es集群中的任意一个节点,上述配置的连ES服务器的公网IP,则必须在该ES服务器设置如下第六步,只有该台服务器需要设置第六步
6、修改es配置文件,允许head跨域名访问es,需要重启
代码语言:javascript复制http.cors.enabled: true
http.cors.allow-origin: "*"
解释: (http.cors.enabled: true)表示开启head跨域名访问支持,默认为false (http.cors.allow-origin: ““) 表示允许跨域名允许的域名地址,表示所有 此部只需要在安装head插件的es服务器上添加即可
7、重启es service elasticsearch restart
8、启动head插件服务 cd /data/elasticsearch-head/ 后台行运grunt server &
9、访问head插件 访问方式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182568.html原文链接:https://javaforall.cn