下载安装包
安装elasticsearch有很多种方法,比如裸机安装、通过docker安装、通过k8s pod安装、通过Helm安装。
本文提供了通过Helm安装elasticsearch集群的方案,该方案出自于es官方。做了点小改动,可以直接在k8s集群中运行。
helm repo add elastic https://helm.elastic.co
helm pull elastic/elasticsearch --version 7.17.3
修改helm 的value文件中的配置
clusterName: "es-cluster"
nodeGroup: "master"
masterService: ""
roles:
master: "true"
ingest: "true"
data: "true"
remote_cluster_client: "true"
ml: "true"
replicas: 3
minimumMasterNodes: 2
运行helm安装
helm install elasticsearch elasticsearch -n default
创建PV
如果集群中有3个基点,要另外增加两个PV,并改名字“es-cluster-master-es-cluster-master-0” 为 “es-cluster-master-es-cluster-master-1” 和 “es-cluster-master-es-cluster-master-2”
PV文件 模板如下 es-pv1.yaml:
apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: "es-cluster-master-es-cluster-master-0"
spec:
capacity:
storage: "100Gi"
accessModes:
- "ReadWriteOnce"
persistentVolumeReclaimPolicy: Recycle
hostPath:
path: /data/db/es-data
kubectl apply -f es-pv1.yaml
kubectl apply -f es-pv2.yaml
kubectl apply -f es-pv3.yaml
创建密码
可以查看values.yaml文件,中有说明使用secret方式创建密码。文章来源:https://www.toymoban.com/news/detail-766232.html
测试
curl -XGET --user http://172.16.xx.xx:9200/_cat/nodes
通过docker-compose方式:
master1,master2,master3的ip:
172.16.79.1,172.16.79.2,172.16.79.3文章来源地址https://www.toymoban.com/news/detail-766232.html
3 台机器的docker-compose文件:
master1
version: '3'
services:
es: # 服务名称
image: elasticsearch:7.3.0 # 使用的镜像
container_name: es01 # 容器名称
restart: always # 失败自动重启策略
environment:
- node.name=es01 # 节点名称,集群模式下每个节点名称唯一
- network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
- network.publish_host=172.16.79.1 # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
- discovery.seed_hosts=172.16.79.1,172.16.79.2,172.16.79.3 # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
- cluster.initial_master_nodes=es01 # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.name=es-cluster-prod # 集群名称,相同名称为一个集群, 三个es节点须一致
- bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
- node.master=true
- node.data=true
- http.port=9200
- transport.tcp.port=9300
- "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
ulimits: # 栈内存的上限
memlock:
soft: -1 # 不限制
hard: -1 # 不限制
volumes:
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
- ./data:/usr/share/elasticsearch/data # 存放数据的文件
- ./logs:/usr/share/elasticsearch/logs #存放日志文件
- ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书, 证书生成请自行查阅
ports:
- 9200:9200 # http端口,可以直接浏览器访问
- 9300:9300 # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
networks:
- elk
networks:
elk:
driver: bridge
```
##### master2
```bash
version: '3'
services:
es: # 服务名称
image: elasticsearch:7.3.0 # 使用的镜像
container_name: es01 # 容器名称
restart: always # 失败自动重启策略
environment:
- node.name=es01 # 节点名称,集群模式下每个节点名称唯一
- network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
- network.publish_host=172.16.79.2 # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
- discovery.seed_hosts=172.16.79.1,172.16.79.2,172.16.79.3 # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
- cluster.initial_master_nodes=es01 # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.name=es-cluster-prod # 集群名称,相同名称为一个集群, 三个es节点须一致
- bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
- node.master=true
- node.data=true
- http.port=9200
- transport.tcp.port=9300
- "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
ulimits: # 栈内存的上限
memlock:
soft: -1 # 不限制
hard: -1 # 不限制
volumes:
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
- ./data:/usr/share/elasticsearch/data # 存放数据的文件
- ./logs:/usr/share/elasticsearch/logs #存放日志文件
- ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书, 证书生成请自行查阅
ports:
- 9200:9200 # http端口,可以直接浏览器访问
- 9300:9300 # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
networks:
- elk
networks:
elk:
driver: bridge
```
##### master3
```bash
version: '3'
services:
es: # 服务名称
image: elasticsearch:7.3.0 # 使用的镜像
container_name: es01 # 容器名称
restart: always # 失败自动重启策略
environment:
- node.name=es01 # 节点名称,集群模式下每个节点名称唯一
- network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
- network.publish_host=172.16.79.3 # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
- discovery.seed_hosts=172.16.79.1,172.16.79.2,172.16.79.3 # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
- cluster.initial_master_nodes=es01 # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.name=es-cluster-prod # 集群名称,相同名称为一个集群, 三个es节点须一致
- bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
- node.master=true
- node.data=true
- http.port=9200
- transport.tcp.port=9300
- "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
ulimits: # 栈内存的上限
memlock:
soft: -1 # 不限制
hard: -1 # 不限制
volumes:
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
- ./data:/usr/share/elasticsearch/data # 存放数据的文件
- ./logs:/usr/share/elasticsearch/logs #存放日志文件
- ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书, 证书生成请自行查阅
ports:
- 9200:9200 # http端口,可以直接浏览器访问
- 9300:9300 # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
networks:
- elk
networks:
elk:
driver: bridge
```
### 启动容器
三台机器上执行,docker-compose up -d
到了这里,关于通过helm方式安装elasticsearch 7.17.3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!