当前位置:   article > 正文

银河麒麟系统部署3节点es集群_麒麟v10系统安装es和kibana

麒麟v10系统安装es和kibana

部署前准备:

三台银河麒麟Server V10 SP3主机(虚拟机),2核4G

es节点主机IP
es-master192.168.131.101
es-node1192.168.131.102
es-node2192.168.131.103

虚拟机内部软件版本:

软件版本
docker19.03.15
docker-compose1.22.0
elasticsearch7.12.1
kibana7.12.1

集群部署

部署es-master

es-master节点是es的主节点,因为es的集群认证需要密钥,所以master节点需要先进行部署,生成密钥。 如果已经有了密钥,可以直接从第九步开始。 这里采用的是docker-compose的方式部署:

1. 创建一个网络(用于连接kibana)

docker network create es_net

2. 准备docker-compose.yml文件。

  1. version: '3'
  2. services:
  3. es-master:
  4. image: elasticsearch:7.12.1
  5. container_name: es-master
  6. environment:
  7. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" #es是java写的,可以进行jvm调优,生产环境可以调高这个参数,如4G
  8. ulimits:
  9. memlock:
  10. soft: -1
  11. hard: -1
  12. nofile:
  13. soft: 65536
  14. hard: 65536
  15. volumes:
  16. - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # 配置文件挂载
  17. - /data/elasticsearch/data:/usr/share/elasticsearch/data:rw # 数据挂载
  18. - /data/elasticsearch/log:/usr/share/elasticsearch/log:rw # 日志挂载
  19. - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins:rw # 插件挂载
  20. ports:
  21. - 9200:9200
  22. - 9300:9300
  23. networks:
  24. - es_net
  25. extra_hosts: # 设置容器 hosts
  26. - "es-master:192.168.131.101"
  27. - "es-node1:192.168.131.102"
  28. - "es-node2:192.168.131.103"
  29. networks:
  30. es_net:
  31. external: true

