docker compose安装运行ELK之Elasticsearch集群

1.docker compose简介

docker compose是docker容器的管理工具,通过这个可以一键启动多个docker容器,也可对单个容器进行操作,对于集群项目是非常方便的。

2.安装docker和docker compose

2.1下载docker,并安装https://www.runoob.com/docker/centos-docker-install.html

2.2 由于docker compose并没有集成在docker中,所以还需要下载并安装docker compose:https://docs.docker.com/compose/install/

3. 整个ELK的目录结构(想要构建整个elk,请查看我的其他博客,我将elk拆分成了4个博客)

 在linux下创建了一个elk文件夹,elk的所有文件都放在了里面

4. 编辑docker-compose.yml配置文件

version: '3'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0 #镜像名
    container_name: es-01 #容器名
    environment: #指定变量,相当于是直接在启动命令行上指定参数,具体能指定哪些参数要看该镜像支持哪些参数
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #指定es的内存大小
    ulimits:  #生产环境需要配置的系统配置
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes: #挂载,格式为 本地卷:docker容器中卷       
      - /usr/local/workspace/elk/elasticsearch/data/es01:/usr/share/elasticsearch/data
      - /usr/local/workspace/elk/elasticsearch/config/es01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/local/workspace/elk/elasticsearch/logs/es01:/user/share/elasticsearch/logs
    ports:
      - 9200:9200 
      - 9300:9300 #es集群之间通信的端口,不可省略,否则,集群状态下会端口冲突
    networks:           #指定该容器使用的网络
      - esnet
es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es-02
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /usr/local/workspace/elk/elasticsearch/data/es02:/usr/share/elasticsearch/data
      - /usr/local/workspace/elk/elasticsearch/config/es02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/local/workspace/elk/elasticsearch/logs/es02:/user/share/elasticsearch/logs
    ports:
      - 9201:9200
      - 9301:9300
    networks:           #可以使用自建网络
      - esnet
networks:
  esnet:

注意点:由于这两个服务都是用的同一个外网esnet,所以es02 的ports 必须修改,否则端口冲突

5.编辑elasticsearch.yml配置文件

cluster.name: es-cluster #集群名
network.host: 0.0.0.0 
node.name: es-01
node.master: true
node.data: true
http.port: 9200
#可省略不写,默认3000,只要docker-compose.yml文件中有端口映射到该容器的3000就行
#transport.tcp.port: 9300

#集群最小的主节点数
discovery.zen.minimum_master_nodes: 1
 
#当最少几个节点回复之后,集群就正常工作
gateway.recover_after_nodes: 1
#head所需要使用的,否则head连接不了集群
http.cors.enabled: true 
http.cors.allow-origin: "*"

#集群初始化时指定的主节点
cluster.initial_master_nodes: ["es-01", "es-02"] 

#discovery.zen.ping.unicast.hosts属性已过时,用discovery.seed_hosts代替,且使用9300等集群通信端口
discovery.seed_hosts: ["192.168.20.101:9300","192.168.20.101:9301"]
#discovery.zen.ping.unicast.hosts: ["192.168.20.101:9300","192.168.20.101:9301"]

bootstrap.memory_lock: true
bootstrap.system_call_filter: false

#指定一下容器中logs的位置,以便docker-compose可以正确挂载logs地址
path.logs: /usr/share/elasticsearch/logs

es-01和es-02节点使用的配置基本一致,只需要修改node.name就行,http.port等都可以使用9200,docker-compose指定主机不同端口映射就行了

6. 启动docker compose

在有docker-compose.yml的目录下运行: docker-compose up,即可启动docker-compose up

7.遇到的问题

7.1 目录无权限

给存放data的目录赋予权限:chown 1000:1000 data

7.2  Failed to bind to [9300-9400]

将network.host设置为0.0.0.0,不能设置为192.168.xx.xx

7.3 报错max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [655360]

vi /etc/sysctl.conf
添加以下代码:
vm.max_map_count = 655360
保存后执行
sysctl -p
使得配置生效

至于这个数值设置多大,是看你用的elasticsearch版本的,可以去官网看一下

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Docker Compose安装ELKElasticsearch, Logstash, Kibana),您可以按照以下步骤进行操作: 1. 首先,确保您已经安装DockerDocker Compose。如果尚未安装,请根据您的操作系统进行安装。 2. 创建一个新的目录,用于存储ELK配置文件。在此目录中创建一个名为`docker-compose.yml`的文件。 3. 打开`docker-compose.yml`文件,并添加以下内容: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data environment: - discovery.type=single-node logstash: image: docker.elastic.co/logstash/logstash:7.14.0 volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch kibana: image: docker.elastic.co/kibana/kibana:7.14.0 ports: - 5601:5601 depends_on: - elasticsearch volumes: esdata: ``` 4. 在同一目录中创建一个名为`logstash.conf`的文件,并添加Logstash的配置。以下是一个简单的示例配置,您可以根据需要进行修改: ``` input { file { path => "/path/to/your/logs/*.log" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` 5. 保存文件并关闭编辑器。 6. 在终端中,导航到存储ELK配置文件的目录,并运行以下命令启动ELK容器: ``` docker-compose up -d ``` 7. Docker Compose将下载并启动Elasticsearch、Logstash和Kibana容器。您可以使用浏览器访问`http://localhost:5601`来访问Kibana的Web界面。 现在您已经成功地使用Docker Compose安装ELK

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴中第一皇子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值