Elasticsearch环境搭建|ES单机|ES单节点模式启动|ES集群搭建|ES集群环境搭建

文章目录

  • 版本选择
  • 单机ES安装与配置
    • 创建非root用户
    • 导入安装包
    • 安装包解压
    • 配置JDK环境变量
    • 配置single-node
    • 配置JVM参数
    • 后台启动|启动日志查看
    • 启动成功,访问
      • 终端访问
      • 浏览器访问
  • Kibana安装
    • 修改配置
    • 后台启动|启动日志查看
    • 浏览器访问
  • ES三节点集群搭建
    • 停止es服务
    • 域名配置
    • 配置修改
    • 集群配置
      • 配置说明
      • 配置节点1
      • 配置节点2
      • 配置节点3
      • 分别启动
      • 验证集群搭建成功
    • Kibana配置修改
    • 重启Kibana
      • 查看进程
      • 停止Kibana服务
      • 启动Kibana
      • 验证
  • ES开启认证

版本选择

在[ElasticSearch]分析京东商城商品搜索实现|聚合|全文查找|搜索引擎|ES Java High Level Rest Client|ES Java API Client这篇文章里进行了说明,使用的7.17.3版本,不再赘述。

  • Elasticsearch 7.17.3下载地址
  • Kibana 7.17.3下载地址
  • 环境CentOS 7.6.1

单机ES安装与配置

创建非root用户

ES不允许root用户运行,使用root用户为其创建一个用户es,为用户es配置密码,并切换到es用户。

adduser es
passwd es
su es

导入安装包

将下载好的Elasticsearch,Kibana导入到es用户home目录

[es@polaris ~]$ cd ~
[es@polaris ~]$ pwd
/home/es
[es@polaris ~]$ ls        
kibana-7.17.3-linux-x86_64.tar.gz              
elasticsearch-7.17.3-linux-x86_64.tar.gz    

安装包解压

tar -zxvf elasticsearch-7.17.3-linux-x86_64.tar.gz
tar -zxvf kibana-7.17.3-linux-x86_64.tar.gz

配置JDK环境变量

当前还在用户home目录下,
添加两行(ES7.x及以后版本内置了jdk)

export ES_JAVA_HOME=/home/es/elasticsearch-7.17.3/jdk
export ES_HOME=/home/es/elasticsearch-7.17.3
[es@polaris ~]$ vim .bash_profile 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

export ES_JAVA_HOME=/home/es/elasticsearch-7.17.3/jdk
export ES_HOME=/home/es/elasticsearch-7.17.3

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

执行以下命令,使之生效。(之后使用es用户开启一个终端会话(参考:ES环境变量设置的问题,分析用户级环境变量设置与读取,报错分析与解决⚠️ usage of JAVA_HOME is deprecated, use ES_JAVA_HOME),该环境变量配置就会是生效的)

source .bash_profile

配置single-node

切换到es目录

cd elasticsearch-7.17.3/
# 0. 备份一下原配置文件
cp config/elasticsearch.yml config/elasticsearch.yml.origin
# 修改配置
vim config/elasticsearch.yml
# 1. 开启远程访问,监听所有网卡,可以在虚拟机外部如win主机上访问  
network.host: 0.0.0.0
# 2. 单节点模式
discovery.type: single-node

配置JVM参数

官方建议:将 Xms 和 Xmx 设置为不超过总内存的 50%。 Elasticsearch 需要内存用于 JVM堆以外的用途。例如,Elasticsearch 使用堆外缓冲区来实现高效的网络通信,并依赖操作系统的文件系统缓存来高效地访问文件。 JVM本身也需要一些内存。Elasticsearch 使用的内存多于 Xmx 设置配置的限制是正常的。

机器情况:CPU 4核8线程,内存16GB,打算搭三节点集群演示,主机上还会运行一些东西,因此为每个虚拟机分配了2GB的内存,处理器数量2个,单个处理器内核数量设置为了2个,处理器内核总数为4

虚拟机内存2GB,堆内存设置不超过50%,这里设置1GB

# 0. 备份一下原配置文件
cp config/jvm.options config/jvm.options.origin
# 修改堆内存
vim config/jvm.option

-Xms1g
-Xmx1g

后台启动|启动日志查看

后台启动可以保证启动成功后,当前会话断开,es还是在运行,不会随着终端会话关闭而终止。

bin/elasticsearch -d

如果启动有问题可以查看es启动日志

