1.0 ElasticSearch集群部署
1.0.1基本概念
节点(Node):节点是一个ElasticSearch的实例,一般一台主机上部署一个节点
集群(Cluster):集群由若干节点组成,和任意节点的通信等价于和集群的通信
分片(Shard):一个索引会分成多个分片存储,分片数量在索引建立后不可更改
副本(Replica):副本是分片的一个拷贝,目的在于提高系统的容错性和搜索的效率
索引(Index):类似数据库的库
类型(Type):类似数据库的表
文档(Document):类似数据库的行,包含一个或多个Field
字段(Field):搜索的最小单元,可通过Mapping定义不同的属性(比如可否被搜索)
1.0.2安装与配置
解压ES安装包到3台节点的/data/app/app/elasticsearch目录。
$ cd /data/data
$ tar -xzvf elasticsearch-5.5.1.tar.gz -C /data/app
$ cd /data/app/app
$ mv elasticsearch-5.5.1 elasticsearch
3台机器修改 /etc/hosts(root权限)添加以下内容:
ip1 xxx-1
ip2 xxx-2
ip3 xxx-3
xxx换成机器实际的hostname。
创建数据和日志目录:
$ mkdir -p /data/app/es/{data,logs}
修改elasticsearch.yml配置文件:
$ vi /data/app/elasticsearch/config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
#如果是应用独享,命名请使用es-应用名称
cluster.name: es-did
# ------------------------------------ Node ------------------------------------
# 这个名称可以自己定义,建议node1、node2去命名
node.name: node1
#指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。
node.master: true
# 指定该节点是否存储索引数据,默认为true。
node.data: true
# ----------------------------------- Paths ------------------------------------
path.data: /data/app/es/data
# Path to log files:
path.logs: /data/app/es/logs
# ----------------------------------- Memory -----------------------------------
#服务器发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。
#所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,
#更严重的是会引起节点响应延迟甚至脱离集群。
#这个参数的目的是当你无法关闭系统的swap的时候,建议把这个参数设为true。
#防止在内存不够用的时候,elasticsearch的内存被交换至交换区,导致性能骤降。
#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#network.host ,如果不限制主机访问,同时设置bind_host和publish_host两个参数,那我们只需要把该属性设置为0.0.0.0,那么就不限制主机的访问和节点的交互
network.host: 10.20.12.72 //其他两台10.20.44.68,10.20.12.71
#可以为Http传输监听定制端口
http.port: 9200
#配置节点之间交互的端口.默认端口
transport.tcp.port: 9300
# 设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress: true
# 设置请求内容的最大容量,默认100mb
http.max_content_length: 100mb
#IP 最好是三个,注意master节点数量,一般为三个,data数量不限,配合node.master: true
discovery.zen.ping.unicast.hosts: ["10.20.12.72","10.20.44.68","10.20.12.71"]
# 这个参数控制的是,一个节点需要看到具有master资格的节点的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
discovery.zen.minimum_master_nodes: 1
1.0.3修改启动文件:
$ vi /data/app/app/elasticsearch/bin/elasticsearch
export JAVA_HOME=/data/app/app/jdk1.8.0_144
1.0.4启动es服务
$ /data/app/app/elasticsearch/bin/elasticsearch -d
1.0.5检查服务是否启动
1.查看日志
tail -222f /data/app/app/es/logs/elasticseaarch.log
2.访问连接是否正常
curl [http://192.168.1.x:9200](http://192.168.1.x:9200)
若有返回则启动成功
1.0.6 ElasticSearch调优
1调整Linux文件数
在文件/etc/security/limits.conf末尾增加:
$ sudo vi /etc/security/limits.conf
*soft nofile 65536
*hard nofile 65536
*soft nproc 2048
*hard nproc 4096
- memlock unlimited
ulimit 临时生效:
$ sudo sh -c "ulimit -n 65536 -u 65536 && exec su $LOGNAME"
$ source ~/.bash_profile
sudo vi /etc/sysctl.conf
vm.max_map_count = 655360
sudo sysctl -p
2配置优化
在Elasticsearch配置文件elasticsearch.yml末尾添加:
# #---------------------------------- Indexing Settings -------------------------
index.refresh_interval: 30s
index.translog.flush_threshold_ops: 50000
#---------------------------------- Search pool ---------------------
threadpool.search.type: fixed
threadpool.search.size: 200
threadpool.search.queue_size: 1000
#---------------------------------- Bulk pool ----------------------
threadpool.bulk.type: fixed
threadpool.bulk.size: 600
threadpool.bulk.queue_size: 3000
#---------------------------------- Index pool ---------------------
threadpool.index.type: fixed
threadpool.index.size: 200
threadpool.index.queue_size: 1000
#---------------------------------- Indices settings ---------------
indices.memory.index_buffer_size: 30%
indices.memory.min_shard_index_buffer_size: 12mb
indices.memory.min_index_buffer_size: 96mb
#---------------------------------- Cache Sizes -------------------
indices.fielddata.cache.size: 15%
indices.fielddata.cache.expire: 6h
indices.cache.filter.size: 15%
indices.cache.filter.expire: 6h
3堆内存
ES默认分配的堆内存是1g,可以根据机器内存情况适当调大,一般不超过机器内存的一半,修改-Xms和-Xmx增大到10g:
$ vim config/jvm.options
-Xms10g
-Xmx10g
1.0.7 kabina部署配置说明
1.在任意一台Elasticsearch机器安装Kibana。
$ cd /data/data
$ tar xzvf kibana-5.5.1-linux-x86_64.tar.gz -C /data/app
$ cd /data/app
$ mv kibana-5.5.1-linux-x86_64 kibana
2.修改Kibana配置文件:
$ cd /data/app/kibana
$ vi config/kibana.yml
server.host: "192.168.1.x" // kibana机器ip
elasticsearch.url: "http://192.168.1.x:9200" // es某个节点ip
3.启动Kibana:
$ cd /data/app/kibana
$ nohup bin/kibana &