ElasticSearch集群搭建
ElasticSearch集群搭建
一、前言
先介绍ElasticSearch的几个核心概念。
集群(cluster):
一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是"elasticsearch"。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。
节点(node):
一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的名字,这个名字会在启动的时候赋予节点。这个名字对于管理工作来说很重要的,因为在管理过程中,可以确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。
一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入到一个叫做"elasticsearch"的集群中,这意味着,如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做"elasticsearch"的集群中。
在一个集群里,只要你想,可以拥有任意多个节点。而且,如果当前你的网络中没有运行任何Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫做"elasticsearch"的集群。
二、准备工作
搭建有3个节点的集群,准备3台服务器。
192.168.2.86
192.168.2.87
192.168.2.88
官网下载安装包
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.0.tar.gz
安装第三方epel源
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装JDK环境(所有机器)
http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
cd /usr/localtar -zxf jdk-8u131-linux-x64.tar.gzln -sv jdk1.8.0_131/ jdk vi /etc/profile.d/jdk.sh
添加以下内容
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:/usr/local/jdk/bin
~
chmod 755 /etc/profile.d/jdk.sh. /etc/profile.d/jdk.sh
验证Java环境
修改ulimit限制(所有机器)
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 10240
* hard nproc 10240
* soft nofile 65536
* hard nofile 65536
vi /etc/sysctl.conf
添加下面内容
vm.max_map_count = 262144
然后执行以下命令
sysctl -p
三、安装配置集群
创建一个ELK目录,ElasticSearch安装在这个目录下。
[root@localhost local]#mkdir elk[root@localhost local]# cd elk/
安装Head插件:
先安装Head插件,它是一个管理ElasticSearch集群的工具(这步只需在192.168.2.86安装)
yum install npm git #安装node.jsgit clonegit://github.com/mobz/elasticsearch-head.gitcd elasticsearch-headnpm installnpm run start & 或者 grunt server 启动
通过http://192.168.2.86:9100/ 登录查看
安装ElasticSearch
解压ElasticSearch安装包到ELK目录下
[root@localhost local]# tar -zxfelasticsearch-5.3.0.tar.gz
下面开始配置ElasticSearch集群,编辑配置文件
[unilife@localhost config]$ pwd/home/unilife/elk/elasticsearch-cluster2/config[unilife@localhost config]$ vi elasticsearch.yml
添加以下配置内容
cluster.name: unilifemedia
node.name: node-1
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 0.0.0.0
http.port: 19200
transport.tcp.port: 19300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts:["192.168.2.86", "192.168.2.87", "192.168.2.88"]
配置选项解析:
cluster.name: 集群名称,一个节点要加入某个集群,需配成跟那个集群的名称一样
node.name: 节点名称
path.data: /tmp/elasticsearch/data 数据目录
path.logs: /tmp/elasticsearch/logs 日志目录
network.host: 0.0.0.0 监听地址
http.port: 19200 设置对外服务的http端口,默认为9200。
transport.tcp.port: 19300 设置节点之间交互的tcp端口,默认是9300。
http.cors.enabled: true 启用跨域,不然head插件会无法连接集群
http.cors.allow-origin: "*" 跨域配置,允许所有
discovery.zen.ping.unicast.hosts:["192.168.2.86", "192.168.2.87", "192.168.2.88"] 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
192.168.2.87的elasticsearch.yml配置如下:
cluster.name: unilifemedia
node.name: node-2
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 0.0.0.0
http.port: 19200
transport.tcp.port: 19300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts:["192.168.2.86", "192.168.2.87", "192.168.2.88"]
192.168.2.88的elasticsearch.yml配置如下:
cluster.name: unilifemedia
node.name: node-3
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 0.0.0.0
http.port: 19200
transport.tcp.port: 19300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts:["192.168.2.86", "192.168.2.87", "192.168.2.88"]
在各个节点分别启动ElasticSearch
[unilife@localhost bin]$ ./elasticsearch &
通过head插件查看集群状态
集群搭建完成。