赞
踩
elasticsearch 默认不允许root用户启动,所以需要创建es用户
- useradd elasticsearch
- passwd elasticsearch
- #解压es
- tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz
-
- #将文件夹赋予es用户权限
- sudo chown -R elasticsearch:elasticsearch /data/elasticsearch/elasticsearch-7.14.2/
elasticsearch.yml
- cluster.name: es-cluster
- #设置节点名称,集群内节点名称必须唯一。
- node.name: node1
- #表示该节点会不会作为主节点,true表示会;false表示不会
- node.master: true
- #当前节点是否用于存储数据,是:true、否:false
- node.data: true
- #索引数据存放的位置
- path.data: /usr/share/elasticsearch/data
- #日志文件存放的位置
- path.logs: /usr/share/elasticsearch/logs
- #需求锁住物理内存,是:true、否:false
- bootstrap.memory_lock: false
- #监听地址,用于访问该es
- network.host: 0.0.0.0
- #es对外提供的http端口,默认 9200
- http.port: 9200
- #TCP的默认监听端口,默认 9300
- transport.tcp.port: 9300
- #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
- discovery.zen.minimum_master_nodes: 1
- #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
- discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
- discovery.zen.fd.ping_timeout: 1m
- discovery.zen.fd.ping_retries: 5
- #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
- #cluster.initial_master_nodes: ["node1"]
- #是否支持跨域,是:true,在使用head插件时需要此配置
- http.cors.enabled: true
- #“*” 表示支持所有域名
- http.cors.allow-origin: "*"
-
-
-
- ##############
- cluster.name: es-cluster
- #设置节点名称,集群内节点名称必须唯一。
- node.name: node2
- #表示该节点会不会作为主节点,true表示会;false表示不会
- node.master: true
- #当前节点是否用于存储数据,是:true、否:false
- node.data: true
- #索引数据存放的位置
- path.data: /usr/share/elasticsearch/data
- #日志文件存放的位置
- path.logs: /usr/share/elasticsearch/logs
- #需求锁住物理内存,是:true、否:false
- bootstrap.memory_lock: false
- #监听地址,用于访问该es
- network.host: 0.0.0.0
- #es对外提供的http端口,默认 9200
- http.port: 9200
- #TCP的默认监听端口,默认 9300
- transport.tcp.port: 9300
- #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
- discovery.zen.minimum_master_nodes: 1
- #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
- discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
- discovery.zen.fd.ping_timeout: 1m
- discovery.zen.fd.ping_retries: 5
- #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
- #cluster.initial_master_nodes: ["node1"]
- #是否支持跨域,是:true,在使用head插件时需要此配置
- http.cors.enabled: true
- #“*” 表示支持所有域名
- http.cors.allow-origin: "*"

