docker-compose部署zk+kafka+storm集群的实现

docker-compose部署zk+kafka+storm集群的实现,第1张

docker-compose部署zk+kafka+storm集群的实现

本文主要介绍docker-compose对zk+kafka+storm集群的部署,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

部署概述

172.22.12.20 172.22.12.21 172.22.12.22 172.22.12.23 172.22.12.24 zoo1:2181 zoo2:2182 zoo3:2183 zkui:9090(管理员/经理) Kafka1:9092 Kafka2:9092 Kafka3:9092 kafdrop:9000 influxdb:8086 grafana:3000(admin/chanhu) 风暴雨云1 风暴雨云2 风暴雨云3 portainer:9002(admin/chanhu@123) 风暴监督1 风暴监督2 风暴监督3 storm-ui:8080

docker安装

yumupdate-y yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yuminstalldocker-cedocker-ce-clicontainerd.io systemctlstartdocker

docker-compose安装

yuminstallepel-release yuminstall-ypython-pip pipinstall--upgradepip pipinstalldocker-compose

修改每个主机的主机文件

vim/etc/hosts 172.22.12.20datacloud0 172.22.12.21datacloud1 172.22.12.22datacloud2 172.22.12.23datacloud3 172.22.12.24datacloud4

动物园管理员集群

在20、21、22台机器上部署zk集群,分别编写docker-compose文件。

如果只有一个集群正常运行,该集群将会失败。

以其中一个为例:

zoo: image:zookeeper:3.4.14 restart:always hostname:zoo1 container_name:zoo1 ports: -2181:2181 -2888:2888 -3888:3888 volumes: -"./zoo/data:/data" -"./zoo/datalog:/datalog" environment: ZOO_MY_ID:1 ZOO_SERVERS:server.1=0.0.0.0:2888:3888server.2=172.22.12.21:2888:3888server.3=172.22.12.22:2888:3888

"./zoo/data:/data"是数据目录挂载,必须进行配置。

环境变量配置,ZOO_MY_ID三个分别为1、2、3,ZOO_SERVERS配置集群地址,其中当前机器为0.0.0.0。

kakfa集群

在20、21、22台机器上部署kafka集群,编写docker-compose文件(可以和zk的docker-compose文件一起编写)

以其中一个为例:

kafka: image:wurstmeister/kafka:2.12-2.2.2 restart:always hostname:kafka1 container_name:kafka1 ports: -"9092:9092" environment: KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://172.22.12.20:9092 KAFKA_ADVERTISED_HOST_NAME:172.22.12.20 KAFKA_ADVERTISED_PORT:9092 KAFKA_ZOOKEEPER_CONNECT:172.22.12.20:2181,172.22.12.21:2181,172.22.12.22:2181 volumes: -./kafka/logs:/kafka

没有太多要注意的。KAFKA_ZOOKEEPER_CONNECT已经正确配置了zk集群地址,并且通告的相关配置是当前容器。

influxdb

influxdb: image:influxdb:1.7 restart:always container_name:influxdb ports: -"2003:2003" -"8086:8086" -"8089:8089" -"8091:8091" volumes: -"./influxdb:/var/lib/influxdb" environment: -INFLUXDB_GRAPHITE_ENABLED=true

"./influxdb:/var/lib/influxdb"是数据目录挂载,必须进行配置。INFLUXDB_GRAPHITE_ENABLED启动石墨功能。

