本文主要介绍docker-compose对zk+kafka+storm集群的部署,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
部署概述
docker安装
docker-compose安装
修改每个主机的主机文件
动物园管理员集群
在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:/var/lib/influxdb"是数据目录挂载,必须进行配置。INFLUXDB_GRAPHITE_ENABLED启动石墨功能。
Influxdb简单 *** 作:
docker-compose相关 *** 作
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是zookeeper的地址,默认端口是2181。Nimbus.seeds是Nimbus集群的地址。这里,采用docker-compose中的自定义主机名。
Storm-ui可以作为单个实例启动。docker-compose的配置如下:
其中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部署集群的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)