#前置环境(es启动需要最小内存4G,否则无法启动,OOM)
#通过修改机器进程虚拟内存可启动es
- vim /etc/sysctl.conf
- #fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高
- fs.file-max=655360
- #影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小
- vm.max_map_count = 262144
-
- #生效
- sysctl -p
新增配置,每个集群节点都需要设置。
- 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"
将会在config下生成elastic-certificates.p12文件,将此文件传到其他两个节点的config目录
注意文件权限
- bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
-
- chmod 644 /data/elasticsearch/config/elastic-certificates.p12
- #sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12
-
es 集群不启动,下面的添加密码操作执行不了。
在主节点上执行就行,数据会自动同步到其他节点
- #启动es,之后执行
- ./bin/elasticsearch-setup-passwords interactive
-
- @Override
- @Bean
- public RestHighLevelClient elasticsearchClient ()
- {
- final ClientConfiguration clientConfiguration =
- ClientConfiguration.builder()
- .connectedTo(esUrl)
- .withBasicAuth("elastic", "elastic")
- .build();
-
- return RestClients.create(clientConfiguration).rest();
- }
- sudo yum install docker
- sudo systemctl start docker
- sudo systemctl enable docker
- sudo docker info
- sudo docker pull elasticsearch:7.14.2
- #docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.2
mkdir -p /data/elasticsearch/data && mkdir -p /data/elasticsearch/config && mkdir -p /data/elasticsearch/logs && mkdir -p /data/elasticsearch/plugins
- cluster.name: es-cluster
- #设置节点名称,集群内节点名称必须唯一。
- node.name: node1
- #表示该节点会不会作为主节点,true表示会;false表示不会
- node.master: true
- #当前节点是否用于存储数据,是:true、否:false
- #node.data: true
- #索引数据存放的位置
- path.data: /usr/share/elasticsearch/data
- #日志文件存放的位置
- path.logs: /usr/share/elasticsearch/logs
- #需求锁住物理内存,是:true、否:false
- bootstrap.memory_lock: false
- #监听地址,用于访问该es
- network.host: 0.0.0.0
- #es对外提供的http端口,默认 9200
- http.port: 9200
- #TCP的默认监听端口,默认 9300
- transport.tcp.port: 9300
- #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
- discovery.zen.minimum_master_nodes: 1
- #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
- discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
- discovery.zen.fd.ping_timeout: 1m
- discovery.zen.fd.ping_retries: 5
- #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
- #cluster.initial_master_nodes: ["node1"]
- #是否支持跨域,是:true,在使用head插件时需要此配置
- http.cors.enabled: true
- #“*” 表示支持所有域名
- http.cors.allow-origin: "*"
- xpack.security.enabled: false
-
-
-
- ######################
- cluster.name: es-cluster
- #设置节点名称,集群内节点名称必须唯一。
- node.name: node2
- #表示该节点会不会作为主节点,true表示会;false表示不会
- node.master: true
- #当前节点是否用于存储数据,是:true、否:false
- node.data: true
- #索引数据存放的位置
- path.data: /usr/share/elasticsearch/data
- #日志文件存放的位置
- path.logs: /usr/share/elasticsearch/logs
- #需求锁住物理内存,是:true、否:false
- bootstrap.memory_lock: false
- #监听地址,用于访问该es
- network.host: 0.0.0.0
- #es对外提供的http端口,默认 9200
- http.port: 9200
- #TCP的默认监听端口,默认 9300
- transport.tcp.port: 9300
- #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
- discovery.zen.minimum_master_nodes: 1
- #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
- discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
- discovery.zen.fd.ping_timeout: 1m
- discovery.zen.fd.ping_retries: 5
- #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
- cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
- cluster.initial_master_nodes: ["node1"]
- #是否支持跨域,是:true,在使用head插件时需要此配置
- http.cors.enabled: true
- #“*” 表示支持所有域名
- http.cors.allow-origin: "*"
- xpack.security.enabled: false

- docker run -d --network=host --privileged=true \
- -e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
- -e TAKE_FILE_OWNERSHIP=true --name es \
- -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
- -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
- -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
- -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
- --restart unless-stopped elasticsearch:7.14.2
-
- #elasticsearch:7.14.2或者已下载好的镜像docker.elastic.co/elasticsearch/elasticsearch:7.14.2
-
-
- #参数解释
- -d:将容器以后台模式(detached mode)运行。
- --network=host:使用主机网络模式,容器与主机共享网络命名空间。
- --privileged=true:为容器提供特权访问,允许容器内部进行特权操作。
- -e ES_JAVA_OPTS="-Xms2g -Xmx2g":设置 Elasticsearch Java 虚拟机 (JVM) 的启动参数,其中 -Xms2g 是最小堆内存大小,-Xmx2g 是最大堆内存大小。
- -e TAKE_FILE_OWNERSHIP=true:指示 Elasticsearch 在启动时获取文件所有权。
- --name es:为容器指定一个名称为 "es"。
- -v:将主机上的 Elasticsearch 配置文件挂载到容器内部
- --restart unless-stopped:在容器退出时自动重启容器,除非手动停止容器。

新增配置,每个集群节点都需要设置。
- 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"
进入docker
docker exec -it id bash
生成证书
- bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
-
- chmod 644 /data/elasticsearch/config/elastic-certificates.p12
- #sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12
-
将证书同步到其他节点
- #复制证书到外链目录
- docker cp df3552171cf0:/usr/share/elasticsearch/config/elastic-certificates.p12 ./config/elastic-certificates.p12
-
- #scp到其他节点
- scp ./config/elastic-certificates.p12 user@ip:/dir
es 集群不启动,下面的添加密码操作执行不了。
需挂载证书
- docker run -d --network=host --privileged=true \
- -e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
- -e TAKE_FILE_OWNERSHIP=true --name es \
- -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
- -v /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
- -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
- -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
- -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
- --restart unless-stopped elasticsearch:7.14.2
在主节点上执行就行,数据会自动同步到其他节点
- #进入docker
-
- #设置密码
- ./bin/elasticsearch-setup-passwords interactive
-
curl -user elastic http://10.100.31.170:9200/_cluster/health
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。