我是靠谱客的博主 怡然身影,最近开发中收集的这篇文章主要介绍CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上个月 13 号,Elasticsearch 6.3 如约而至,该版本和以往版本相比,新增了很多新功能,其中最令人瞩目的莫过于集成了 X-Pack 模块。而在最新的 X-Pack 中 Elasticsearch SQL 已经可用,虽然还处于实验阶段,但是相对于编写复杂的 DSL 查询语句,SQL 语句还是更加亲民,更易于上手。

想体验新版 Elasticsearch 6.3 的新功能,当然要先搭建一个新版本的搜索集群,本文将逐步介绍:如何在阿里云的三台 CentOS 7.4 云主机上搭建 Elasticsearch 6.3 搜索集群

角色分配

目前有三台云主机,为了实现高可用,则至少需要 2 个主节点(Master Node),当然由于只有三台主机,所以每一台都需要充当数据节点(Data Node)。

主机名内网IP公网IP角色http服务
es-master01172.16.14.8539.104.186.15master & dataenable
es-master02172.16.14.8639.104.95.206master & datadisable
es-data01172.16.14.8739.104.179.119datadisable

挂载数据盘

常规情况下,在购买阿里云主机搭建 Elasticsearch 搜索集群时都会购买一个单独的数据盘来存储索引数据,因此首先需要将购买的数据盘进行挂载。详细的挂载流程可用参考阿里的官方教程,下面只贴出用到的命令:

fdisk -l                                # 查看可用数据盘
fdisk /dev/vdb                          # 输入:n>>p>>enter>>enter>>wq
fdisk -l                                # 验证数据盘
mkfs.ext3 /dev/vdb1                     # 格式化
cp /etc/fstab /etc/fstab.bak            # 备份 fstab 文件
echo /dev/vdb1 /data ext3 defaults 0 0 >> /etc/fstab
mkdir /data                             # 创建数据目录
mount /dev/vdb1 /data                   # 挂载数据盘到数据目录
df -h                                   # 验证挂载
复制代码

系统优化

1. 修改主机名以及 Hosts

按照角色修改主机的主机名,便于区分,同时为了便于节点间通信,需要修改主机的 Hosts。

vi /etc/hostname   #修改主机名

vi /etc/hosts      #修改hosts

172.16.14.85       es-master01
172.16.14.86       es-master02
172.16.14.87       es-data01
复制代码

2. 创建ES用户

由于 Elasticsearch 不允许也不推荐使用 root 用户来运行,因此需要新建一个用户来启动 Elasticsearch。

adduser elastic    #创建elastic用户
passwd elastic     #修改elastic密码
复制代码

3. 创建ES数据日志文件夹

将 Elasticsearch 的数据文件和日志目录设置到数据盘。

cd /data/
mkdir elastic
cd elastic
mkdir data          #创建数据目录
mkdir log           #创建日志目录
mkdir bak           #创建备份目录
chown -R elatic /data/elastic/  #修改 /data/elastic/ 目录拥有者为 elastic
复制代码

4. 优化文件句柄数以及用户可用进程数

新版 Elasticsearch 要求其可用的文件句柄至少为 65536,同时要求其进程数限制至少为 2048,可用按照下面的指令进行修改。

分别对应以下两个报错信息:

  1. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536];
  2. max number of threads [1024] for user [es] is too low, increase to at least [2048]。
vim /etc/security/limits.conf

*     soft   nofile  655350
*     hard   nofile  655350
*     soft   nproc   4096
*     hard   nproc   8192
elastic soft memlock unlimited
elastic hard memlock unlimited
复制代码

5. 修改内核交换

为了避免不必要的磁盘和内存交换,影响效率,需要将 vm.swappiness 修改为 1。

此外需要修改最大虚拟内存 vm.max_map_count 防止启动时报错:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]。

vim /etc/sysctl.conf

vm.swappiness = 1
vm.max_map_count = 655360

sysctl -p   # 立即生效
复制代码

6. 关闭swap

swapoff -a
复制代码

7. 重启使得配置生效

reboot
复制代码

下载解压文件

下载 Java、Elasticsearch 和 Kibana 安装包,并解压到 /opt/soft/ 目录,最后修改 elasticsearch-6.3.0 以及 kibana-6.3.0 的拥有者为 elastic

