Elasticsearch6.3.1集群搭建

Elasticsearch安装需要先配置好Java环境,Java环境可以参考JDK安装教程

准备:

软件准备:
去官网下载elasticsearch6.3.1:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz
硬件准备:

硬件配置:16C 32G 1024G
10.242.154.177
10.242.154.178
10.242.154.179
10.242.154.180
10.242.154.181
10.242.154.182
10.242.154.183
10.242.154.184
10.242.154.185

安装:

新建用户:

elasticsearch 不能运行在root用户下,所以先新建用户esusr
useradd esusr

解压赋权:

tar -xivf elasticsearch-6.3.1.tar.gz -C /opt
ln -s elasticsearch-6.3.1 elasticsearch
chown -R esusr:esusr /opt/elasticsearch*

新建目录:

mkdir -p /data/es/data
mkdir -p /data/es/logs
chown -R esusr:esusr /data/es/*

开始配置:
配置 elasticsearch.yml

vim elasticsearch.yml
配置项如下
cluster.name: dbrtmap-es #集群名
node.name: ${HOSTNAME} #节点名字,这里直接以hostname命名
node.attr.rack: r1
path.data: /data/es/data #数据目录如果在path.data中写多个目录用“,”分隔,功能类似于raid 0,而不是做备份
path.logs: /data/es/logs #日志目录
bootstrap.memory_lock: false #该配置请查看问题四
bootstrap.system_call_filter: false #该配置请查看问题四
http.port: 9200 # 监听端口
discovery.zen.minimum_master_nodes: 3
gateway.recover_after_nodes: 4
action.destructive_requires_name: true
network.host: 10.242.154.177 # 监听主机,根据主机配置
discovery.zen.ping.unicast.hosts: ["10.242.154.177","10.242.154.178","10.242.154.179","10.242.154.180","10.242.154.181","10.242.154.182","10.242.154.183","10.242.154.184","10.242.154.185"] #设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

优化配置1:

thread_pool.bulk.size: 16 #配置bulk导入时并发数,不能超过CPU核数+1
thread_pool.bulk.queue_size: 10000  #数据写入队列最大数量
thread_pool.search.size: 16 #search类型操作,同上
thread_pool.search.queue_size: 10000
thread_pool.index.size: 16
thread_pool.index.queue_size: 10000

优化配置2,主节点配置即可:

discovery.zen.ping_timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping_interval: 30s
discovery.zen.fd.ping_retries: 5

JVM配置

内存改为,需要根据自己机器配置来配置
-Xms16g
-Xmx16g
把内存回收机制从CMS改为G1,我们是这么设置的
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
改为:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=50
其中 -XX:MaxGCPauseMillis是控制预期的最高GC时长,默认值为200ms,如果线上业务特性对于GC停顿非常敏感,可以适当设置低一些。但是 这个值如果设置过小,可能会带来比较高的cpu消耗。 

启动:

将opt下配置好的文件夹发送到各个节点,然后建立好相同的目录,并根据各个节点的配置和IP配置修改好,然后每个节点都启动
sudo -u esusr /opt/elasticsearch/bin/elasticsearch -d

##监控、管理、查看数据:

cerebro-0.8.1

监控可以使用cerebro-0.8.1
cerebro安装可基本使用

下载`cerebro-0.8.1.tgz`
tar -xivf  cerebro-0.8.1.tgz -C /opt
mv cerebro-0.8.1 cerebro
然后启动
cd /opt/cerebro/bin
./cerebro &
默认端口为9090
访问当前主机 http://ip:9090

Elasticsearch6.3.1集群搭建
填入ES节点访问集群信息:
Elasticsearch6.3.1集群搭建
Elasticsearch6.3.1集群搭建

kibana-6.3.1

kibana-6.3.1安装和基本使用:

下载:`kibana-6.3.1-linux-x86_64.tar.gz`
tar -xivf kibana-6.3.1-linux-x86_64.tar.gz -C /opt
mv kibana-6.3.1-linux-x86_64 kibana
配置kibana.yml
vim /opt/kibana/config/kibana.yml
配置项如下:
server.port: 5601
server.host: "testapp223"
server.maxPayloadBytes: 1048576
server.name: "kibana-master"
elasticsearch.url: "http://10.242.154.177:9200"
elasticsearch.url: "http://10.242.154.178:9200"
elasticsearch.url: "http://10.242.154.179:9200"
elasticsearch.url: "http://10.242.154.180:9200"
elasticsearch.preserveHost: true
kibana.index: ".kibana"
kibana.defaultAppId: "discover"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
pid.file: /opt//kibana/run/kibana.pid
logging.dest: stdout
ops.interval: 5000
xpack.security.enabled: false

然后启动:

./kibana &

然后访问:默认端口为5601
http://ip:5601
可以查看监控视图
Elasticsearch6.3.1集群搭建

搭建常见问题:

问题一:

ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:
切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf 
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

问题二:

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

问题三:

[2]: max number of threads [1024] for user [esusr] is too low, increase to at least [4096]

vi /etc/security/limits.d/90-nproc.conf

找到如下内容:

* soft nproc 1024

#修改为

* soft nproc 4096

问题四:

报错:
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,而ES6.3.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

解决:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false