1.环境使用的是window10专业版安装的 Docker Desktop在wsl2子系统用的是CentOs7.x
2.doris2.0.4的fe和be镜像构建
下载https://doris.apache.org/download/最新的二进制包解压
2.2 fe2.0.4镜像构建脚本
...
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/"
PATH="/opt/apache-doris/fe/bin:$PATH"
# 下载软件至镜像内,可根据需要替换
COPY ./resource/fe /opt/fe
RUN apt-get update &&
apt-get install -y default-mysql-client &&
apt-get clean &&
mkdir /opt/apache-doris &&
cd /opt &&
mv ./fe/ /opt/apache-doris/
RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh
ENTRYPOINT ["/bin/bash","/opt/apache-doris/fe/bin/init_fe.sh"]
...
resource下放的是2.0.4源码包中的fe文件夹
且在fe的bin目录中放入了:
2.3 be2.0.4镜像构建
'''
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/"
PATH="/opt/apache-doris/be/bin:$PATH"
# 下载软件至镜像内,可根据需要替换
COPY ./resource/be /opt/be
RUN apt-get update &&
apt-get install -y default-mysql-client &&
apt-get clean &&
mkdir /opt/apache-doris &&
cd /opt &&
mv ./be/ /opt/apache-doris/
RUN chmod 755 /opt/apache-doris/be/bin/init_be.sh
ENTRYPOINT ["/bin/bash","/opt/apache-doris/be/bin/init_be.sh"]
'''
同fe一样在reource里放入:
be的bin下放入:
fe和be中的init脚本是从2.0.4的源码包中:
https://github.com/apache/doris/releases
拷贝到上面的构建文件中的
如果是在windows下直接打开复制过去的,会有让shell文件的格式有问题,镜像运行的时候报初始化脚本\r问题,所以需要在wsl进入centOs子系统中执行如下:
sed -i 's/\r$//' filename
将init_fe.sh/init_be.sh格式转为linux下的格式
3.启动脚本如下
...
docker network create --subnet=172.10.70.0/24 doris-network
docker network rm doris-network
docker run --privileged -itd --name=fe --env FE_SERVERS="fe1:172.10.70.2:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v D:\doris\fe\doris-meta:/opt/apache-doris/fe/doris-meta -v D:\doris\fe\log:/opt/apache-doris/fe/log -v D:\doris\fe\conf\fe.conf:/opt/apache-doris/fe/conf/fe.conf --network=doris-network --ip=172.10.70.2 apache-doris:2.0.4-fe
docker run --privileged -itd --name=be --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.3:9050" -p 8040:8040 -v D:\doris\be\storage:/opt/apache-doris/be/storage -v D:\doris\be\log:/opt/apache-doris/be/log -v D:\doris\be\conf\be.conf:/opt/apache-doris/be/conf/be.conf --network=doris-network --ip=172.10.70.3 apache-doris:2.0.4-be
...
3.1 fe挂载文件如下
3.2 be挂载文件如下
fe.conf和be.conf都是从容器中没有挂载启动起来,然后下载下来放到上面的挂载路径中的
3.3 fe启动日志
3.4 be启动日志
be日志一直是打印的是be自动注册fe失败
3.5 进入be容器启动be
进入be命令行也执行了:
sysctl -w vm.max_map_count=2000000
启动bex需要先将swapoff关闭
swapoff -a
/opt/apache-doris/be/bin/start_be.sh --daemon
3.6 进入fe容器手动注册be
进入fe命令行执行了:
sysctl -w vm.max_map_count=2000000
进入fe命令行手动注册be如下:
# 进入一台有mysql的服务器,端口9093,账号root,默认密码是空
mysql -h 172.10.70.2 -P9030 -uroot
# 注册be
ALTER SYSTEM ADD BACKEND "172.10.70.3:9050";
# 查看be Alive属性如果是true就ok了
show PROC '/backends';
+-----------+-------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
| BackendId | Host | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | TabletNum | DataUsedCapacity | TrashUsedCapcacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | RemoteUsedCapacity | Tag | ErrMsg | Version | Status | HeartbeatFailureCounter | NodeRole |
+-----------+-------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
| 10114 | 172.10.70.3 | 9050 | 9060 | 8040 | 8060 | 2024-02-28 01:10:51 | 2024-02-28 01:13:39 | true | false | 14 | 0.000 | 0.000 | 8.397 GB | 57.028 GB | 85.28 % | 85.28 % | 0.000 | {"location" : "default"} | | doris-2.0.4-rc06-003a815b63 | {"lastSuccessReportTabletsTime":"2024-02-28 01:13:03","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} | 0 | mix |
+-----------+-------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
4.doris后台
5.使用navicat客户端连接如下
使用的地址是127.0.0.1/localhost/wifi地址是可以连上的,但是使用docker的桥接内网地址172.10.70.2是连不上的,端口是9030
到此我这种方式是不是就已经将doris镜像构建和部署1fe和1be集群搞好了?
6.本地构建的镜像推送到阿里云镜像仓库如下
registry.cn-hangzhou.aliyuncs.com/bigfei/zlf:apache-doris-2.0.4-fe
registry.cn-hangzhou.aliyuncs.com/bigfei/zlf:apache-doris-2.0.4-be
我只是在构建doris2.0.4的fe和be镜像部署1fe和1be的集群遇到这个be注册不上的问题,之前根据官网的部署1fe和1be的docker命令使用的是 --net=host 网络模式 ip一开始是使用本机wifi地址192.168.40.60,fe启动报wifi那个ip:80有问题,后面将wifi地址换成127.0.0.1只有fe可以启动,be也是注册不上,然后又搞了一个桥接网络192.168.40.0/24,然后也是只有fe可以启动,be也是注册不上,最后,搞了一个172.10.70.0/24 桥接网路,也是只有fe可以启动,be还是注册不上,上面是我构建好的镜像,大佬,在看这个问题的时候可以直接使用,或者根据上面的步骤一步一步的搞,还有我感觉这个ip需要是一个固定的公网ip,所以在一台主机上使用docker方式部署集群由于本机网络环境复制就会有这种奇葩的问题,多台部署应该就没有这种问题吧,这个问题在线等大佬回复,非常感谢!