草庐IT

从零开始搭建Elasticsearch集群遇到的问题

lolxxs 2023-08-11 原文

文章目录

安装elasticsearch

下载elasticsearch-8.1.2-linux-x86_64.tar.gz

链接:https://pan.baidu.com/s/1Ru85WpIq8uTfj0ucEftvJg
提取码:wxcd

下载得到elasticsearch-8.1.2-linux-x86_64.tar.gz,或者去官网下载
https://www.elastic.co/cn/downloads/elasticsearch
选择好平台

然后点击下载

使用Xshell将文件传入虚拟机

使用sftp协议,主机ip是在命令行输入ifconfig中ens33中的ip地址,第一次需要输入虚拟机登录账户root和密码。将elasticsearch-8.1.2-linux-x86_64.tar.gz传入虚拟机,直接将文件托进命令行就可以上传

解压

tar -xzvf elasticsearch-8.1.2-linux-x86_64.tar.gz
mv elasticsearch-8.1.2 /opt/elasticsearch

启动elasticsearch

启动前需要修改配置文件

vi /opt/elasticsearch/config/elasticsearch.yml

将下面内容在配置中解除注释

cluster.name: my-application #集群名
node.name: node-1 #结点名
network.host: 0.0.0.0 #默认只允许本地访问elasticsearch,修改为0.0.0.0可以任意IP访问本机的elasticsearch
http.port: 9200 #elasticsearch服务开启的端口
/opt/elasticsearch/bin/elasticsearch

出现了如下问题,这是由于因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户

创建新用户和授权

useradd user  #创建用户user
passwd  user  #为用户user设置密码
chown -R user:user /opt/elasticsearch #授权
su user #登录为user用户
/opt/elasticsearch/bin/elasticsearch

出现了如下问题,是可创建的文件数大小太小和最大虚拟内存太小

修改系统限制

su #切换到root用户
vi /etc/security/limits.conf 

修改/etc/security/limits.conf 配置文件,在末尾添加如下内容,修改可创建的文件数大小

user soft nofile 65536 #user是新创建的用户名字
user hard nofile 65536 #user是新创建的用户名字
vi /etc/security/limits.d/20-nproc.conf

修改 /etc/security/limits.d/20-nproc.conf 配置文件,在末尾添加如下内容,修改可创建的文件数大小

user       soft    nofile    65536
user       hard    nofile    65536
vim /etc/sysctl.conf

修改 /etc/sysctl.conf 配置文件,在末尾添加如下内容,修改最大虚拟内存大小

vm.max_map_count=655360

运行如下命令重新加载配置,并启动elasticsearch

sysctl -p  #重新加载配置
su user #切换用户
/opt/elasticsearch/bin/elasticsearch #启动elasticsearch

出现如下情况,即启动成功,在低版本elasticsearch我们可以直接访问http://192.168.15.141:9200/就可以看到结果,但是在高版本默认是使用https协议,所以得访问https://192.168.15.141:9200/,但是博主使用浏览器访问时,由于elasticsearch的证书不被信用,无法访问

关闭https选项

可以选择关闭https选项,修改配置

vi /opt/elasticsearch/config/elasticsearch.yml

将如下配置原先的true改为false,将path

xpack.security.enabled: false

xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
#  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false
#  verification_mode: certificate
#  keystore.path: certs/http.p12
#  truststore.path: certs/http.p12

重新启动elasticsearch

su user #切换用户
/opt/elasticsearch/bin/elasticsearch #启动elasticsearch

访问http://192.168.15.141:9200/就可以看到结果,每个人的ip都可能不一样,使用ifconfig命令,查看ens33中的ip地址,改成自己的ip即可

修改防火墙配置

如果需要从宿主机访问虚拟机,还需要关闭防火墙或者开启特定端口

firewall-cmd --zone=public --add-port=9200/tcp --permanent #--permanent为永久打开
firewall-cmd --reload #重新载入配置
firewall-cmd --zone=public --list-ports #查看所有打开的端口

或者关闭防火墙

systemctl stop firewalld
systemctl status firewalld

然后在宿主机访问http://192.168.15.141:9200/即可

安装elasticsearch-head

elasticsearch-head用于监控elasticsearch状态,还可以充当elasticsearch的客户端

安装Node.js

elasticsearch-head是一个基于Node.js运行的一个前端项目,使用elasticsearch-head必须安装Node.js

wget https://npmmirror.com/mirrors/node/v16.14.2/node-v16.14.2-linux-x64.tar.xz
tar -xvf node-v16.14.2-linux-x64.tar.xz
mv node-v16.14.2-linux-x64 /opt/nodejs

配置环境遍历

vi /etc/profile

在最后的PATH处后面加一个冒号而不是直接替换成下面的内容因为还有其他软件的环境变量,然后写上解压好的nodejs的bin可运行二进制文件目录

export PATH=$PATH:/opt/nodejs/bin

运行如下命令使配置文件生效

source /etc/profile

判断有无安装成功

node -v
npm -v

出现如下情况则安装成功

