一、首先准备一台虚拟机;

二、然后在虚拟机里面安装Docker;

三、搭建Doris的Docker版本也是一堆的坑,今天就记录一下是怎么搭建成功的。

部署 Docker 集群 - Apache Doris

这是官方的搭建方法,永远没有成功的。最新的版本(doris:2.0.0_alpha-fe-x86_64是需要AVX2的,没有装不成功)

apache/doris:2.0.0_alpha-fe-x86_64

apache/doris:2.0.0_alpha-be-x86_64

是不可能成功的,因为还要看你的电脑是否支持AVX2指令集,怎么看自己的电脑是否支持AVX2指令集,通过命令cat /proc/cpuinfo |grep avx2如果什么都没有返回说明是不支持的。

所以需要换镜像,换一个be不需要AVX2的镜像,fe不区分有没有avx2的

apache/doris:1.2.2-be-x86_64-noavx2

apache/doris:1.2.2-fe-x86_64

下载镜像:

docker pull apache/doris:1.2.2-be-x86_64-noavx2

docker pull apache/doris:1.2.2-fe-x86_64

四、在安装doris之前在虚拟机执行这段:

sysctl -w vm.max_map_count=2000000

然后执行这段命令,安装doris的fe和be,由于是在本地,所以只安装一个fe,一个be:

docker run -itd --name=fe --env FE_SERVERS="fe1:{当前机器的内网IP}:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta -v /data/fe/log:/opt/apache-doris/fe/log --net=host apache/doris:1.2.2-fe-x86_64

docker run -itd --name=be --env FE_SERVERS="fe1:{当前机器的内网IP}:9010" --env BE_ADDR="{当前机器的内网IP}:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache/doris:1.2.2-be-x86_64-noavx2

官方提示:注意需要修改 ${当前机器的内网IP} 替换为当前机器的内网IP。

这个ip到底是什么呢,如果你在宿主机上使用了虚拟机,到底是用哪一个IP,可能很多人会搞不明白,如果宿主机上的本地ip和虚拟机上的ip是一样的,那么就用本地ip;如果不一样假设你宿主机的ip是:192.168.1.15,虚拟机的IP是192.168.1.56,那么一定要虚拟机的IP。这里是一个很大的坑。

配置好之后,开始执行上面的脚本,发现会报错

the self host 192.168.1.158 does not equal to the host in ROLE file 127.0.0.1. You need to set 'priority_networks' config in fe.conf to match the host 127.0.0.1

如果碰到这个错误,大家可能会想到是不是fe.conf里面要配置priority_networks,但是这个时候你的fe服务都没有起来,所以没地方可以修改。

怎么办呢?

其实是因为每次安装的时候都会在虚拟机的/data目录下面有两个文件一个be,一个fe。所以每次安装的时候都必须把/data里面的文件删除,这些文件有可能在/opt下面。只要删除,再去安装的时候就没问题了。

还有一个地方会容易出错,就是要先创建子网网桥,这个地方不用修改,直接执行就可以了。

docker network create --driver bridge --subnet=172.20.80.0/24 doris-network

如果要删除子网网桥用这种方法,如果创建子网网桥是在虚拟机里面执行的,删除也是在虚拟机里面删除:

#docker network inspect 子网名称(填写自己的)

#docker network prune

然后选择“Y”

正确的如下:

docker run -itd --name=fe --env FE_SERVERS="fe1:192.168.56.10:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta -v /data/fe/log:/opt/apache-doris/fe/log --net=host apache/doris:1.2.2-fe-x86_64

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.56.10:9010" --env BE_ADDR="192.168.56.10:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache/doris:1.2.2-be-x86_64-noavx2

在浏览器上访问:http://192.168.56.10:8030访问fe,http://192.168.56.10:8040访问be

默认的账号root,密码为空可以直接登录进去;

修改密码,在虚拟机输入,不需要进入到fe和be的容器里面

mysql -h 192.168.56.10 -P9030 -uroot

SET PASSWORD FOR 'root' = PASSWORD('xxxx');

问题来了:

如果虚拟机重启了,直接使用docker restart fe,docker restart be重启fe和be。如果发现be注册不到fe,那么重新安装,记得删除/data的文件,重新安装就可以连接上了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