tail -f logs/elasticsearch.log

启动成功,访问

终端访问

在这里插入图片描述

浏览器访问

如果浏览器访问不通,那么可以关闭防火墙简化操作,
云服务器的话可以通过配置安全组规则,进行端口映射,开放端口(参考:添加安全组规则)

在这里插入图片描述

这样单节点的es就可以正常工作,之后通过修改配置把他加入到集群。

Kibana安装

Kibana是官方提供的ES一个客户端连接工具。
只在一台虚拟机上安装即可(或者win主机上安装一个都行),注意修改配置,使之能够访问到es(单机或集群),以及可以对外提供服务(Kibana对外能够被访问)。
这里是在虚拟机上安装。

修改配置

cd ~/kibana-7.17.3-linux-x86_64/
#备份一个源文件
cp config/kibana.yml config/kibana.yml.origin
#修改配置
vim config/kibana.yml

#指定Kibana服务器监听的端口号
server.port: 5601    
#开启远程访问,监听所有网卡,可以在虚拟机外部如win主机上访问  
server.host: "0.0.0.0"    
#指定Kibana连接到的ES实例的访问地址,
#如果访问本地的ES(Kibana与ES安装在同一台服务器上)就是localhost,访问其他的换成ip
#集群的话就配上所有的节点elasticsearch.hosts: ["http://192.168.43.69:9200", "http://192.168.43.133:9200", "http://192.168.43.225:9200"]
elasticsearch.hosts: ["http://localhost:9200"]  
#将 Kibana 的界面语言设置为简体中文。默认en
i18n.locale: "zh-CN"  

后台启动|启动日志查看

后台启动可以保证启动成功后,当前会话断开,kibana还是在运行,不会随着终端会话关闭而终止。

nohup bin/kibana &

如果启动有问题可以查看Kibana启动日志

tail -f nohup.out

浏览器访问

win主机浏览器访问机器ip+“:”+port(5601),

http://192.168.43.69:5601/

到此,Elasticsearch环境及客户端Kibana就安装配置完成。

在这里插入图片描述

这里查看到的节点ip是192.168.25.74而不是我们访问的机器ip 192.168.43.69,是有问题的(正常情况是不会有这个问题的)。这个问题的原因参考:[ES] ElasticSearch节点加入集群失败经历分析主节点选举、ES网络配置 [publish_address不是当前机器ip]

下面说明ES集群搭建方法。

ES三节点集群搭建

可以把刚才的虚拟机克隆出额外的两个,也可以在额外的两个虚拟机上重复上面es的安装过程(Kibana不需要再装了,它只是个es连接工具,装一个就行了)

停止es服务

#查看es进程
ps -ef|grep elasticsearch
#停止es运行
kill pid #pid是上面命令查出来的进程号

域名配置

三台机器都切换root用户,配置机器ip与域名对应关系,用于在服务发现时,集群内的各节点通过这个域名彼此可以找到彼此。

su
vim /etc/hosts

192.168.43.69 es-node1
192.168.43.133 es-node2
192.168.43.225 es-node3

之后再切换回es用户

su es

配置修改

注释掉单节点

#注释掉单节点
#discovery.type: single-node

集群配置

注意:数据目录日志目录单独指定,要和之前单机启动区别开

配置说明

  • cluster.name:集群名称,指定一个(避免因未指定,启动一个es就会加入到集群中),配置好其他属性,然后集群同名才可加入到这个集群中。
  • node.name:节点名字,集群内唯一
  • node.master:是否有资格为master节点,默认为true,表示这个节点有资格成为主节点(master node)。主节点主要负责集群级别的操作,如创建或删除索引、跟踪集群中哪些节点是活动的等。
  • node.data:是否为data数据节点,默认为true,表示这个节点也是一个数据节点(data node),它会存储索引数据并处理搜索请求。
  • http.cors.enabled: true:允许跨源资源共享(CORS)。当你想从另一个域的网页或应用访问这个Elasticsearch节点时,CORS允许这样的请求
  • http.cors.allow-origin: “*” : 允许来自任何域的CORS请求。但出于安全考虑,通常不建议在生产环境中使用*,而是指定特定的域名。
  • path.data:定义了Elasticsearch用于存储索引数据的路径。
  • path.logs:定义了Elasticsearch存储其日志文件的路径。
  • network.host: 0.0.0.0:告诉Elasticsearch监听所有可用的网络接口。但在生产环境中,为了安全起见,通常会指定特定的IP地址或范围。
  • discovery.seed_hosts:定义了Elasticsearch在启动时用于发现其他集群成员的初始主机列表。可以通过es-node1、es-node2和es-node3这些主机域名或IP地址来访问其他节点。(上面配置了域名与机器ip的映射关系,因此可以使用机器域名)
  • cluster.initial_master_nodes:在Elasticsearch第一次启动时,需要指定哪些节点应该成为主节点(指定node.name指定的节点名字列表)。