安装git

elasticsearch-head托管在github上的项目,可以安装git后git clone下来,也可以直接去github下载

yum install git -y
git clone https://github.com/mobz/elasticsearch-head.git

如果网速太慢也可以从百度云下载下来,再通过XShell传入虚拟机
链接:https://pan.baidu.com/s/1Ik4Y0eXip0FJCWfi_APa8Q
提取码:pdki
最好使用百度云下载下来,是带npm依赖包的,不然还需要安装grunt依赖包

解压

一般通过XShell上传的路径都在 ~,即用户目录,如果是XShell登录的是root用户则是 / 根目录,通过git clone下来的则在当前目录

cd ~
unzip elasticsearch-head-master.zip
mv  elasticsearch-head-master /opt/elasticsearch-head-master

启动elasticsearch-head

启动之前需要安装grunt

npm install -g grunt-cli #全局安装
cd /opt/elasticsearch-head-master
npm run start

如果不是使用百度云下载的则执行如下命令,然后运行npm run start会报错,根据报错的缺少的包,再npm install 包名 --save-dev,把缺少的包都安装好即可

npm install -g grunt-cli #全局安装
cd /opt/elasticsearch-head-master
npm install grunt --save-dev #局部安装
npm run start

启动后,修改防火墙配置或关闭防火墙,然后在宿主机访问http://192.168.15.141:9100/即可,连接集群地址是http://192.168.15.141:9200/,一开始是无法连接成功的,因为elasticsearch禁止跨域访问,跨域即协议、主机名、端口号有一个不同,则无法访问elasticseach,所以需要修改配置

修改配置

vi /opt/elasticsearch/config/elasticsearch.yml

在文件末尾,添加如下配置

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

重新启动elasticseach即可

su user #切换用户
/opt/elasticsearch/bin/elasticsearch #启动elasticsearch

然后再点击连接,就可以看到连接成功

搭建elasticsearch集群

搭建三个elasticsearch服务器组成的集群,先复制两次

su #登录root用户,不然没有权限
cp -a /opt/elasticsearch /opt/elasticsearch1
cp -a /opt/elasticsearch /opt/elasticsearch2

修改配置

/opt/elasticsearch/config/elasticsearch.yml

vi /opt/elasticsearch/config/elasticsearch.yml

修改配置为如下,有些配置需要修改,有些需要添加,cluster.initial_master_nodes本来就有,如果再加则重复配置会无法启动服务器。transport.port的老版本是transport.tcp.port,我使用的版本需要使用transport.port

cluster.name: my-application #集群名称
node.name: node-1 #节点名称
network.host: 0.0.0.0 #设置为能被任意ip访问
http.port: 9200 #服务开启的端口
transport.port: 7777 #内部节点之间通信端口
discovery.seed_hosts: ["localhost:7777","localhost:8888","localhost:9999"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"] 

/opt/elasticsearch1/config/elasticsearch.yml

vi /opt/elasticsearch1/config/elasticsearch.yml
cluster.name: my-application #集群名称
node.name: node-2 #节点名称
node.max_local_storage_nodes: 3  #默认为1,表示集群最多只有一个结点
network.host: 0.0.0.0 #设置为能被任意ip访问
http.port: 9300 #服务开启的端口
transport.port: 8888 #内部节点之间通信端口
discovery.seed_hosts: ["localhost:7777","localhost:8888","localhost:9999"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"] 

/opt/elasticsearch2/config/elasticsearch.yml

vi /opt/elasticsearch2/config/elasticsearch.yml
cluster.name: my-application #集群名称
node.name: node-3 #节点名称
network.host: 0.0.0.0 #设置为能被任意ip访问
http.port: 9400 #服务开启的端口
transport.port: 9999 #内部节点之间通信端口
discovery.seed_hosts: ["localhost:7777","localhost:8888","localhost:9999"]
cluster.initial_master_nodes: ["node-1", "node-2","node-3"] 

启动Elasticsearch集群

启动之前必须配置启动的内存大小,否则内存会不足,无法启动3个服务器

vi /opt/elasticsearch/config/jvm.options
vi /opt/elasticsearch1/config/jvm.options
vi /opt/elasticsearch2/config/jvm.options

在上面三个配置文件中添加如下配置,-Xms512m设置堆内存最小值为512MB,-Xmx512m设置堆内存最大值为512MB

-Xms512m
-Xmx512m

开启三个终端,进入user用户,然后启动三个Elasticsearch服务器,启动之前必须把每个elasticsearch文件夹下中的data文件夹删掉,才能连入集群,否则结点无法连入集群,即只有data文件夹不存在启动的结点才能连入一个已经存在的集群

su user
/opt/elasticsearch/bin/elasticsearch
/opt/elasticsearch1/bin/elasticsearch
/opt/elasticsearch2/bin/elasticsearch

出现如下情况表示集群启动成功

有关从零开始搭建Elasticsearch集群遇到的问题的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  4. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  5. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  6. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  7. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  8. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

  9. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  10. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

随机推荐