Windows系统下通过docker部署doris集群
在windows系统中通过docker部署doris集群以及遇到过的一些问题
参考官方文档:构建 Docker Image - Apache Doris部署,中间遇到了一些问题,记录一下详细的步骤。
Doris版本:1.1.5
1. 构建FE镜像
创建环境目录如下:
└── docker-build // 构建根目录
└── fe // FE 构建目录
├── dockerfile // dockerfile 脚本
└── resource // 资源目录
├── init_fe.sh // 启动及注册脚本
└── apache-doris-x.x.x-bin-fe.tar.gz // 二进制程序包
1. 下载官方二进制包至docker-build/fe/resource目录下
2. 在docker-build/fe/resource目录下创建init_fe.sh脚本,可复制init_fe.sh
3. 在docker-build/fe目录下创建Dockerfile文件
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
PATH="/opt/apache-doris/fe/bin:$PATH"
# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-fe-1.1.5-bin.tar.gz /opt/
RUN apt-get update && \
apt-get install -y default-mysql-client && \
apt-get clean && \
mkdir /opt/apache-doris && \
cd /opt && \
mv apache-doris-fe-1.1.5-bin /opt/apache-doris/fe
ADD ./resource/init_fe.sh /opt/apache-doris/fe/bin
RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh
ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]
4. 执行构建
docker build . -t apache-doris:1.1.5-fe
2. 构建BE镜像
创建环境目录如下:
└── docker-build // 构建根目录
└── be // BE 构建目录
├── dockerfile // dockerfile 脚本
└── resource // 资源目录
├── init_be.sh // 启动及注册脚本
└── apache-doris-x.x.x-bin-x86_64/arm-be.tar.gz // 二进制程序包
1. 下载官方二进制包至docker-build/be/resource目录下
2. 在docker-build/be/resource目录下创建init_be.sh脚本,可复制init_be.sh
注意:要将开头的 “#!/bin/env bash” 改为 “#!/bin/bash”
3. 在docker-build/be目录下创建Dockerfile文件:
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
PATH="/opt/apache-doris/be/bin:$PATH"
USER root
# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-be-1.1.5-bin-x86_64.tar.gz /opt/
RUN apt-get update && \
apt-get install -y default-mysql-client && \
apt-get clean && \
mkdir /opt/apache-doris && \
cd /opt && \
mv apache-doris-be-1.1.5-bin-x86_64 /opt/apache-doris/be
ADD ./resource/init_be.sh /opt/apache-doris/be/bin
RUN chmod 755 /opt/apache-doris/be/bin/init_be.sh
ENTRYPOINT ["/opt/apache-doris/be/bin/init_be.sh"]
4. 执行构建
docker build . -t apache-doris:1.1.5-be
以上,fe和be的镜像构建完毕,可以通过docker images命令查看:
3. 部署doris集群
使用一个fe节点和三个be节点
3.1 部署fe节点
docker run -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\docker-build\data\fe\doris-meta:/opt/apache-doris/fe/doris-meta -v D:\Doris\docker-build\data\fe\conf:/opt/apache-doris/fe/conf -v D:\Doris\docker-build\data\fe\log:/opt/apache-doris/fe/log --network=doris-network --ip=172.10.70.2 apache-doris:1.1.5-fe
注意将其中-v后的挂载目录换成你自己的
在浏览器中验证
3.2 部署be节点
docker run --privileged -itd --name=be1 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.3:9050" -p 8040:8040 -v D:\Doris\docker-build\data\be1\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be1\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be1\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.3 apache-doris:1.1.5-be
docker run --privileged -itd --name=be2 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.4:9050" -p 8041:8040 -v D:\Doris\docker-build\data\be2\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be2\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be2\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.4 apache-doris:1.1.5-be
docker run --privileged -itd --name=be3 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.5:9050" -p 8042:8040 -v D:\Doris\docker-build\data\be3\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be3\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be3\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.5 apache-doris:1.1.5-be
同样需要将挂载目录换成你自己的。
接下来分别进入每个be容器并启动
cd /opt/apache-doris/be/bin
start_be.sh --daemon
3.3 在fe中添加be节点
进入fe容器
登录mysql
mysql -h 127.0.0.1 -P9030 -uroot
添加be节点
ALTER SYSTEM ADD BACKEND "172.10.70.3:9050";
ALTER SYSTEM ADD BACKEND "172.10.70.4:9050";
ALTER SYSTEM ADD BACKEND "172.10.70.5:9050";
在浏览器的ui中验证
可以看到三个be节点均已被添加,且Alive为true。
--------------------------------------------------------------------------------------------------------------
踩过的坑
1. 启动be容器时报错:exec /opt/apache-doris/be/bin/init_be.sh: no such file or directory
直接从官网复制来的init_be.sh的第一行“#!/bin/env bash”需要改成“#!/bin/bash”
2. 修改上面那个问题后又报错:sysctl: permission denied on key "vm.max_map_count"
因为在init_be.sh中有一行 sysctl -w vm.max_map_count=2000000, 需要管理员权限,而docker创建容器时默认是没有管理员权限的,因此在docker run时要加上 --privileged
更多推荐
所有评论(0)