配置节点1

vim config/elasticsearch.yml
# node-1
cluster.name: es-cluster

node.name: node-1
node.master: true
node.data: true


http.cors.enabled: true
http.cors.allow-origin: "*"

path.data: /home/es/elasticsearch-7.17.3/data-cluster
path.logs: /home/es/elasticsearch-7.17.3/logs-cluster

network.host: 0.0.0.0

discovery.seed_hosts: ["es-node1","es-node2","es-node3"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

配置节点2

vim config/elasticsearch.yml
# node-2
cluster.name: es-cluster

node.name: node-2
node.master: true
node.data: true


http.cors.enabled: true
http.cors.allow-origin: "*"

path.data: /home/es/elasticsearch-7.17.3/data-cluster
path.logs: /home/es/elasticsearch-7.17.3/logs-cluster

network.host: 0.0.0.0

discovery.seed_hosts: ["es-node1","es-node2","es-node3"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

配置节点3

vim config/elasticsearch.yml
# node-3
cluster.name: es-cluster

node.name: node-3
node.master: true
node.data: true

http.cors.enabled: true
http.cors.allow-origin: "*"

path.data: /home/es/elasticsearch-7.17.3/data-cluster

path.logs: /home/es/elasticsearch-7.17.3/logs-cluster

network.host: 0.0.0.0

discovery.seed_hosts: ["es-node1","es-node2","es-node3"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

分别启动

bin/elasticsearch -d

验证集群搭建成功

在这里插入图片描述

Kibana配置修改

集群搭建成功,更改kibana的配置中的ES instances地址

elasticsearch.hosts: ["http://192.168.43.6:9200", "http://192.168.43.133:9200", "http://192.168.43.225:9200"]

重启Kibana

查看进程

netstat -tunlp|grep 5601
[es@polaris kibana-7.17.3-linux-x86_64]$ netstat -tunlp|grep 5601
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      7379/bin/../node/bi 

停止Kibana服务

kill 7379

启动Kibana

nohup bin/kibana &

验证

在这里插入图片描述

ES开启认证

参考:Elasticsearch开启认证|为ES设置账号密码|ES账号密码设置|ES单机开启认证|ES集群开启认证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/751719.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

平板WPS转换的PDF文件保存位置解析

在日常工作和生活中,我们经常需要将文档转换成PDF格式进行分享,以确保接收者能够无障碍地查看文件内容,不受软件版本或操作系统的限制。WPS作为一款功能强大的办公软件,也提供了文档转换为PDF的功能。然而,有时在转换并…

HarmonyOS--数据持久化--关系型数据库

文档中心 关系型数据库 场景介绍 关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等&#…

hnust 1817 算法10-10,10-11:堆排序

hnust 1817 算法10-10,10-11:堆排序 题目描述 堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。 首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最…

Mac14.1.2 M1芯片免费读写ntfs硬盘-亲测有效,免费!!!

1. 安装homebrew 打开终端,使用以下命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 根据提示逐步完成即可,镜像选择我这里都是保持1的选项。 2. 重启终端 安装完成homebrew后,需…

Vite: 关于Rollup打包

概述 Rollup 是一款基于 ES Module 模块规范实现的 JavaScript 打包工具,在前端社区中赫赫有名,同时也在 Vite 的架构体系中发挥着重要作用不仅是 Vite 生产环境下的打包工具,其插件机制也被 Vite 所兼容,可以说是 Vite 的构建基…

单点登录(cookie+Redis)

1、什么是单点登录? Single Sign On简称SSo,只需要登录一次就可以在整个系统实现访问。 因为session的特性,是没有办法在多个服务系统之间实现数据的共享。 解决一个分布式session的问题。目前我们使用redis来实现分布式session。 1.1、新问题…

【数据结构】(C语言):队列

队列: 线性的集合。先进先出(FIFO,first in first out)。两个指针:头指针(指向第一个进入且第一个出去的元素),尾指针(指向最后一个进入且最后一个出去的元素&#xff0…

Redis优化之持久化

目录 1.Redis高可用 2.Redis持久化 2.1 RDB持久化 2.1.1 触发条件 2.1.2 执行流程 2.1.3 启动时加载 2.2 AOF持久化 2.2.1 开启AOF 2.2.2 执行流程 2.2.3 文件重写触发方式 2.2.4 文件重写的流程 2.2.5 启动时加载 2.3 RDB和AOF的优缺点 3.Redis性能管理 3.1 查看…

C++ 教程 - 07 类的静态成员

文章目录 静态成员 静态成员 使用static修饰的成员; 静态的成员变量; 仅保留一份副本,不管创建多少个实例对象,都共享这一份数据;类、对象均可以调用;类外重新声明,并通过类初始化;…

怎么在vite项目中全局导入一个scss文件

怎么在vite项目中全局导入一个scss文件 🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!&#x1f64…

腾讯云CVM,CentOS8系统下部署Java-Web项目步骤详解

在CVM中部署项目首先要配置好JDK,Tomcat,Mysql(这里以Tomcat和Mysql为例)。部署JDK和Tomcat的步骤可以参考 CentOS7系统下部署tomcat,浏览器访问localhost:8080/_不积跬步,无以至千里;不积小流,无以成江河。-CSDN博客 我这里从Mysql的安装和设…

Java | Leetcode Java题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; class Solution {public int rangeBitwiseAnd(int m, int n) {while (m < n) {// 抹去最右边的 1n n & (n - 1);}return n;} }

C#——命名空间详情

命名空间 在 C# 中&#xff0c;可以将命名空间看作是一个范围&#xff0c;用来标注命名空间中成员的归属&#xff0c;一个命名空间中类与另一个命名空间中同名的类互不冲突&#xff0c;但在同一个命名空间中类的名称必须是唯一的。 定义命名空间 定义命名空间需要使用 namesp…

微软推出最新视觉基础模型Florence-2 可在浏览器运行

据微软官方消息&#xff0c;微软推出视觉基础模型Florence-2&#xff0c;该模型现已能够在支持WebGPU的浏览器中100%本地运行。Florence-2-base-ft是一个拥有2.3亿参数的视觉基础模型&#xff0c;采用基于提示的方法来处理广泛的视觉和视觉语言任务。 该模型支持多种功能&…

youlai-boot项目的学习(4) 前后端本地部署

环境 1、macOS, brew, IntelliJ IDEA, WebStrom 2、后端&#xff1a;https://gitee.com/youlaiorg/youlai-boot.git , master, 9a753a2e94985ed4cbbf214156ca035082e02723 3、前端&#xff1a;https://gitee.com/youlaiorg/vue3-element-admin.git, master, 66b913ef01dc880ad…

25届最近5年重庆邮电大学自动化考研院校分析

重庆邮电大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…

提取url中的参数

let url https://alibaba.com?a1&b2&c3#hash function queryUrlParams(URL){let url URL.split(?)[1];const urlSearchParams new URLSearchParams(url);console.log(url1, urlSearchParams);console.log(entries,urlSearchParams.entries())const params Object…

大模型推理知识总结

一、大模型推理概念 大多数流行的only-decode LLM&#xff08;例如 GPT-3&#xff09;都是针对因果建模目标进行预训练的&#xff0c;本质上是作为下一个词预测器。这些 LLM 将一系列tokens作为输入&#xff0c;并自回归生成后续tokens&#xff0c;直到满足停止条件&#xff0…

多表查询-子查询

前言 上一篇博客&#xff0c;我简单的讲述了联合查询。今天本篇博客我将详细的阐述子查询的四个方面如 标量子查询&#xff0c;列子查询&#xff0c;行子查询&#xff0c;表子查询。 正文 子查询的认识 子查询的认识 子查询&#xff1a;是SQL语句中&#xff0c;嵌套select …

SAP揭秘者-在QM标准功能增加取消UD的功能第三季

下面让我们来看实际项目中使用的最佳方案&#xff1a; 运用增强QEVA0008&#xff0c;该增强会在下面UD界面(QA12)里增加一个Customer Function(Reset UD)的按钮;我们在这个用户出口中再增加代码去调用上面两支程序&#xff0c;则可以实现该功能。 步骤如下&#xff1a; 步骤一&…