Elasticsearch集群搭建

本次集群搭建基于Elasticsearch 7.8.1
下载地址(Elastic中文社区):https://elasticsearch.cn/download/#seg-12

一、节点规划
ES服务器 节点分配
192.168.0.01 master
192.168.0.02 slave
192.168.0.03 slave
192.168.0.04 slave
192.168.0.05 slave,kibana
二、es新建用户
useradd elastic
passwd ***
三、修改最大文件数

root用户执行:vim /etc/security/limits.conf

添加:

elastic soft nofile 65536
elastic hard nofile 65536
elastic soft nproc 65536
elastic hard nproc 65536
elastic soft memlock unlimited
elastic hard memlock unlimited
四、修改虚拟机最大内存

root用户执行:vim /etc/sysctl.conf

添加:

vm.max_map_count=262144
vm.swappiness=1

修改生效:sysctl -p

或者使用临时修改(服务器重启后失效):

sysctl  -w vm.max_map_count=262144
sysctl -w vm.swappiness=1
五、配置内存锁定

elasticsearch官网建议生产环境需要设置 bootstrap.memory_lock: true

官网的解释 是:发生系统swapping(内存交换)的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。

vim /etc/systemd/system.conf

在文件末尾添加

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

但保存后,并不能立即生效,使之生效有两种方法

  1. 重启系统
  2. 执行:systemctl daemon-reexec
六、切换用户并创建目录

切换至 elastic用户,并查看磁盘挂载点

su elastic
df -h

找到一个磁盘空间最大的挂载点,新建 elasticsearch 数据存储目录

本次部署与技服沟通,将2T硬盘挂载在了 /data 下 ,直接在 /data 下新建目录

  • elasticsearch —— 应用目录
  • data —— 数据存储目录
  • logs —— 存储日志
  • keystore —— xpack集群通信密钥存储
mkdir -p /data/elasticsearch
mkdir -p /data/data
mkdir -p /data/logs
mkdir -p /data/keystore

务必确保 /data下各个文件 的权限属于你为elasticsearch准备的非root账户,如果不是,使用root用户执行如下

chown -R elastic:elastic /data
七、上传tar包

将安装包上传至/data/elasticsearch下,解压,然后删除压缩包

tar -zxvf elasticsearch-7.8.1.tar.gz
rm -rf elasticsearch-7.8.1.tar.gz
八、修改JVM内存

进入 /data/elasticsearch/elasticsearch-7.8.1/config

修改 jvm 配置

vim jvm.options
-Xms8g # 注意,该项值不要超过32G,最佳值是26g
-Xmx8g

为了保证JVM利用率,建议上述两个值相同

九、修改节点配置
vim elasticsearch.yml

master节点:

cluster.name: es #集群名称
node.name: node-01 #节点名称,1-9的节点建议命名为01-09,方便查看
path.data: /data/data #数据存放路径
path.logs: /data/logs #日志存放路径
bootstrap.memory_lock: true #开启内存锁定
network.host: 192.168.0.01 #节点IP
http.port: 9200 #对外暴露端口
discovery.seed_hosts: ["192.168.0.01:9300", "192.168.0.02:9300","192.168.0.03:9300","192.168.0.04:9300","192.168.0.05:9300"] #集群内部可发现节点及IP
cluster.initial_master_nodes: ["192.168.0.01:9300"]#初始化的master的节点

# 开启xpack认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

slave节点:

cluster.name: es #集群名称
node.name: node-02 #节点名称,1-9的节点建议命名为01-09,方便查看
path.data: /data/data #数据存放路径
path.logs: /data/logs #日志存放路径
bootstrap.memory_lock: true #开启内存锁定
network.host: 192.168.0.02 #节点IP
http.port: 9200 #对外暴露端口
discovery.seed_hosts: ["192.168.0.01:9300", "192.168.0.02:9300","192.168.0.03:9300","192.168.0.04:9300","192.168.0.05:9300"] #集群内部可发现节点及IP
cluster.initial_master_nodes: ["192.168.0.01:9300"]#初始化的master的节点

# 开启xpack认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
十、指定内置jdk

进入 /data/elasticsearch/elasticsearch-7.8.1/bin

vim elasticsearch

在开头添加

export JAVA_HOME=/data/elasticsearch/elasticsearch-7.8.1/jdk/
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/data/elasticsearch/elasticsearch-7.8.1/jdk/bin/java"
else
    JAVA=`which java`
fi
十一、添加分词器

下载对应版本的分词器,解压,然后按文件夹规整,放到 /data/elasticsearch/elasticsearch-7.8.1/plugins

本次安装使用以下三个分词器ik、pinyin、stconvert

十二、CA授权认证
1、机构授权

进入 /data/elasticsearch/elasticsearch-7.8.1/bin 目录下,执行

./elasticsearch-certutil ca

执行后会有如下询问,请输入elasticsearch.yml中的存储路径,文件名使用 elastic-stack-ca.p12

Please enter the desired output file [elastic-stack-ca.p12]:/data/keystore/elastic-stack-ca.p12

然后继续输入自己设定的==授权机构的密码==,该密码在日后集群扩容时非常有用,需要记住

2、生成证书

输入密码后,授权机构生成,然后生成授权证书

./elasticsearch-certutil cert --ca /data/keystore/elastic-stack-ca.p12

此过程中共有三次输入

  1. 输入==授权机构的密码==
  2. 输入CA证书绝对路径 :/data/keystore/elastic-certificates.p12
  3. 输入CA证书密码(为方便管理使用,同授权机构密码)

最终 /data/keystore 目录下生成以下两个文件

  • elastic-certificates.p12
  • elastic-stack-ca.p12
3、证书加密

将/data/keystore 目录下的elastic-certificates.p12elastic-stack-ca.p12放到 config 目录

然后执行下面的命令

./elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

密码为刚才输入的==授权机构的密码==

十三、部署其余节点

将配置好的 elasticsearch 分发到每个节点的相应位置,并且为每个节点做响应配置

特别注意,需要修改的地方有 节点名称,主机名等

  • 其余节点都需要再次执行证书加密操作
十四、启动

bin目录下执行 ./elasticsearch -d,即可启动,启动所有节点

十五、配置内置用户密码
./elasticsearch-setup-passwords interactive
用户名 作用
elastic 超级用户
kibana 用于负责Kibana连接Elasticsearch
logstash_system Logstash将监控信息存储在Elasticsearch中时使用
beats_system Beats在Elasticsearch中存储监视信息时使用
apm_system APM服务器在Elasticsearch中存储监视信息时使用
remote_monitoring_user Metricbeat用户在Elasticsearch中收集和存储监视信息时使用
十六、kibana
vim kibana.yml
server.port: 5601
server.host: "192.168.0.05" #本机IP
elasticsearch.hosts: ["http://192.168.0.01:9200","http://192.168.0.02:9200","http://192.168.0.03:9200","http://192.168.0.04:9200","http://192.168.0.05:9200"] #ES集群IP
elasticsearch.username: "elastic"
elasticsearch.password: "***"
i18n.locale: "zh-CN"
nohup ./kibana &

你可能感兴趣的:(Elasticsearch,elasticsearch,大数据,搜索引擎)