Linux服务器CentOs7对Elasticsearch7集搭建,完整过程和
插件安装。。。。
此⽂章仅适⽤Elasticsearch.7x版本,因为7版本经过官⽅⼤改,不适合7以下版本参考,请知悉。
本⼈安装环境
Centos7.6、 Elasticsearch7.8 、三个主节点的配置(10.10.10.1、10.10.10.2、10.10.10.3)节点其实就是你的服务器外⽹ip
完整步骤
1、⾸先创建es的⽤户,这⼀点与之前版本的相同,因为es启动时,不允许使⽤root⽤户启动。创建⽤户后,并切换到新添加的⽤户下进⾏后续操作
# 添加⽤户组
groupadd es
# 添加⽤户
useradd -m -g es es
# 配置密码
passwd es
#增加sudo权限
visudo
然后在弹出的vi⽂本编辑框中的最后加上(es ALL=(ALL) NOPASSWD:ALL )
#切换⽤户(使⽤es⽤户来启动elasticsearch)
su es
2、下载es,这⾥可以使⽤⾃⼰的安装包(如果⾃⼰封装了插件的话),或者从官⽹上进⾏下载,如果使⽤7.8的话可以直接使⽤下⾯的⽅式进⾏下载
wget /downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_
3、将es压缩包进⾏解压
tar xvf elasticsearch-7.8.9-linux-x86_ /usr/data/elasticsearch
4、配置(这个配置⽂件需要同步到10.10.10.1 10.10.10.2 10.10.10.3三个主机上)
4.1 修改es的配置⽂件
vi /usr/data/elasticsearch/l
yml中的配置内容,按需修改⾃⼰的ip
# 增加以下内容
# 集名称必须相同
cluster.name: es-yourname
node.name: node-num
# 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true
# 当前节点是否⽤于存储数据,是:true、否:false
node.data: true
# 数据和⽇志存储的地⽅,建议与es的安装⽬录区分,⽅式es删除后数据的丢失
path.data: /data/es/data
path.logs: /data/es/logs
# 需求锁住物理内存,是:true、否:false
<_lock: false
# SecComp检测,是:true、否:false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
# 集必须要配置此项,yourIp修改为⾃⼰的本机服务器的外⽹ip,否则集失败network.publish_host: yourIp
# 主机访问的端⼝号
http.port: 9200
# es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
# es7之后,不需要ping.unicast.hosts这个参数,⽤discovery.seed_hosts替换discovery.seed_hosts: ["10.10.10.1","10.10.10.2","10.10.10.3"]
# es7.x 之后新增的配置,初始化⼀个新的集时需要此配置来选举master
cluster.initial_master_nodes:["10.10.10.1","10.10.10.2","10.10.10.3"]
# 是否⽀持跨域,是:true,在使⽤head插件时需要此配置
# "*" 表⽰⽀持所有域名
4.2 修改 jvm.options
vim config/jvm.options
# 按需修改如下内存⼤⼩即可
-Xms4g
-Xmx4g
4.3 创建数据和⽇志⽬录(也就是4.1中配置的路径)
mkdir -p /data/es/data
mkdir -p /data/es/logs
4.4 在三台服务器上分别启动es,没有先后之分,7版本会⾃动选取主节点的。
./usr/data/elasticsearch/bin/elasticsearch
# 后台启动的话,使⽤下⾯的这个命令
./usr/data/elasticsearch/bin/elasticsearch -d
4.5 检查集是否部署成功
# 检查集的健康状态
GET /_cat/health?v
# 集中所有的节点
GET /_cat/nodes?v
也可以这样访问:你的外⽹ip:9200/_cat/health?v
你的外⽹ip:9200/_cat/nodes?v
参数说明:
1、在新版7.0的es中,对es的集发现系统做了调整,不再有inimum_master_nodes这个控制集脑裂的配置,转⽽由集⾃主控制,并且新版在启动⼀个新的集的时候需要有cluster.initial_master_nodes初始化集列表。
2、在es7中,* 开头的参数,有些已经失效
问题解决(以下部分参考 ElasticSearch 7.8.0 集环境搭建)
1、每个进程最⼤同时打开⽂件数太⼩
vim /etc/f
# 增加如下:
# elsearch为⽤户名
elsearch soft nofile 65536
elsearch hard nofile 65536
# 保存之后,退出当前⽤户重新登录⽣效,可⽤如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn
2、申请锁定内存失败
vim l
# 修改,不锁定内存
<_lock: false
3、 最⼤虚拟内存太⼩
vim /f
# 增加如下:
vm.max_map_count=262144
# 修改完之后,执⾏如下命令⽣效
sysctl -p
4、 因为Centos6不⽀持SecComp,⽽ES5.2.0默认bootstrap.system_call_filter为true进⾏检测,所以导致检测失败,失败后直接导致ES不能启动
vim l
设置为false
bootstrap.system_call_filter: false
5、 最⼤线程数太⼩
vim /etc/f
# 增加如下:
# elsearch为⽤户名
elsearch soft nproc 4096
elsearch hard nproc 4096
# 保存之后,退出当前⽤户重新登录⽣效,可⽤如下命令查看是否修改成功
ulimit -Hu
ulimit -Su
6、 network.host 监听 0.0.0.0 之后⽆法组成集
始终只有⼀个节点:
vim l
# 增加如下配置,⽤于集内各机器间通信:
network.publish_host: yourIp
启动过程有错误:
1、
遇到启动elasticsearch失败,使⽤的是专门的⽤户es来启动的,启动⽇志提⽰不能加载配置⽂件:
[es@**** bin]$ ./elasticsearch
Exception in thread "main" 2020-06-03 17:36:23,881 main ERROR No log4j2 configuration file found. Using default configuration: logging only errors to the conso 2020-06-03 17:36:24,113 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.ma
nagement.MBeanTrustPermis at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1848)
at com.sun.jmx.isterMBean(DefaultMBeanServerInterceptor.java:322)
at com.sun.jmx.isterMBean(JmxMBeanServer.java:522)
at org.apache.ister(Server.java:389)
at org.apache.isterMBeansAfterReconfigure(Server.java:167)
at org.apache.isterMBeansAfterReconfigure(Server.java:140)
at org.apache.LoggerContext.setConfiguration(LoggerContext.java:556)
at org.apache.figure(LoggerContext.java:617)
at org.apache.figure(LoggerContext.java:634)
at org.apache.LoggerContext.start(LoggerContext.java:229)
at org.apache.Context(Log4jContextFactory.java:242)
at org.apache.Context(Log4jContextFactory.java:45)
at org.apache.logging.Context(LogManager.java:174)
at org.apache.logging.Logger(LogManager.java:618)
at org.elasticsearchmon.Logger(ESLoggerFactory.java:54)
at org.elasticsearchmon.Logger(ESLoggerFactory.java:62)
at org.elasticsearchmon.Logger(Loggers.java:101)
at org.elasticsearch.ExceptionsHelper.<clinit>(ExceptionsHelper.java:42)
at org.String(ElasticsearchException.java:663)
at java.lang.String.valueOf(String.java:2994)
at java.io.PrintStream.println(PrintStream.java:821)
at java.lang.Throwable$WrappedPrintStream.println(Throwable.java:748)
at java.lang.Throwable.printStackTrace(Throwable.java:655)
bootstrappedat java.lang.Throwable.printStackTrace(Throwable.java:643)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1061)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1052)
at java.lang.Thread.dispatchUncaughtException(Thread.java:1959)
SettingsException[Failed to load settings from /usr/local/elasticsearch-5.6.0/l]; nested: AccessDeniedException[/usr/local/elasticsearch-5.6 at de.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:102)
at org.elasticsearch.ateEnv(EnvironmentAwareCommand.java:72)
at org.elasticsearch.ute(EnvironmentAwareCommand.java:67)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
Caused by: java.nio.file.AccessDeniedException: /usr/local/elasticsearch-5.6.0/l
at sun.nio.anslateToIOException(UnixException.java:84)
at sun.nio.hrowAsIOException(UnixException.java:102)
at sun.nio.hrowAsIOException(UnixException.java:107)
at sun.nio.wByteChannel(UnixFileSystemProvider.java:214)
at java.nio.wByteChannel(Files.java:361)
at java.nio.wByteChannel(Files.java:407)
at java.nio.file.wInputStream(FileSystemProvider.java:384)
at java.nio.wInputStream(Files.java:152)
at org.elasticsearchmon.settings.SettingsBuilder.loadFromPath(Settings.java:1032)de.InternalSettingsPreparer.prepareEnvironment(In
解决:
看到“Caused by: java.nio.file.AccessDeniedException: /usr/local/elasticsearch-7.8.0/l”的提⽰,就去
检查⽬录的权限,果然是root:root权限,使⽤es⽤户去启动,就报错了。
将⽬录的权限改成es:es就好了。(chown -R es:es elasticsearch-7.8.0即可修改⽬录所有者为es了)
[root@**** ~]# ll /usr/local/
drwxr-xr-x 7 root root 123 6⽉ 7 2020 elasticsearch-7.8.0
[root@**** local]# chown -R es:es elasticsearch-7.8.0
[root@**** local]# ll
drwxr-xr-x 7 es es 123 6⽉ 7 2020 elasticsearch-7.8.0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论