软件版本
名称 | 版本 |
---|---|
os | CentOS release 6.5 (Final) |
ES | elasticsearch-5.2.0 |
集群节点
主机 | ip |
---|---|
study0 | 192.168.137.150 |
study1 | 192.168.137.151 |
部署elasticsearch集群:
安装jdk
[root@study0 elasticsearch-5.2.0]# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
[root@study0 elasticsearch-5.2.0]#
解压安装
[root@study0 es]# unzip elasticsearch-5.2.0.zip
具体配置
cd config/
vim elasticsearch.yml
cluster.name: es-log
node.name: log-0
#node.attr.rack: r1
path.data: /usr/local/es/elasticsearch-5.2.0/data
path.logs: /usr/local/es/elasticsearch-5.2.0/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: study0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["study0", "study1"]
discovery.zen.minimum_master_nodes: 1
#gateway.recover_after_nodes: 3
#action.destructive_requires_name: true
#action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.notification.email.account:
work:
profile: standard
email_defaults:
from: dennis52o1314@163.com
smtp:
auth: true
host: smtp.163.com
port: 25
user: dennis52o1314@163.com
password: 1111111111
http.cors.enabled: true
http.cors.allow-origin: "*"
配置解释
集群名称
cluster.name: es-log
节点
node.name: log-1 ##节点保持唯一性。
数据和日志存放目录
path.data: /path/to/data
path.logs: /path/to/logs ##默认当前目录下,可以修改
是否使用swap
bootstrap.memory_lock:true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
广播配置
discovery.zen.ping.unicast.hosts: ["study0", "study1"]
discovery.zen.minimum_master_nodes: 1
其他系统设置
vim /etc/sysctl.conf
vm.max_map_count= 262144
sysctl –p
系统打开文件数配置
vim /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
修改用户线程数
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
切换普通用户启动
su – study
./elasticsearch
要是提示,报一些没有目录的错误,直接创建即可,但是想写入日志和数据必须是普通用户有写入权限
测试安装效果
curl -XGET 'study0:9200'
{
"name" : "log-1",
"cluster_name" : "es-log",
"cluster_uuid" : "_na_",
"version" : {
"number" : "5.0.0",
"build_hash" : "253032b",
"build_date" : "2016-10-26T04:37:51.531Z",
"build_snapshot" : false,
"lucene_version" : "6.2.0"
},
"tagline" : "You Know, for Search"
}
集群启动设置
只加入一个节点,那么es就当做自己是一个集群。
一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。
当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。
study0创建一条索引,查看单集群的状态
[root@study0 elasticsearch-5.2.0]# curl -XPOST 'study0:9200/test/name/1' -d '
{
"name": "dennis"
}'
####创建一条test的索引,type为name,id=1
查看集群当前的状态:
[root@study0 elasticsearch-5.2.0]#curl -XGET 'study0:9200/_cluster/health?pretty'
{
"cluster_name" : "es-log",
"status" : "yellow",
}
集群的几个状态:
颜色 | 说明 |
---|---|
green | 所有主要分片和复制分片都可用 |
yellow | 所有主要分片可用,但不是所有复制分片都可用 |
red | 不是所有的主要分片都可用 |
可以看到显示为:yellow的,因为只有主分片,而没有复制分片的。
现在启动配置好study1这个节点:
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: es-log
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: log-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /usr/local/es/elasticsearch-5.2.0/data
#
# Path to log files:
#
path.logs: /usr/local/es/elasticsearch-5.2.0/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: study1
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.zen.ping.unicast.hosts: ["study0", "study1"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
discovery.zen.minimum_master_nodes: 1
#
# For more information, consult the zen discovery module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
集群的相关状态:
[root@study0 elasticsearch-5.2.0]# curl -XGET 'study0:9200/_cluster/health?pretty'
{
"cluster_name" : "es-log",
"status" : "green",
}
可以看到集群已经变成绿色,说明我们复制分片是已经可以使用了的,我们在study1上面查看一下我们刚刚创建的数据看:
[root@study1 elasticsearch-5.2.0]# curl -XGET 'study1:9200/test/name/1?pretty'
{
"_index" : "test",
"_type" : "name",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "dennis"
}
}
可以看到数据已经被复制到study1上面了。
成功之后,集群的配置要稍作修改:
discovery.zen.minimum_master_nodes: 2 ###开始设置成1是为了一台测试,推荐大于1台。