前提工作准备
Linux 3台 16GB运行内存 8核 50GB磁盘
JDK17 环境配置
elasticsearch-8.17.2-linux-x86_64.tar.gz 安装包
2.集群规划
在 ES 集群中,不同节点可承担不同角色:
**主节点(Master Node)**:负责集群管理、节点选举、索引元数据管理。建议至少配置 3 个主节点以实现高可用性。
**数据节点(Data Node)**:负责存储数据、执行索引和查询操作。根据数据量和查询负载来规划数量和硬件规格。
**协调节点(Client/Coordinating Node)**:处理客户端请求,将请求分发到合适的节点,适合大规模并发查询的场景。
**专用机器学习或搜索优化节点**:如果需要扩展功能,可以考虑单独划分资源。建议根据实际业务负载规划不同角色的节点数量和硬件配置。
3.环境配置
vi /etc/security/limits.conf
添加
* soft nofile 65536
* hard nofile 65536
vi /etc/sysctl.conf
添加 vm.max_map_count = 262144
sysctl -p #刷新配置
4.安装配置
tar -zxvf elasticsearch-8.17.2-linux-x86_64.tar.gz
#创建es用户 es默认情况下不允许拥root用户运行
#创建es的data文件夹
#创建es的certs文件夹
#至此以上操作3台机器都是相同的操作
#以下操作用master机器生成证书配置
#配置证书
使用es用户签发证书
elasticsearch/bin/elasticsearch-certutil ca 默认回车
elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 默认回车
把生成的两个证书文件 elastic-certificates.p12 elastic-stack-ca.p12 放到之前的cert目录下
签发http证书
elasticsearch/bin/elasticsearch-certutil http 依次是: n y CA Path:这里是之前配置的certs文件夹下elastic-stack-ca.p12文件的路径
默认回车 默认时间5y n
根据提示输入3个节点的名称 node1 node2 node3
根据提示输入3个节点对应的ip
n 默认回车
到这里会生成elasticsearch-ssl-http.zip 证书文件 解压把里面的http.p12文件放到certs文件夹下此时(这里应该有三个文件elastic-certificates.p12 elastic-stack-ca.p12 http.p12)
#修改config/elasticsearch.yml文件
# 设置 ES 集群名称
cluster.name: es-study
# 设置集群中当前节点名称
node.name: node1
# 节点属性
node.roles: [master,data]
# 设置数据,日志文件路径
path.data: elasticsearch/data #之前配置的data文件目录地址
path.logs: elasticsearch/logs #elasticsearch安装目录下log文件地址
# 设置网络访问节点
# network和端口号一定要配置,如果怕安全问题,把host设置成访问此elasticsearch服务器的ip地址,就是设置成唯一访问。 可以配置成 network.host: 0.0.0.0
network.host: 192.168.118.129
# 设置网络访问端口
http.port: 9200
discovery.seed_hosts:
- 192.168.118.129
- 192.168.118.131
- 192.168.118.132
cluster.initial_master_nodes:
- node1
- node2
- node3
# 安全认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true # 注意第一个空格
keystore.path: /java/elasticsearch/elasticsearch-8.9.0/config/certs/http.p12
truststore.path: /java/elasticsearch/elasticsearch-8.9.0/config/certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: /java/elasticsearch/elasticsearch-8.9.0/config/certs/elastic-certificates.p12
truststore.path: /java/elasticsearch/elasticsearch-8.9.0/config/certs/elastic-certificates.p12
http.host: [_local_, _site_]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none
剩下的两台机器
1.先把刚才certs文件下证书 复制到对应机器的certs目录下
2.分别配置config/elasticsearch.yml文件
注意修改 node.name network.host两项配置
3台机器分别配置环境变量 ES_JAVA_HOME
依次给es用户授权 chown -R es:es /elasticsearch
#至此3台机器可以依次启动了
./elasticsearch
注意这里日志里会有默认生成用户名 和 密码 :
elastic 后面一堆密文就是 密码
#验证
访问master的ip:9200 输入上面的用户密码 即可看到
访问master的ip:9200/_cat/nodes 即可看到集群信息
*注意使用服务要连接es集群需要导入es的证书文件否则连接不上 连接要用https协议