elasticsearch6.4 + kibana6.4 集群安装

搭建前之前必须安装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.3\config\elasticsearch.yml文件

1.1

# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# 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/

猜你喜欢

转载自blog.csdn.net/cxfeugene/article/details/82710504
6.4