设置系统vm.max_map_count

临时解决办法(重启虚拟机会失效):

1.切换到root用户,执行命令:
sysctl -w vm.max_map_count=262144
2.查看结果:
sysctl -a|grep vm.max_map_count

永久解决办法

在/etc/sysctl.conf文件最后添加一行:vm.max_map_count=262144

设置文件夹权限

chmod -R 777 /data/es
image.png

docker-compose.yaml

  1. version: '3.1'
  2. services:
  3. es01: # 服务名称
  4. image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4 # 使用的镜像
  5. container_name: es01 # 容器名称
  6. restart: always # 失败自动重启策略
  7. environment:
  8. - node.name=es01 # 节点名称,集群模式下每个节点名称唯一
  9. # - network.publish_host={ip} # 用于集群内各机器间通信,其他机器访问本机器的es服务
  10. # - network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
  11. - discovery.seed_hosts=es02,es03 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  12. - cluster.name=ms-es-cluster # 集群名称,相同名称为一个集群
  13. - cluster.initial_master_nodes=es01,es02,es03 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master,可填ip
  14. - bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
  15. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置内存
  16. ulimits:
  17. memlock:
  18. soft: -1
  19. hard: -1
  20. volumes:
  21. # - ./elasticsearch/1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
  22. - ./elasticsearch/1/data:/usr/share/elasticsearch/data # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
  23. - ./elasticsearch/1/plugins:/usr/share/elasticsearch/plugins #插件目录
  24. - ./elasticsearch/1/logs:/usr/share/elasticsearch/logs #插日志目录
  25. ports:
  26. - 9200:9200 # http端口
  27. - 9300:9300 # es节点直接交互的端口,非http
  28. networks:
  29. - elastic
  30. es02: # 服务名称
  31. image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4 # 使用的镜像
  32. container_name: es02 # 容器名称
  33. restart: always # 失败自动重启策略
  34. environment:
  35. - node.name=es02 # 节点名称,集群模式下每个节点名称唯一
  36. # - network.publish_host={ip} # 用于集群内各机器间通信,其他机器访问本机器的es服务
  37. # - network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
  38. - discovery.seed_hosts=es01,es03 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  39. - cluster.name=ms-es-cluster # 集群名称,相同名称为一个集群
  40. - cluster.initial_master_nodes=es01,es02,es03 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master,可填ip
  41. - bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
  42. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置内存
  43. ulimits:
  44. memlock:
  45. soft: -1
  46. hard: -1
  47. volumes:
  48. # - ./elasticsearch/2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
  49. - ./elasticsearch/2/data:/usr/share/elasticsearch/data # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
  50. - ./elasticsearch/2/plugins:/usr/share/elasticsearch/plugins #插件目录
  51. - ./elasticsearch/2/logs:/usr/share/elasticsearch/logs #插日志目录
  52. networks:
  53. - elastic
  54. es03: # 服务名称
  55. image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4 # 使用的镜像
  56. container_name: es03 # 容器名称
  57. restart: always # 失败自动重启策略
  58. environment:
  59. - node.name=es03 # 节点名称,集群模式下每个节点名称唯一
  60. # - network.publish_host={ip} # 用于集群内各机器间通信,其他机器访问本机器的es服务
  61. # - network.host=0.0.0.0 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
  62. - discovery.seed_hosts=es01,es02 # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
  63. - cluster.name=ms-es-cluster # 集群名称,相同名称为一个集群
  64. - cluster.initial_master_nodes=es01,es02,es03 # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master,可填ip
  65. - bootstrap.memory_lock=true # 内存交换的选项,官网建议为true
  66. - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" # 设置内存
  67. ulimits:
  68. memlock:
  69. soft: -1
  70. hard: -1
  71. volumes:
  72. # - ./elasticsearch/3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
  73. - ./elasticsearch/3/data:/usr/share/elasticsearch/data # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
  74. - ./elasticsearch/3/plugins:/usr/share/elasticsearch/plugins #插件目录
  75. - ./elasticsearch/3/logs:/usr/share/elasticsearch/logs #插日志目录
  76. networks:
  77. - elastic
  78. networks:
  79. elastic:
  80. driver: bridge

访问验证

浏览器访问:IP:9200
image.png