## :-: ES集群的搭建(Linux)
**一、准备elasticsearch**
下载地址https://www.elastic.co/cn/downloads/elasticsearch
elasticsearch-7.5.0-linux-x86\_64.tar.gz
将解压出来的文件复制三份出来es1、es2、es3,启动三个节点搭建集群
![](https://img.kancloud.cn/bd/cd/bdcd52c6bf57c1b7c9d3af8ab09a36ab_946x413.png)**二、更新配置文件**
*****
依次打开三个elasticsearch中config目录下的下elasticsearch.yml配置文件
~~~
vim config/elasticsearch.yml
~~~
节点es1、2、3配置如下
```
#数据目录设置
path.data: /usr/bnz/es_cluster/es1_data
###日志目录设置
path.logs: /usr/bnz/es_cluster/es1_log
###本机的IP地址
network.host: 0.0.0.0
#
##本机的IP地址
#network.host: 0.0.0.0
##发布地址
network.publish_host: 127.0.0.1
##服务的端口号(在本地配置多个时,请注意修改为不一样的端口)
http.port: 9201
##服务发现端口
transport.tcp.port: 9301
##集群发现IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群选举设置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
```
#数据目录设置
path.data: /usr/bnz/es_cluster/es1_data
###日志目录设置
path.logs: /usr/bnz/es_cluster/es1_log
###本机的IP地址
network.host: 0.0.0.0
#
##本机的IP地址
#network.host: 0.0.0.0
##发布地址
network.publish_host: 127.0.0.1
##服务的端口号(在本地配置多个时,请注意修改为不一样的端口)
http.port: 9202
##服务发现端口
transport.tcp.port: 9302
##集群发现IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群选举设置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
```
#数据目录设置
path.data: /usr/bnz/es_cluster/es1_data
###日志目录设置
path.logs: /usr/bnz/es_cluster/es1_log
###本机的IP地址
network.host: 0.0.0.0
#
##本机的IP地址
#network.host: 0.0.0.0
##发布地址
network.publish_host: 127.0.0.1
##服务的端口号(在本地配置多个时,请注意修改为不一样的端口)
http.port: 9203
##服务发现端口
transport.tcp.port: 9303
##集群发现IP集合
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
##集群选举设置
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
##开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
```
平时用jdk8,但运行es7无法启动。在elasticsearch7以上的版本中会自带jdk.需要修改elasticsearch-env配置文件,就可以使用自带jdk版本,不影响其他java项目。
```
future versions of Elasticsearch will require Java 11;
your Java version from [d:\Program Files\java\jdk1.8.0_91\jre] does not meet this requirement
```
将如下内容
```
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
```
修改为
```
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
```
然后就可以启动了。最后又出现如下问题
~~~shell
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and
will likely be removed in a future release.
~~~
将jvm.options的如下内容
```
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
```
修改为
```
-XX:+UseG1GC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
```
**三、elasticsearch不能使用root启动问题解决**
es5之后的都不能使用添加启动参数或者修改配置文件等方法启动了,必须要创建用户
1、创建用户:elasticsearch
~~~
[root@iZbp1bb2egi7w0ueys548pZ bin]# adduser elasticsearch
~~~
2、创建用户密码,需要输入两次
~~~
[root@iZbp1bb2egi7w0ueys548pZ bin]# passwd elasticsearch
~~~
3、将对应的文件夹权限赋给该用户
~~~
[root@iZbp1bb2egi7w0ueys548pZ local]# chown -R elasticsearch /usr/bnz/es_cluster
~~~
4、切换至elasticsearch用户
~~~
[root@iZbp1bb2egi7w0ueys548pZ etc]# su elasticsearch
~~~
5、进入启动目录启动 使用后台启动方式:./elasticsearch -d
~~~
[elasticsearch@vmt10003 bin]$ ./elasticsearch -d
~~~
6、启动后测试
输入curl ip:9200,如果返回一个json数据说明启动成功
**四、启动集群**
依次启动三个elasticsearch节点 在/usr/bnz/es\_cluster/es1目录下执行
```
./bin/elasticsearch
```
依次打开
[http://ip:9201](http://ip:9201)
[http://ip:9202](http://ip:9202)
[http://ip:9203](http://ip:9203)
![](https://img.kancloud.cn/4c/ce/4ccea121f3fecfa49bf4bd6f86c7bfb8_920x529.png)
- 项目介绍
- 项目声明
- 项目简介
- 架构设计
- 项目亮点功能介绍
- 技术栈介绍
- 核心功能
- 运行环境
- 项目更新日志
- 文档更新日志
- F&Q
- 部署教程
- 环境准备
- JDK安装
- JDK1.8,17共存
- maven
- 分布式缓存Redis
- 单机版
- 集群
- 注册&配置中心alibaba/nacos
- 介绍
- Nacos安装
- Nacos配置中心
- Nacos注册发现
- Nacos生产部署方案
- 服务监控-BootAdmin
- 基本介绍
- 如何使用
- 整合Admin-Ui
- 客户端配置
- 链路追踪
- 基本介绍
- SkyWalking-1
- Skywalking-1
- 消息队列
- Kafka
- docker安装kafka
- Linux集群
- Maven私服
- nexus安装部署
- nexus使用介绍
- 全文搜索elasticsearch
- windows集群搭建
- docker安装es
- ElasticHD
- linux集群部署
- 统一日志解决方案
- 日志解决方案设计
- 介绍与相关资料
- ELK安装部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服务监控-Prometheus
- Prometheus安装配置
- Prometheus介绍
- grafana
- 持续集成部署CICD
- 自动化部署Jenkins
- 安装部署win
- 打包发布远程执行
- 安装部署linux
- jenkins+gitlab+docker容器化工程自动化部署
- Git
- CICD说明
- 阿里云效
- CentOS_MYSQL安装
- docker
- 安装
- Docker安装Nginx
- Docker部署启动springboot
- dockerCompose
- harbor
- Docker私有镜像仓库
- Portainer
- Docker远程连接设置
- 打包工程
- 必要启动模块
- 核心模块
- 登录认证
- 缓存功能
- 日志模块
- 分布式锁
- 消息队列
- 异常处理
- 系统接口
- 参数验证
- es检索
- 数据导出
- 系统设计
- 系统总体架构
- 扩展模块(可选)
- 限流熔断alibaba/sentinel
- 使用Sentinel实现gateway网关及服务接口限流
- Sentinel使用Nacos存储规则及同步
- 服务调用Feign
- Feign基本介绍
- 如何使用
- 负载均衡
- 请求超时
- 请求拦截器
- 分布式任务调度
- XXL-JOB
- 分布式事务
- TX-LCN
- Seata
- Seata原理解析
- 数据库分库分表
- swagger文档
- 分布式ID生成器解决方案
- 服务网关CloudGateway
- 基本介绍
- 使用网关
- 路由配置
- 全局过滤器
- 服务认证授权架构设计
- 认证服务流程
- 授权服务流程
- 系统幂等性设计与实践
- 分布式日志链路跟踪
- 实时搜索系统设计
- 应用性能
- 压力测试工具
- Apache JMeter介绍和安装
- ApacheJMeter使用
- JVM
- JVM性能调优
- 常见JVM内存错误及解决方案
- JVM 分析工具详解
- Spring Cloud性能调优
- Linux运维
- Linux 常用命令
- Linux开启端口