3. 创建挂载目录

  1. ## 创建es配置数据日志目录
  2. mkdir /data/elasticsearch/{config,data,log,plugins} -pv
  3. ## 创建kibana配置目录
  4. mkdir /data/kibana/config -pv
  5. ## 修改es目录权限,否则容器启动报错,es容器使用es用户启动,用户id=1000
  6. chown 1000:1000 /data/elasticsearch/* -R

4. 编辑 elasticsearch.yml配置文件

  1. # vim /data/elasticsearch/config/elasticsearch.yml
  2. cluster.name: test-es-cluster  #集群名称, es会自动发现在同一网段下的es,使用该属性可以区分同一网段下的多个es集群
  3. node.name: es-master
  4. node.master: true # 该节点是否有选主资格(es集群中的第一台es默认为主节点)
  5. node.data: true # 是否为数据节点
  6. network.bind_host: 0.0.0.0 #设置绑定ip,默认是0.0.0.0
  7. network.publish_host: 192.168.131.101 #设置其它节点和该节点交互的ip地址,必须是真实ip
  8. http.port: 9200
  9. transport.tcp.port: 9300
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"
  12. discovery.zen.ping.unicast.hosts: ["es-master:9300", "es-node1:9300", "es-node2:9300"] # 设置集群中节点的初始列表
  13. discovery.zen.minimum_master_nodes: 2 # 集群中的节点可以直到其他n个有master资格的节点,默认1
  14. discovery.zen.ping_timeout: 5s # 自动发现其他节点时,ping连接超时时间,默认3s
  15. bootstrap.memory_lock: true # 禁止es节点进行swap
  16. action.destructive_requires_name: true #禁止通过正则或_all进行index的删除
  17. cluster.initial_master_nodes: ["es-master"] #集群第一次启动时的候选master列表

5. 启动es-master服务

  1. # 进入docker-compose文件所属目录下
  2. docker-compose up -d
  3. # 启动后可以查看容器日志
  4. docker logs -f es-master

注: 启动时报错:bootstrap checks failed## max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]的解决方案

vim /etc/sysctl.conf

在行尾追加 vm.max_map_count=655360

然后执行 sysctl -p

参考文档: ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low_mischen520的博客-CSDN博客

访问 http://192.168.131.101:9200/ 可以看到节点启动信息

 

6. 编写kibana.yml配置文件

  1. # vim /data/kibana/config/kibana.yml
  2. server.name: kibana
  3. server.host: "0.0.0.0"
  4. # elasticsearch.hosts: "http://192.168.131.101:9200"
  5. xpack.monitoring.ui.container.elasticsearch.enabled: true

7. 运行kibana容器, 执行代码

  1. docker run -d \
  2. --name kibana \
  3. -v /data/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro \
  4. -e ELASTICSEARCH_HOSTS=http://es-master:9200 \
  5. --network=es_net \
  6. -p 5601:5601 \
  7. kibana:7.12.1

因为 kibana已经和es在同一个docker网络下, 所以可以直接使用容器名进行访问;

如果kibana和es不在同一个网络,可以打开kibana.yml的注释配置,

并删除 -e ELASTICSEARCH_HOSTS=http://es-master:9200 \

证书生成

8. 启动es_xpack认证, 生成证书

集群认证首先需要配置密钥,否则在给内置用户创建密钥时,会报错。 这里直接用master节点去生成证书,生成后直接传到其他节点即可

  1. docker exec -it es-master bash #进入容器
  2. /usr/share/elasticsearch/bin/elasticsearch-certutil ca
  3. /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  4. ## 两条命令均一路回车即可,不需要给秘钥再添加密码。
  5. ## 证书创建完成之后,默认在es的数据目录,这里统一cp 到宿主机目录中
  6. mv elastic-* /usr/share/elasticsearch/data/
  7. ## 退出容器
  8. exit
  9. ## 复制 /data/elasticsearch/data/ 下证书到 config 目录
  10. cd /data/elasticsearch/config/
  11. cp /data/elasticsearch/data/elastic-* ./
  12. chmod 644 elastic-*
  13. chown 1000:1000 elastic*

elastic-certificates.p12elastic-stack-ca.p12就是生成好的证书文件。

9. 将证书cp到其他节点上,注意提前创建好文件目录

前往192.168.131.102192.168.131.103, 执行如下命令

mkdir/data/elasticsearch/{config,data,log,plugins} -pv chown 1000:1000 /data/elasticsearch/* -R

然后回到 192.168.131.101 节点 执行如下命令 (也可以使用工具)

  1. scp /data/elasticsearch/config/elastic-* 192.168.131.102:/data/elasticsearch/config/
  2. scp /data/elasticsearch/config/elastic-* 192.168.131.103:/data/elasticsearch/config/

输入目标机的密码。(第一次执行请先输入yes接收密钥)

10. 修改docker-compose.yml 和elasticsearch.yml, 删除es容器,重新执行docker-compose。

        配置 elasticsearch.yml

  1. # vim /data/elasticsearch/config/elasticsearch.yml
  2. cluster.name: test-es-cluster  #集群名称, es会自动发现在同一网段下的es,使用该属性可以区分同一网段下的多个es集群
  3. node.name: es-master
  4. node.master: true # 该节点是否有选主资格(es集群中的第一台es默认为主节点)
  5. node.data: true # 是否为数据节点
  6. network.bind_host: 0.0.0.0 #设置绑定ip,默认是0.0.0.0
  7. network.publish_host: 192.168.131.101 #设置其它节点和该节点交互的ip地址,必须是真实ip
  8. http.port: 9200
  9. transport.tcp.port: 9300
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"
  12. discovery.zen.ping.unicast.hosts: ["es-master:9300", "es-node1:9300", "es-node2:9300"] # 设置集群中节点的初始列表
  13. discovery.zen.minimum_master_nodes: 2 # 集群中的节点可以直到其他n个有master资格的节点,默认1
  14. discovery.zen.ping_timeout: 5s # 自动发现其他节点时,ping连接超时时间,默认3s
  15. bootstrap.memory_lock: true # 禁止es节点进行swap
  16. action.destructive_requires_name: true #禁止通过正则或_all进行index的删除
  17. cluster.initial_master_nodes: ["es-master"] #集群第一次启动时的候选master列表
  18. xpack.security.enabled: true
  19. xpack.security.transport.ssl.enabled: true
  20. xpack.security.transport.ssl.verification_mode: certificate
  21. xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
  22. xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12

配置 docker-compose.yml

  1. version: '3'
  2. services:
  3. es-master:
  4. image: elasticsearch:7.12.1
  5. container_name: es-master
  6. environment:
  7. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" #es是java写的,可以进行jvm调优,生产环境可以调高这个参数,如4G
  8. ulimits:
  9. memlock:
  10. soft: -1
  11. hard: -1
  12. nofile:
  13. soft: 65536
  14. hard: 65536
  15. volumes:
  16. - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # 配置文件挂载
  17. - /data/elasticsearch/data:/usr/share/elasticsearch/data:rw # 数据挂载
  18. - /data/elasticsearch/log:/usr/share/elasticsearch/log:rw # 日志挂载
  19. - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins:rw # 插件挂载
  20. - /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12:ro # 证书挂载
  21. - /data/elasticsearch/config/elastic-stack-ca.p12:/usr/share/elasticsearch/config/elastic-stack-ca.p12:ro
  22. ports:
  23. - 9200:9200
  24. - 9300:9300
  25. networks:
  26. - es_net
  27. extra_hosts: # 设置容器 hosts
  28. - "es-master:192.168.131.101"
  29. - "es-node1:192.168.131.102"
  30. - "es-node2:192.168.131.103"
  31. networks:
  32. es_net:
  33. external: true

访问9200端口,出现密码提示,说明配置成功。

 

11. 配置es账户,并为内置账户设置密码

ES 中内置了几个管理其他集成组件的账号

即:apm_system, beats_system, elastic,kibana, logstash_system, remote_monitoring_user

使用之前,首先需要添加一下密码。这里我给所有的账户设置的密码都是123456

注意必须先开启认证,才能设置密码,否则第二条命令无法设置

  1. docker exec -it es-master bash
  2. /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

配置完成后,可以使用如下方式访问es服务

curl -XGET -u elastic 'localhost:9200/_xpack/security/user?pretty'

此时前端也可以使用 elastic 123456成功访问

12. 修改kibana配置文件,添加用户名和密码

  1. # vim /data/kibana/config/kibana.yml
  2. server.name: kibana
  3. server.host: "0.0.0.0"
  4. # elasticsearch.hosts: "http://192.168.131.101:9200"
  5. xpack.monitoring.ui.container.elasticsearch.enabled: true
  6. elasticsearch.username: "elastic"
  7. elasticsearch.password: "123456"

然后重启kibana容器:

 docker restart kibana

部署es-node1

部署其他节点的流程和部署es-master节点类似,因为我们已经创建好了目录,并且将证书传递过去,只需要编写好配置文件,直接通过docker-compose启动即可。且其他节点不需要配置kibana。下面只列出配置文件。

1. docker-compose.yml

  1. # vim /data/elasticsearch/config/elasticsearch.yml
  2. version: '3'
  3. services:
  4. es-node1:
  5. image: elasticsearch:7.12.1
  6. container_name: es-node1
  7. environment:
  8. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置Jvm内存大小
  9. ulimits:
  10. memlock:
  11. soft: -1
  12. hard: -1
  13. nofile:
  14. soft: 65536
  15. hard: 65536
  16. volumes:
  17. - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # 配置挂载
  18. - /data/elasticsearch/data:/usr/share/elasticsearch/data:rw # 数据挂载
  19. - /data/elasticsearch/log:/usr/share/elasticsearch/log:rw # 日志挂载
  20. - /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12:ro # 证书挂载
  21. - /data/elasticsearch/config/elastic-stack-ca.p12:/usr/share/elasticsearch/config/elastic-stack-ca.p12:ro
  22. ports:
  23. - 9200:9200
  24. - 9300:9300
  25. extra_hosts: # 设置容器 hosts
  26. - "es-master:192.168.131.101"
  27. - "es-node1:192.168.131.102"
  28. - "es-node2:192.168.131.103"

2. elasticsearch.yml

  1. cluster.name: test-es-cluster
  2. node.name: es-node1
  3. node.master: true
  4. node.data: true
  5. #network.host: 0.0.0.0
  6. network.bind_host: 0.0.0.0
  7. network.publish_host: 192.168.131.102
  8. http.port: 9200
  9. transport.tcp.port: 9300
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"
  12. discovery.zen.ping.unicast.hosts: ["es-master:9300", "es-node1:9300", "es-node2:9300"]
  13. discovery.zen.minimum_master_nodes: 2
  14. discovery.zen.ping_timeout: 5s
  15. bootstrap.memory_lock: true
  16. action.destructive_requires_name: true
  17. cluster.initial_master_nodes: ["es-master"]
  18. xpack.security.enabled: true
  19. xpack.security.transport.ssl.enabled: true
  20. xpack.security.transport.ssl.verification_mode: certificate
  21. xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
  22. xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12

启动容器

docker-compose up -d

访问http://192.168.131.102:9200/, 如果正确,应提示输入密码,且可以通过主节点配置的密码成功登录。

 

部署es-node2

1. docker-compose.yml

  1. # vim /data/elasticsearch/config/elasticsearch.yml
  2. version: '3'
  3. services:
  4. es-node2:
  5. image: elasticsearch:7.12.1
  6. container_name: es-node2
  7. environment:
  8. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置Jvm内存大小
  9. ulimits:
  10. memlock:
  11. soft: -1
  12. hard: -1
  13. nofile:
  14. soft: 65536
  15. hard: 65536
  16. volumes:
  17. - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # 配置挂载
  18. - /data/elasticsearch/data:/usr/share/elasticsearch/data:rw # 数据挂载
  19. - /data/elasticsearch/log:/usr/share/elasticsearch/log:rw # 日志挂载
  20. - /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12:ro # 证书挂载
  21. - /data/elasticsearch/config/elastic-stack-ca.p12:/usr/share/elasticsearch/config/elastic-stack-ca.p12:ro
  22. ports:
  23. - 9200:9200
  24. - 9300:9300
  25. extra_hosts: # 设置容器 hosts
  26. - "es-master:192.168.131.101"
  27. - "es-node1:192.168.131.102"
  28. - "es-node2:192.168.131.103"

2. elasticsearch.yml

  1. cluster.name: test-es-cluster
  2. node.name: es-node2
  3. node.master: true
  4. node.data: true
  5. #network.host: 0.0.0.0
  6. network.bind_host: 0.0.0.0
  7. network.publish_host: 192.168.131.103
  8. http.port: 9200
  9. transport.tcp.port: 9300
  10. http.cors.enabled: true
  11. http.cors.allow-origin: "*"
  12. discovery.zen.ping.unicast.hosts: ["es-master:9300", "es-node1:9300", "es-node2:9300"]
  13. discovery.zen.minimum_master_nodes: 2
  14. discovery.zen.ping_timeout: 5s
  15. bootstrap.memory_lock: true
  16. action.destructive_requires_name: true
  17. cluster.initial_master_nodes: ["es-master"]
  18. xpack.security.enabled: true
  19. xpack.security.transport.ssl.enabled: true
  20. xpack.security.transport.ssl.verification_mode: certificate
  21. xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
  22. xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12

启动容器

docker-compose up -d

访问http://192.168.131.103:9200/, 如果正确,应提示输入密码,且可以通过主节点配置的密码成功登录。

 

部署完成查看

查看集群状态 http://192.168.131.101:9200/_cluster/health?pretty

 

访问 http://192.168.131.101:9200/_cat/health?v 会打印一个简易图标

访问 http://192.168.131.101:9200/_cat/nodes 可以看到集群节点信息, 带 * 的为主节点

 

es集群搭建完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/166287
推荐阅读
相关标签
  

闽ICP备14008679号