环境准备:
3台centos7.9的服务器
vim /etc/sysctl.conf添加:vm.max_map_count=262144
sysctl -w vm.max_map_count=262144 即时生效
cat /proc/sys/vm/max_map_count 查看
#创建es配置目录
mkdir /home/es/config -p
#创建es数据目录
mkdir /home/es/data
#创建es插件目录
mkdir /home/es/plugins
#授权目录
chmod -R 777 /home/es
在/home/es/config创建elasticsearch.yml的配置文件
# ======================== Elasticsearch Configuration =========================
# 配置es的集群名称,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
cluster.name: es-cluster
# 节点名称
node.name: es-node-1
# 指定该节点是否有资格被选举成为node
node.master: true
# 指定初始主节点
cluster.initial_master_nodes: ["10.161.3.12:9300"]
# 指定该节点是否存储索引数据,默认为true
node.data: true
# 设置绑定的ip地址还有其他节点和该节点交换的ip地址,本机ip
network.host: 0.0.0.0
network.publish_host: 10.161.3.12
# 指定http端口
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["10.161.3.12:9300","10.161.3.13:9300","10.161.3.14:9300"]
# 如果要使用head,那么需要解决跨域问题,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
# ======================== Elasticsearch Configuration =========================
# 配置es的集群名称,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
cluster.name: es-cluster
# 节点名称
node.name: es-node-2
# 指定该节点是否有资格被选举成为node
node.master: true
# 指定初始主节点
cluster.initial_master_nodes: ["10.161.3.12:9300"]
# 指定该节点是否存储索引数据,默认为true
node.data: true
# 设置绑定的ip地址还有其他节点和该节点交换的ip地址,本机ip
network.host: 0.0.0.0
network.publish_host: 10.161.3.13
# 指定http端口
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["10.161.3.12:9300","10.161.3.13:9300","10.161.3.14:9300"]
# 如果要使用head,那么需要解决跨域问题,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
# ======================== Elasticsearch Configuration =========================
# 配置es的集群名称,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
cluster.name: es-cluster
# 节点名称
node.name: es-node-3
# 指定该节点是否有资格被选举成为node
node.master: true
# 指定初始主节点
cluster.initial_master_nodes: ["10.161.3.12:9300"]
# 指定该节点是否存储索引数据,默认为true
node.data: true
# 设置绑定的ip地址还有其他节点和该节点交换的ip地址,本机ip
network.host: 0.0.0.0
network.publish_host: 10.161.3.14
# 指定http端口
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["10.161.3.12:9300","10.161.3.13:9300","10.161.3.14:9300"]
# 如果要使用head,那么需要解决跨域问题,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
# es无法访问互联的的配置
ingest.geoip.downloader.enabled: false
分别启动容器:
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d \
--name es717 \
-v /home/es/data:/usr/share/elasticsearch/data \
-v /home/es/plugins:/usr/share/elasticsearch/plugins \
-v /home/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--network=host \
elasticsearch:7.17.4
查看集群健康状态
curl http://10.161.3.13:9200/_cat/health?v
查看集群的节点信息
curl http://10.161.3.13:9200/_cat/nodes?v
配置es集群的密码:
编辑每个节点的elasticsearch.yml
加入如下配置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.type: PKCS12
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
#xpack.security.transport.ssl.keystore.password: 一会儿生成 elastic-certificates.p12 设置的密码,没有不要这个配置
#xpack.security.transport.ssl.truststore.password: 一会儿生成 elastic-certificates.p12 设置的密码,没有不要这个配置
xpack.security.transport.ssl.truststore.type: PKCS12
xpack.security.audit.enabled: true
进入一台容器中
docker exec -it es717 /bin/bash
./bin/elasticsearch-certutil ca 一直回车
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 一直回车
会多出两个文件
cp elastic-certificates.p12 ./config
exit退出容器
docker cp es7.17.4:/usr/share/elasticsearch/elastic-certificates.p12 ./考出文件到config文件夹
增加读的权限chmod +r elastic-certificates.p12
把elastic-certificates.p12分别拷贝到3个主机的config目录下
删除3台容器
重新生成3台容器运行
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d \
> --name es717 \
> -v /home/es/data:/usr/share/elasticsearch/data \
> -v /home/es/plugins:/usr/share/elasticsearch/plugins \
> -v /home/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
> -v /home/es/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
> --network=host \
> elasticsearch:7.17.4
进入到一台容器执行:
docker exec -it es717 /bin/sh
./bin/elasticsearch-setup-passwords interactive
然后一一设置密码,一定要记住密码。
浏览器打开
http://10.161.3.12:9200/_cat/nodes?v输入账号密码查看es节点信息
安装kibana:
mkdir /home/kibana/ -p
vim /home/kibana/kibana.yml,如下配置:
server.name: kibana
server.host: "0.0.0.0"
# 可以填容器名加端口,也可以用宿主机ip和映射的端口
elasticsearch.hosts: ["http://10.161.3.12:9200","http://10.161.3.13:9200","http://10.161.3.14:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN
elasticsearch.username: "elastic"
elasticsearch.password: "*******"
server.port: 5601
server.publicBaseUrl: "http://10.161.3.14:560"
# es用xpack做认证证书必须加下面三个配置
# 注意:参数值至少32位,否则启动会报错提示
xpack.encryptedSavedObjects.encryptionKey: encryptedSavedObjects12345678909876543210
xpack.security.encryptionKey: encryptionKeysecurity12345678909876543210
xpack.reporting.encryptionKey: encryptionKeyreporting12345678909876543210
启动:
docker run -e XPACK_GRAPH_ENABLED=true -d \
-e TIMELION_ENABLED=true \
--name kbn717 \
-v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--network=host \
kibana:7.17.4
浏览器打开:http://10.161.3.14:5601
搭建完成
报错server.publicBaseUrl is missing and should be configured when running in a production environment. Some features may not behave correctly. See the documentation.文章来源:https://www.toymoban.com/news/detail-498511.html
在kibana.yml中添加配置:server.publicBaseUrl: "http://10.161.3.14:5601"文章来源地址https://www.toymoban.com/news/detail-498511.html
到了这里,关于docker部署Elasticsearch7.17集群和kibana的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!