Influxdb简单 *** 作:

  • dockerexec-it流入
  • 显示数据库
  • 创建数据库XX
  • 使用XX
  • 插入cpu,主机=serverA,区域=us_west值=0.64
  • 从“cpu”中选择“主机”、“区域”、“值”
  • docker-compose相关 *** 作

    docker-compose[-f<文件名>]up-d docker-compose[-f<文件名>]down

    zkui/kafdrop/grafana

    在23台机器上,部署这三个web界面:

    zkui: image:maauso/zkui restart:always container_name:zkui ports: -9090:9090 environment: ZKLIST:172.22.12.20:2181,172.22.12.21:2181,172.22.12.22:2181 kafdrop: image:obsidiandynamics/kafdrop:latest restart:always container_name:kafdrop ports: -"9000:9000" environment: KAFKA_BROKERCONNECT:172.22.12.20:9092,172.22.12.20:9092,172.22.12.20:9092 grafana: image:grafana/grafana:master restart:always container_name:grafana ports: -"3000:3000" volumes: -"./grafana:/var/lib/grafana"

    因为是网页,只要配置好相关的服务地址就可以启动了。

    其中grafana需要配置目录挂载,主要是记录自定义数据源和面板配置(此处需要chmod-R777grafana/

    风暴簇

    风暴集群由光轮、主管和ui组成。

    Nimbus是主节点,supervisor是从节点。前者向zookeeper发送任务,后者从zookeeper获取任务。是一个网页。

    20、21、22机器分别配有三个nimbus节点和三个supervisor节点,建议单独建立docker-compose脚本文件,启动zookeeper后执行。

    docker-compose脚本大致如下:

    nimbus: image:storm:2.2.0 container_name:nimbus1 command:stormnimbus restart:always hostname:nimbus1 ports: -6627:6627 volumes: -"./storm.yaml:/conf/storm.yaml" -"./nimbus/data:/data" -"./nimbus/logs:/logs" supervisor: image:storm:2.2.0 container_name:supervisor1 command:stormsupervisor hostname:supervisor1 depends_on: -nimbus links: -nimbus:nimbus restart:always volumes: -"./storm.yaml:/conf/storm.yaml" -"./supervisor/data:/data" -"./supervisor/logs:/logs"

    Nimbus,supervisor,ui都用同一个风暴图像,只是启动参数时命令不同。

    在这里指定nimbus和supervisor的主机名,因为默认情况下,他们注册zookeeper时的主机是docker容器随机生成的uuid。

    如果nimbus和supervisor重新启动,它们的容器uuid也会被重置,这与zookeeper中已经保存的uuid冲突并导致错误。

    线上方案如下:1。停止风暴集群后,删除zookeeper上的风暴节点,重启zookeeper+风暴集群;2.为风暴集群单独建立一个无状态的动物园管理员。

    这里采用的方案是nimbus和supervisor注册时指定主机,重启时不会改变。

    启动时,需要指定一些环境变量,这些变量由本地配置文件映射。storm.yaml的配置如下:

    storm.zookeeper.servers: -"172.22.12.20" -"172.22.12.21" -"172.22.12.22" nimbus.seeds: -"nimbus1" -"nimbus2" -"nimbus3" storm.log.dir:"/logs" storm.local.dir:"/data" storm.cluster.mode:distributed

    Storm.zookeeper.servers是zookeeper的地址,默认端口是2181。Nimbus.seeds是Nimbus集群的地址。这里,采用docker-compose中的自定义主机名。

    Storm-ui可以作为单个实例启动。docker-compose的配置如下:

    storm-ui: image:storm:2.2.0 container_name:storm-ui command:stormui depends_on: -nimbus links: -nimbus:nimbus restart:always ports: -8080:8080 volumes: -"./storm.yaml:/conf/storm.yaml" -"./ui/data:/data" -"./ui/logs:/logs" extra_hosts: -"nimbus1:172.22.12.20" -"nimbus2:172.22.12.21" -"nimbus3:172.22.12.22" -"supervisor1:172.22.12.20" -"supervisor2:172.22.12.21" -"supervisor3:172.22.12.22"

    其中extra_hosts是容器启动后的自定义主机映射,这样在ui页面启动后注册的别名主机就可以对应真实的ip地址。

    部署docker容器时,经常需要将主机的配置文件映射到容器,这样容器重启后配置就不会重置。

    比如暴风配置:-”。/storm.yaml:/conf/storm.yaml"但映射后,如果本地没有正确格式化的storm.yaml,将无法启动。除了去官网下载安装包,获取其配置文件,还可以启动一个临时容器,将其配置文件复制到主机上。

    dockerrun-d-name光轮-tmp风暴:2.2.0风暴光轮

    dockerCPNimbus-tmp:/conf/storm.YAML本地文件夹路径/

    运河部署

    在部署canal之前,需要相应地配置它所连接的mysql:

    [mysqld] log-bin=mysql-bin#开启binlog binlog-format=ROW#选择ROW模式 server_id=1#配置MySQLreplaction需要定义,不要和canal的slaveId重复

    Canal的docker-compose配置如下:

    canal-server: image:canal/canal-server:v1.1.3 container_name:canal-server ports: -11111:11111 environment: -canal.instance.mysql.slaveId=12 -canal.auto.scan=false -canal.destinations=datacloud -canal.instance.master.address=10.23.16.32:3307 -canal.instance.dbUsername=root -canal.instance.dbPassword=chinaunicom@dengfy -canal.instance.filter.regex=river\\..* volumes: -./canal-server/logs/:/admin/canal-server/logs/

    其中,slaveId需要与mysql中的配置不同,destinations是用户自定义的实例名,canal.instance.filter.regex是要监控的数据库表过滤器。

    portainer部署

    Porter是docker容器的可视化管理工具,可以管理以上机器的docker容器,查看日志,修改启动脚本,停止容器等。

    首先,打开每台机器的dockerapi接口:

    1.vim/usr/lib/systemd/system/docker.service
    Add-hTCP://0.0.0:2375-hUNIX://var/run/docker.sock[//]2.重启docker服务systemctl守护进程-重新加载systemctl重启docker

    在其中一台机器上部署portainer容器:

    portainer: image:portainer/portainer:1.24.1 restart:always container_name:portainer_datacloud ports: -"8000:8000" -"9002:9000" volumes: -"./portainer/data:/data" -"/var/run/docker.sock:/var/run/docker.sock"

    "/var/run/docker.sock:/var/run/docker.sock"这种映射关系在单机模式下使用。我们使用远程api调用,所以可以省略。

    ip:9002打开后,注册用户登录,设置>:端点>添加端点>选择docker模式。

    端点URL填充目标ip:2375,公有ip添加目标IP。提交后,您可以看到它的所有容器信息。

    关于docker-compose部署zk+kafka+stormcluster的这篇文章到此为止。有关Docker-Compose部署集群的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774264.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存