本次集群搭建基于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 |
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
但保存后,并不能立即生效,使之生效有两种方法
systemctl daemon-reexec
切换至 elastic用户,并查看磁盘挂载点
su elastic
df -h
找到一个磁盘空间最大的挂载点,新建 elasticsearch 数据存储目录
本次部署与技服沟通,将2T硬盘挂载在了 /data 下 ,直接在 /data 下新建目录
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
将安装包上传至/data/elasticsearch下,解压,然后删除压缩包
tar -zxvf elasticsearch-7.8.1.tar.gz
rm -rf elasticsearch-7.8.1.tar.gz
进入 /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
进入 /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
进入 /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
然后继续输入自己设定的==授权机构的密码==,该密码在日后集群扩容时非常有用,需要记住
输入密码后,授权机构生成,然后生成授权证书
./elasticsearch-certutil cert --ca /data/keystore/elastic-stack-ca.p12
此过程中共有三次输入
最终 /data/keystore 目录下生成以下两个文件
将/data/keystore 目录下的elastic-certificates.p12和elastic-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中收集和存储监视信息时使用 |
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 &