背景:
开发大数据平台,使用doris作为数据仓储,使用docker做集群部署,先进行开发环境搭建,环境为BE1;FE1,原来使用官方例子,但是官方例子是创建了一个bridge使用172.20.80.0/24通讯,这样正常来说,使用fe去操作doris是没有问题的,但是我们现在要使用flink进行相关的数据同步清洗,采用flink-cdc进行同步操作。
出现问题
当使用flink-cdc时,会请求fe,使用fe返回的注册的be地址,但是be一般是放在内网使用,无法在外网请求,flink-cdc反其道而行之,没办法,只能使用其他办法了,当你读完docker官方的网络配置时,你就会知道除了4种默认网络模式以外,还有两种特殊模式:其中的一种正是我们想要的模式,可以将容器完全独立出来。
开始解决
//检查是否可用
modprobe macvlan
lsmod | grep macvlan
//创建docker网络
//解释
docker network create -d macvlan --subnet=[网段] --gateway=[网关] -o parent=[网卡] macvlan
//实际例子
docker network create -d macvlan --subnet=192.168.157.1/24 --gateway=192.168.157.1 -o parent=enp2s0 doris_macvlan
//创建docker-compose
version: '3'
services:
docker-fe:
image: "apache/doris:1.2.1-fe-x86_64"
container_name: "doris-fe"
hostname: "fe"
environment:
- FE_SERVERS=fe1:192.168.157.200:9010
- FE_ID=1
ports:
- 8030:8030
- 9030:9030
- 9010:9010
volumes:
- ./fe/doris-meta:/opt/apache-doris/fe/doris-meta
- ./fe/conf:/opt/apache-doris/fe/conf
- ./fe/log:/opt/apache-doris/fe/log
networks:
doris_macvlan:
ipv4_address: 192.168.157.200
docker-be:
image: "apache/doris:1.2.1-be-x86_64"
container_name: "doris-be"
hostname: "be"
depends_on:
- docker-fe
environment:
- FE_SERVERS=fe1:192.168.157.200:9010
- BE_ADDR=192.168.157.201:9050
ports:
- 8040:8040
- 9050:9050
volumes:
- ./be/storage:/opt/apache-doris/be/storage
- ./be/conf:/opt/apache-doris/be/conf
- ./be/script:/docker-entrypoint-initdb.d
- ./be/log:/opt/apache-doris/be/log
networks:
doris_macvlan:
ipv4_address: 192.168.157.201
networks:
doris_macvlan:
external: true
name: doris_macvlan
注意:其中的networks部分,我们使用的doris_macvlan(也就是我们刚刚创建的网卡)
其中查看官方文档的时候,发现官方给的例子是docker run运行,我想使用docker-compose运行,所以找到了如下小工具:
//安装
npm install composerize -g
//使用
composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
//输出
version: '3.3'
services:
portainer:
ports:
- '9000:9000'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
image: portainer/portainer
flink-cdc参考:https://github.com/apache/doris-flink-connector
docker网络参考:https://docs.docker.com/network/