前言
本文以elasticsearch8.6.2为例详述linux集群离线部署步骤,以 官网部署教程为基础,针对部署过程中可能的疑问作说明。
因为项目安全等的原因,很多时候我们要部署的目标机器是不能访问互联网的。本文是个人离线部署过程记录,希望也能帮助到有同样需要的同学。
版本选择
elasticsearch版本的更新迭代很快,8.x相较7.x , 6.x不仅性能有了大的提升,安全成为必要选项,还增加了许多新的功能。如果纯粹是新项目考虑使用elasticsearch,建议直接考虑8.x版本。
本文选择了当前最新的稳定版本8.6.2,后期会再出一个8.6.2版本对于常用功能的支持和限制的评估清单,有需要的朋友可以关注下
环境准备
elasticsearch 8.6.2有内置的jdk,使用内置自带jdk即可,elasticsearch集群无特别依赖软件,我部署的linux版本CentOS Linux release 7.3.1611 (Core) 。1
开发环境资源有限,所以在一台服务器部署伪集群,避免冲突设置为不同端口。有资源的情况下可以部署到不同的多台机器,http端口默认9200,tcp端口默认9300
ip | 端口 | 节点名称 |
---|---|---|
192.168.56.100 | http:9201 tcp:9301 | node-1 |
192.168.56.100 | http:9202 tcp:9302 | node-2 |
192.168.56.100 | http:9203 tcp:9303 | node-3 |
集群部署
下载解压
下载地址
# 上传服务器 rz # 解压 tar -xzf elasticsearch-8.6.2-linux-x86_64.tar.gz
run
elasticsearch不能以root账号启动,所以需要先创建非root账号,并赋权
# 创建新用户es useradd -m -s /bin/bash es # 设置密码 passwd xxx # 赋权,这里赋予了dwrx所有权限,如果有限制可以降低权限 chmod -R 777 elasticsearch-8.6.2 # 进入安装目录 cd elasticsearch-8.6.2/ # 启动,退出Ctrl+z ./bin/elasticsearch
elasticsearch8.x系列默认需要密码验证和https,查看启动日志可以看到elasticsearch自动为超级管理员 elastic 生成了密码,还会生成cert认证文件到 elasticsearch-8.6.2/config/certs/目录。
这意味着该elasticsearch服务使用http协议连接时只能使用https,且需要账号/密码。比如上面说的elastic账号和自动生成的密码
The generated password for the elastic built-in superuser is:The enrollment token for Kibana instances, valid for the next 30 minutes: The hex-encoded SHA-256 fingerprint of the generated HTTPS CA DER-encoded certificate: You can complete the following actions at any time: Reset the password of the elastic built-in superuser with 'bin/elasticsearch-reset-password -u elastic'. Generate an enrollment token for Kibana instances with 'bin/elasticsearch-create-enrollment-token -s kibana'. Generate an enrollment token for Elasticsearch nodes with 'bin/elasticsearch-create-enrollment-token -s node'.
![在这里插入图片描述](https://img-blog.csdnimg.cn/79b4260aa85c428ea8386f845bf2b4da.png
现在我们可以通过如下方式验证启动状态,会提示输入密码,密码就是上述截图中的elastic对应的密码
curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic https://localhost:9200
返回结果
{ "name" : "localhost.localdomain", "cluster_name" : "elasticsearch", "cluster_uuid" : "qnuRTH8gSEaGAiIzc_KAzA", "version" : { "number" : "8.6.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "2d58d0f136141f03239816a4e360a8d17b6d8f29", "build_date" : "2023-02-13T09:35:20.314882762Z", "build_snapshot" : false, "lucene_version" : "9.4.2", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
实际使用情况我们肯定是自己会再生成密码,可以使用如下命令为elastic修改密码或创建新用户并给定密码
bin/elasticsearch-reset-password -u user1 -i
配置
重要配置elasticsearch.yml
path配置
默认es的日志和数据存储放在es的安装目录,这种在升级情况下很容易被删掉。所以官方推荐指定非安装目录的路径
path: data: /var/data/elasticsearch logs: /var/log/elasticsearch
设置集群名称
# 集群名称每个节点都必须配置成一样 cluster.name: my-cluster
设置节点名称
node.name: node-1
设置端口
transport.port: 9301 http.port: 9201
网络host
# 设置为所在主机ip network.host: 192.168.56.100
集群发现设置
默认es会扫描本机9300-9305的节点加入集群,如果部署在不同机器就必须设置.
这里设置本机的三个节点
discovery.seed_hosts: - 192.168.56.100:9301 - 192.168.56.100:9302 - 192.168.56.100:9303
候选主节点设置,开发、测试环境可以数据节点和master节点不分开。生产,特别是大型集群,官方推荐区分节点角色
# 注意默认有配这个这个配置,需要改到原配置下,或者注释已有配置 cluster.initial_master_nodes: - node-1 - node-2 - node-3
重要配置jvm.options
开发环境资源有限,修改使用的内存.可以视内存情况设定,生产一般建议是机器内存的一半,且不超过32G
cd elasticsearch-8.6.2/config -Xms1g -Xmx1g
部署集群
创建多个节点
# 创建集群目录 mkdir escluster8.6.2 # 把前面的elasticsearch-8.6.2目录复制到刚刚创建的集群目录,并改名node-1 mv elasticsearch-8.6.2 escluster8.6.2/node-1 cd escluster8.6.2 # 复制jar到当前目录,这里为了使用全新的节点 cp ../elasticsearch-8.6.2-linux-x86_64.tar.gz ./ # 解压 tar -xzf elasticsearch-8.6.2-linux-x86_64.tar.gz cp -r elasticsearch-8.6.2 node-2 mv elasticsearch-8.6.2 node-3 # 删除tar包 rm -rf elasticsearch-8.6.2-linux-x86_64.tar.gz
注意是使用es用户的情况下操作,如果使用的是root用户,请授权这些目录的所有者为上面步骤创建的新用户es
chown -R es escluster8.6.2
修改node-2和node-3的jvm.options配置文件,增加配置
-Xms1g -Xmx1g
修改node-2的配置文件elasticsearch.yml
http.host: 192.168.56.100 cluster.name: es8-cluster node.name: node-2 network.host: 192.168.56.100 http.port: 9202 transport.port: 9302
修改node-3的配置文件elasticsearch.yml
http.host: 192.168.56.100 cluster.name: es8-cluster node.name: node-3 network.host: 192.168.56.100 http.port: 9203 transport.port: 9303
获取新节点加入集群的token
# node-1节点的目录下执行 bin/elasticsearch-create-enrollment-token -s node
使用生成的token分别在node-2,node-3的bin目录下执行
elasticsearch --enrollment-token
会自动生成认证文件config/certs,并配置到elasticsearch.yml中。同时配置了discovery.seed_hosts,但是只配置了节点1,我们一般开发环境会让3个节点都即可以是master节点又是数据节点。所以这里可以改后重启
discovery.seed_hosts: - 192.168.56.100:9301 - 192.168.56.100:9302 - 192.168.56.100:9303 cluster.initial_master_nodes: - node-1 - node-2 - node-3
启动
这里说明下一般情况下的启动命令。
后台启动各个节点,每个节点都需要执行下面命令。注意切换到es账号,su es
./elasticsearch -d -p pid
停止
这里说明下一般情况下的停止命令。
ps -ef|grep elasticsearch kill -p pid
问题解决
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上
#修改文件 sudo vim /etc/sysctl.conf #添加参数 vm.max_map_count = 262144
重新加载生效
sysctl -p
kibana安装
因为8.x默认开启了https和密码认证,需要配置kibana和elasticsearch集群连接的认证文件等。建议使用token方式连接elasticsearch集群,更简单。
下载kibana
官网下载
上传到目标服务器,并解压
tar -xzvf kibana-8.6.2-linux-x86_64.tar.gz
授权目录所有者为es
chown -R es kibana-8.6.2
使用token方式连接elasticsearch集群
修改配置文件config/kibana.yml, host配置为kibana所在的服务器ip
server.host: "192.168.56.100"
生成token
# 任一elasticsearch集群执行,这里选择node-1 node-1/bin/elasticsearch-create-enrollment-token -s kibana
注意切换到es用户启动(kibana也不建议使用root账号启动)
bin/kibana --enrollment-token
启动成功日志的最后会打印出一个code,记录该code
浏览器访问http://192.168.56.100:5601
首先会提示输入一个类似激活码的,就把上面记录的code录入;然后会弹出登录界面,输入elastic超级管理员的账密即可登入
至此kibana已成功安装并连接elasticsearch集群
配置
使用token方式连接集群成功后也是会自动生成一些认证的文件,和添加相应的配置到kibana.yml中。查看kibana.yml可以看到连接到的节点可能只有一个,可以加入其他两个节点
cat config/kibana.yml # xpack.fleet.outputs:中的hosts同理配置 elasticsearch.hosts: ['https://192.168.56.100:9201','https://192.168.56.100:9202', 'https://192.168.56.100:9203']
查看命令 cat /etc/redhat-release) ↩︎
猜你喜欢
- 10小时前iptables使用
- 10小时前【论文阅读】Deep Graph Contrastive Representation Learning
- 10小时前[Flink] Flink On Yarn(yarn-session.sh)启动错误
- 10小时前基于 Eureka 的 Ribbon 负载均衡实现原理【SpringCloud 源码分析】
- 10小时前TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine
- 10小时前Kafka系列 - Kafka一篇入门
- 10小时前Java 栈和队列的交互实现
- 5小时前自然景观资料(自然景观资源有哪些)
- 3小时前鸿蒙系统什么时候能用的简单介绍
- 1小时前沈阳辉山乳业(沈阳辉山乳业是国企吗)
网友评论
- 搜索
- 最新文章
- 热门文章