概述
搭建前之前必须安装java8环境,官方推荐java 8 的131小版本
搭建一个具有3个node的es集群:每个点都是data node也可以被选中master
1.下载es
#两种下载方法随便选一种
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
2.安装es
#安装到/usr/local/
tar -xzvf elasticsearch-6.4.0.tar.gz -C /usr/local/
#把elasticsearch-6.4.0所有者变为你使用的linux用户
sudo chown -R linux-user:linux-user /usr/local/elasticsearch-6.4.0
3.配置es(三台虚拟机配置不一样的node.name和network.host,相同的cluster.name)
sudo vim /usr/local/elasticsearch-6.4.0/config/elasticsearch.yml
cluster.name: *****
node.name: ${HOSTNAME}
network.host: *.*.*.129
http.port: 9200
transport.tcp.port: 9300
node.master: true
node.data: true
path.logs: /var/log/elasticsearch
path.data: /var/data/elasticsearch
discovery.zen.ping_timeout: 120s
discovery.zen.minimum_master_nodes: 2
client.transport.ping_timeout: 60s
discovery.zen.ping.unicast.hosts: ["*.*.*.128","*.*.*.129","*.*.*.130"]
4.配置es jvm参数
sudo vim /usr/local/elasticsearch-6.4.0/config/jvm.options
-Xms512m
-Xmx512m
5.配置系统参数
sudo vi /etc/security/limits.conf
# 添加如下内容:
your_linux_user_name soft nofile 65536
your_linux_user_name hard nofile 65536
your_linux_user_name soft nproc 4096
your_linux_user_name hard nproc 4096
sudo vi /etc/security/limits.d/20-nproc.conf
# 修改 your_linux_user_name soft nproc 1024 为
your_linux_user_name soft nproc 4096
sudo vi /etc/sysctl.conf
# 添加下面配置:
vm.max_map_count=655360
# 并执行命令:
sysctl -p
6.开通es端口
由于虚拟了三台虚机,每台安装了centos7,而每台之间都有防火墙隔离,所以三台都得开通的9200端口(对外http使用)和9300端口(集群node通信使用)
firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
firewall-cmd --reload
firewall-cmd --query-port=9200/tcp
firewall-cmd --query-port=9300/tcp
7.运行es,就OK了
/usr/local/elasticsearch-6.4.0/bin/elasticsearch
# curl一下检测es,如果有一份
curl -X GET es地址:9200
#有如下返回成功
{
"name" : "********1",
"cluster_name" : "*******r",
"cluster_uuid" : "*********",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
8.下载kibana6.4,两种下载选一种方法
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
9.安装kibana
tar -xzvf kibana-6.4.0-darwin-x86_64.tar.gz -C /usr/local/
#把elasticsearch-6.4.0所有者变为你使用的linux用户
sudo chown -R linux-用户:linux-用户 /usr/local/kibana-6.4.0-linux-x86_64
10.配置kibana
sudo vi /usr/local/kibana-6.4.0-linux-x86_64/config/kibana.yml #配置以下三个参数
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: 安装的kibana的地址
# The Kibana server's name. This is used for display purposes.
server.name: "Kibana的名字随便取"
# The URL of the Elasticsearch instance to use for all your queries.
elasticsearch.url: "http://任何一台es的地址:9200"
11.在安装kibana的的虚机上开通外部访问kibana的端口5601
firewall-cmd --permanent --zone=public --add-port=5601/tcp
firewall-cmd --reload
firewall-cmd --query-port=5601/tcp
12.运行kibana
/usr/local/kibana-6.4.0-linux-x86_64/bin/kibana
13 访问.kibana安装地址:5601,大功告成,出现以下
Trouble Shoot
启动时可能会遇到以下问题
问题:
1.现在解压elasticsearch之后,启动,通过http://localhost:9200可以访问的到,
但是 1.1 http://ip:9200访问不到,
1.2 外网带http://ip:9200访问不到, 怎么办呢?
修改elasticsearch-2.3.3configelasticsearch.yml文件
1.1
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: your_ip
#
# Set a custom port for HTTP:
#
http.port: 9200
重启一下,你就可以好好的玩耍了,good luck !!!
1.2.
先设置1.1的配置然后怀疑是自己服务器的防火墙阻止了访问,于是做了一个尝试:
service firewalld stop
关闭了防火墙,然后发现这个时候从外网网页访问就没问题了。
还是打算开启防火墙,只开放指定端口9200,可以采用如下命令:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
备注:firewall-cmd命令
常用命令介绍
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
查询端口号80 是否开启:firewall-cmd --query-port=80/tcp
永久开放80端口号:firewall-cmd --permanent --zone=public --add-port=80/tcp
移除80端口号:firewall-cmd --permanent --zone=public --remove-port=80/tcp
重启防火墙: firewall-cmd --reload
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
查看防火墙状态
systemctl status firewalld.service
启动|关闭|重新启动 防火墙
systemctl [start|stop|restart] firewalld.service
然后又想了一下,只打算对指定IP开放端口,可以采取如下命令:
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
2、unable to install syscall filter:Java.lang.UnsupportedOperationException:seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMPandCONFIG_SECCOMP_FILTERcompiledinatorg.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:349)[elasticsearch-5.0.0.jar:5.0.0]at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:630) ~[elasticsearch-5.0.0.jar:5.0.0]
原因:主要是linux的版本过低
解决方案:
重新安装新版本的linux系统
3、ERROR: bootstrap checks failed:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太小
解决方案:
切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
备注:* 代表Linux所有用户名称(比如hadoop)
保存、退出、重新登录才可生效
4、max number of threads [1024] for user [es] likely too low, increase to at least [2048]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:
切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改 * soft nproc 1024 为 * soft nproc 2048
5、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
原因:最大虚拟内存太小
解决方案:
切换到root用户下,修改配置文件sysctl.conf
vi /etc/sysctl.conf
添加下面配置:vm.max_map_count=655360
并执行命令:sysctl -p
6、ElasticSearch启动找不到主机或路由
原因:ElasticSearch 单播配置有问题
解决方案:检查ElasticSearch中的配置文件
vi config/elasticsearch.yml
注意此配置格式
discovery.zen.ping.unicast.hosts:["192.168.**.**:9300","192.168.**.**:9300"]
7、org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream
原因:ElasticSearch节点之间的jdk版本不一致
8、Unsupported major.minor version 52.0
原因:jdk版本太低
解决方案:elasticsearch5.0.0支持jdk1.8.0
9、bin/elasticsearch-plugin install license ERROR: Unknown plugin license
原因:ElasticSearch5.0.0以后插件命令已经改变
解决方案:bin/elasticsearch-plugin install x-pack
10、启动异常:ERROR: bootstrap checks failed system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899
解决方案:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
11、格式问题:Exception in thread "main" 2017-11-10 06:29:49,106 main ERROR No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.ElasticsearchParseException[malformed, expected settings to start with 'object', instead was [VALUE_STRING]]
原因:elasticsearch.yml中的配置项的格式有问题
解决方案:请尽量保持冒号前面没空格,后面一个空格,不要用tab键
bootstrap.memory_lock: false
12不能以Root运行elasticSerach
.Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) Refer to the log for complete error details.
解决:方法一修改bin/elasticsearch,加上ES_JAVA_OPTS属性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存之后重启Elasticsearch,就可以root运行。
方法二:把elasticsearch文件夹改变owner,
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch,或者直接把elasticsearch文件夹路径及内部文件的所属用户及组改为已有用户
创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch /usr/local/elasticsearch-6.4.0
/usr/local/elasticsearch-6.4.0为你elasticsearch的目录名称
切换到elsearch用户再启动
su elsearch #切换账户
cd /usr/local/elasticsearch-6.4.0/bin #进入你的elasticsearch目录下的bin目录
./elasticsearch
12.Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.2.2-1/config/jvm.options
elasticsearch用户没有该文件夹的权限,执行命令(其中es为linux的用户名)
chown -R es:es /usr/local/elasticsearch/
最后
以上就是沉静凉面为你收集整理的elasticsearch6.4 + kibana6.4 集群安装Trouble Shoot的全部内容,希望文章能够帮你解决elasticsearch6.4 + kibana6.4 集群安装Trouble Shoot所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复