ES集群搭建详细步骤[通俗易懂]

ES集群搭建详细步骤[通俗易懂]@系统:*Centos6****ES版本:6.4.0服务器三台172.16.0.8172.16.0.6172.16.0.22部署jdk解压jdk放在/data目录,/data/jdk配置环境变量,/etc/proifle里面加入如下exportJAVA_HOME=/data/jdkexportPATH=$PATH:$JAVA_HOME/binexportCLASS…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

@系统:*Centos6****
ES版本:6.4.0
服务器三台
172.16.0.8
172.16.0.6
172.16.0.22

部署jdk
解压jdk放在/data目录,/data/jdk
配置环境变量,/etc/proifle里面加入如下

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

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文件内容

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"]

三台机器不一样的配置点如下

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

-Xms1g   修改为 ===>  -Xms2g
-Xmx1g   修改为 ===>  -Xmx2g

设置为物理内存一半最佳,可根据服务器内存去选择调

6、设置权限
chown -R elasticsearch: /data/elasticsearch

7、操作系统调优(必须配置,否则ES起不来)
【1】内存优化
在/etc/sysctl.conf添加如下内容

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

* 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

*          soft    nproc     1024     修改前
*          soft    nproc     65536   修改后

ctrl +d从进终端
ulimit -a查看

8、编写es启动脚本

#!/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

查看启动

netstat -tlnp | egrep '9200|9300'
service elasticsearch status

9、监控API

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
ES6.4集群部署调优及HEAD插件安装

(2)查看集群信息和健康状态
curl http://www.imags.cn
ES6.4集群部署调优及HEAD插件安装

(3)查看所有节点
curl -XGET ‘http://172.16.0.8:9200/_cat/nodes?pretty
ES6.4集群部署调优及HEAD插件安装
解释:
(mdi)表示为master节点
(*)表示为主master

(4)只查看集群健康状态
curl -XGET ‘http://www.imags.cn
ES6.4集群部署调优及HEAD插件安装

(5)查看主master机器
curl -XGET ‘http://172.16.0.8:9200/_cat/master?pretty
ES6.4集群部署调优及HEAD插件安装

二、部署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
找到如下内容:

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,需要重启

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.net/182568.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月13日 上午7:46
下一篇 2022年10月13日 上午8:00


相关推荐

  • 问题:如何在Xinference中正确部署Qwen3模型?

    问题:如何在Xinference中正确部署Qwen3模型?

    2026年3月12日
    1
  • 如何防止Arp攻击

    如何防止Arp攻击首先需要查找网关的 IP 和 MAC 地址 查看的方法很多 最直接的在 cmd 里面执行 arp a 但这是被 arp 攻击之前 被攻击成功后 192 168 0 1 对应的 mac 地址会变成攻击电脑的 Mac 地址 还有另一个方法 登录路由器查看 在浏览器输入 192 168 0 1 这里是个人的网关 然后输入帐号密码 登录进去 一般在这里都可以找到一个 lanmac 地址 这个就是 其次将本机的 arp 中的 192 168 0 1 对应的 mac 地址改成静态 在运行中输入 cmd nbsp gt nbsp arp amp

    2026年3月26日
    2
  • stm32之继电器驱动[通俗易懂]

    stm32之继电器驱动[通俗易懂]继电器(英文名称:relay)是一种电控制器件,当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的 阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化  的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。虽然很简单,但是可以作为入门知识来学习。第一步:找到单片机控制继电器的引脚,引

    2022年6月24日
    34
  • 脑裂

    脑裂脑裂 splitbrain 高可用分布式技术常见的一种管理机制错误 es 主节点机制 主节点管理整个集群 现役 master 计算和生成 metadata 元数据 其他 master 同步数据 如果主节点宕机 其他 master 需要选举出新的主节点 经过 RBULLY 算法脑裂 由于网络波动 导致其他节点错误的认为主节点宕机 从而经过选举逻辑 选出第二个主节点 此时集群中就会存在多个主节点 现役

    2026年3月19日
    2
  • Java程序设计教程牛晓太_Java程序设计教程

    Java程序设计教程牛晓太_Java程序设计教程第1章Java概述1.1Java简介1.1.1Java的产生1.1.2Java的特点1.1.3Java三大平台1.2Java的开发和运行环境1.2.1Java虚拟机1.2.2JDK的安装1.2.3环境变量的设置1.2.4JavaAPI文档1.3Java程序开发实例1.3.1Java应用程序实例1.3.2Java小程序实例1.4Eclipse开发平台1.4.1Ecli…

    2022年7月7日
    24
  • js 数组倒序排列

    <!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>js倒序排列</title></head><body><script>vararray=[‘我’,’喜’,’欢’,…

    2022年4月4日
    90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号