mkdir /opt/downloads/
mkdir /opt/soft/
cd /opt/downloads/

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz
wget http://download.oracle.com/otn/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz

tar -zxvf elasticsearch-6.3.0.tar.gz -C /opt/soft/
tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/soft/
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz -C /opt/soft/

chown -R elastic /opt/soft/elasticsearch-6.3.0/
chown -R elastic /opt/soft/kibana-6.3.0/
复制代码

配置 Java 运行环境

su elastic                   #切换到 elastic 用户
vim ~/.bash_profile          #只修改 elastic 用户自己的环境变量

export JAVA_HOME=/opt/soft/jdk1.8.0_162
export JRE_HOME=/opt/soft/jdk1.8.0_162/jre
export CLASSPATH=.:/opt/soft/jdk1.8.0_162/lib:/opt/soft/jdk1.8.0_162/jre/lib
export PATH=$PATH:/opt/soft/jdk1.8.0_162/bin:/opt/soft/jdk1.8.0_162/jre/bin
复制代码

配置 Elasticsearch 内存占用

配置 jvm 最大堆和最小堆,一般为服务器物理内存的一半,最大不超过 32g。

cd /opt/soft/elasticsearch-6.3.0/config/
vim jvm.options 

-Xms2g
-Xmx2g
复制代码

配置 Elasticsearch

按照下列模板修改 elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
#
# ---------------------------------- Cluster -----------------------------------
#es 集群名称
cluster.name: es-cluster        

#当前节点名称
node.name: es-mater01           

#配置角色为:主节点和数据节点
node.master: true
node.data: true

#配置数据路径和日志路径
path.data: /data/elastic/data
path.logs: /data/elastic/log

#开启内存锁定
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
# ---------------------------------- Network -----------------------------------
#设置节点间通讯IP,这里设置为0.0.0.0主要时兼顾内网节点间通讯,同时方便外网开发人员进行调试
network.bind_host: 0.0.0.0

#设置9200通讯IP,一般设置为外网IP
network.publish_host: 39.104.186.15

#设置HTTP通讯端口
http.port: 9200

#设置HTTP开启状态
http.enabled: true

#设置运行跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.max_content_length: 500mb

# --------------------------------- Discovery ----------------------------------
#设置zen发现范围,此处可用换为主机名:["es-master01", "es-master02", "es-data01"]
discovery.zen.ping.unicast.hosts: ["172.16.14.85", "172.16.14.86", "172.16.14.87"]

#discovery.zen.ping.multicast.enabled: false

discovery.zen.no_master_block: write
discovery.zen.fd.ping_timeout: 10s

#设置最小主节点个数,一般为:(master_node_count+1)/2
discovery.zen.minimum_master_nodes: 2

# ---------------------------------- Gateway -----------------------------------
#设置在有2个节点后进行数据恢复
gateway.recover_after_nodes: 2
gateway.expected_nodes: 3
gateway.recover_after_time: 1m

#
# ---------------------------------- Various -----------------------------------
#禁止通配符模式删除索引
action.destructive_requires_name: true
#indices.cluster.send_refresh_mapping: false

indices.recovery.max_bytes_per_sec: 200mb
indices.memory.index_buffer_size: 20%

#script.inline: true
#script.indexed: true

#关闭xpack的安全校验
xpack.security.enabled: false
复制代码

插件推荐

下面推荐的前两个插件是 Chrome 插件,便于访问 ES,最后一个 ElasticHD 是 go 语言编写的客户端,一样比较好用。

  1. ElasticSearch Query Builder
  2. ElasticSearch Head
  3. ElasticHD

使用 Kibana

除了其他插件之外,可用使用官方的 kibana 查看操作 Elasticsearch。修改 kibana.ymlelasticsearch.url:http://es-master01:9200 即可使用,更加详细的配置可参考。

总结

本文介绍了 CentOS 6.4 搭建 Elasticsearch 6.3 搜索群集的全过程,后续会有相关文章介绍 Elasticsearch 的基本概念以及 Elasticsearch 6.3 的新特性,敬请期待。


Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一起前行。

最后

以上就是怡然身影为你收集整理的CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集的全部内容,希望文章能够帮你解决CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部