Doris-Docker环境搭建
Doris-Docker环境搭建
安装环境介绍
- 服务器:腾讯云2核8G云服务器
- OS:centos8.2
- Docker:20.10.21
- Doris:1.1.4
- FE-Num:1
- BE-Num:3
- Mysql:8.0.26
需要注意的是,mysql8系列跟以前5系列配置过程略有不同
在初始化mysql之后需要在日志中找到mysql密码,具体参考mysql官方文档
参考链接:https://developer.aliyun.com/article/920530#slide-10
步骤
1. 安装Docker环境
- Docker 要求 CentOS 系统的内核版本高于
3.10
,首先查看系统内核版本是否满足
uname -r
- 使用
root
权限登录系统,确保 yum 包更新到最新
sudo yum update -y
- 假如安装过旧版本,先卸载旧版本
sudo yum remove docker docker-common docker-selinux docker-engine
- 安装需要的软件包,
yum-util
提供yum-config-manager
功能,另外两个是devicemapper
驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置
yum
源(加速yum下载速度)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 查看所有仓库中所有docker版本,并选择特定版本安装,一般可直接安装最新版
yum list docker-ce --showduplicates | sort -r
- 安装
docker
-
- 安装最新稳定版本
sudo yum install docker-ce -y #安装的是最新稳定版本,因为repo中默认只开启stable仓库
-
- 安装指定版本
sudo yum install <FQPN> -y
# 例如:
sudo yum install docker-ce-20.10.11.ce -y
- 启动并加入开机启动
sudo systemctl start docker #启动docker
sudo systemctl enable docker #加入开机自启动
- 查看Version,验证是否安装成功
docker -version
-
若出现Client和Server两部分内容,则证明安装成功(无需在意
Experimental
参数异常)此参数为实验特性是否开启
具体开启方法参考此链接(与本次议题无关):https://www.kancloud.cn/docker_practice/docker_practice/2002046
[root@master ~]# docker version
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.18.7
Git commit: baeda1f
Built: Tue Oct 25 18:02:19 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.7
Git commit: 3056208
Built: Tue Oct 25 18:00:24 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.9
GitCommit: 1c90a442489720eec95342e1789ee8a5e1b9536f
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
2. 容器创建及测试
在官网获取最新编译好的文件:https://doris.apache.org/zh-CN/download
- 解压BE/FE
# 解压be,fe同理
tar -zxvf apache-doris-be-1.1.4-bin-x86_64.tar.gz
- 拉取Doris编译镜像做测试(本地)
# 拉取
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
- 创建Doris-Docker的文件,包括元数据文件夹(本地)
mkdir -p /opt/docker/doris
- 将编译好的FE和BE拷贝至Docker文件群内(本地)
cp -r Doris-fe/ /opt/docker/doris/
cp -r Doris-be/ /opt/docker/doris/be-01
cp -r Doris-be/ /opt/docker/doris/be-02
cp -r Doris-be/ /opt/docker/doris/be-03
- 启动FE-Docker(本地)
docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe -v /opt/docker/doris/fe:/opt/doris/fe -v /opt/docker/doris/doris-meta:/opt/doris/doris-meta apache/incubator-doris:build-env-ldb-toolchain-latest
- 进入FE-Docker(本地)以及安装组件(FE-Docker)
# 进入fe-docker
docker exec -ti doris-fe /bin/bash
# 在FE-Docker中安装net-tools用于查看IP
yum install net-tools -y
- 修改FE配置(FE-Docker)
# 查看fe-docker的IPv4地址
ifconfig
# 修改配置文件
vim /opt/doris/fe/conf/fe.conf
# 取消priority_networks的注解,并根据Docker的网段进行配置
priority_networks = 172.17.0.0/16 #这里要根据你Docker的IP确定
- 切换Docker-JDK版本(FE-Docker)
# 切换Java版本为JDK1.8,该镜像默认为JDK11
alternatives --set java java-1.8.0-openjdk.x86_64
alternatives --set javac java-1.8.0-openjdk.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
# 校验是否切换版本成功
java -version
- 配置FE-Docker的环境变量(FE-Docker)
# 配置环境变量
vim /etc/profile.d/doris.sh
export DORIS_HOME=/opt/doris/fe/
export PATH=$PATH:$DORIS_HOME/bin
# 保存并source
source /etc/profile.d/doris.sh
- 启动Doris-FE(FE-Docker)
start_fe.sh --daemon
- 检查FE是否启动成功
- 检查是否启动成功,JPS命令下有没有
PaloFe
进程- FE 进程启动后,会首先加载元数据,根据 FE 角色的不同,在日志中会看到
transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER
。最终会看到thrift server started
日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。- 也可以通过如下连接查看是否启动成功:
http://fe_host:fe_http_port/api/bootstrap
如果返回:
{"status":"OK","msg":"Success"}
则表示启动成功,其余情况,则可能存在问题。- 外网环境访问
http://fe_host:fe_http_port
查看是否可以访问WebUI界面,登录账号默认为root/admin,密码为空,第一次登录WebUI界面会有较长时间加载时间ctrl
+D
退出docker注:如果在 fe.log 中查看不到启动失败的信息,也许在 fe.out 中可以看到。
- 安装MySQL客户端(本地)
wget -c http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
- 连接FE并修改密码(本地)
mysql -h FE-Docer的IP -P 9030 -uroot
SET PASSWORD FOR 'root' = PASSWORD('your_password');
# 也可以创建新用户
CREATE USER 'test' IDENTIFIED BY 'test_passwd';
- 后续链接时需要使用如下格式(本地)
mysql -h FE_HOST -P9030 -uusername -ppassword
- 添加BE节点注册信息(本地)
ALTER SYSTEM ADD BACKEND "host:port";
# 其中 host 为 BE 所在节点 ip;port 为 be/conf/be.conf 中的 heartbeat_service_port,默认9050。
- 启动BE-Docker(本地)
docker run -it -p 9061:9060 -d --name=doris-be-01 -v /opt/docker/doris/be-01:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
docker run -it -p 9062:9060 -d --name=doris-be-02 -v /opt/docker/doris/be-02:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
docker run -it -p 9063:9060 -d --name=doris-be-03 -v /opt/docker/doris/be-03:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
- 进入BE-Docker(本地)以及安装组件(BE-Docker)
# 进入be-docker,以01为例
docker exec -ti doris-be-01 /bin/bash
# 安装net-tools用于查看IP
yum install net-tools -y
- 修改BE配置(BE-Docker)
# 查看fe-docker的IPv4地址
ifconfig
# 修改配置文件
vim /opt/doris/be/conf/be.conf
# 取消priority_networks的注解,并根据Docker的网段进行配置
priority_networks = 172.17.0.0/16 #这里要根据你Docker的IP确定
- 配置BE-Docker的环境变量(BE-Docker)
# 配置环境变量
vim /etc/profile.d/doris.sh
export DORIS_HOME=/opt/doris/be/
export PATH=$PATH:$DORIS_HOME/bin
# 保存并source
source /etc/profile.d/doris.sh
- 启动Doris-BE(BE-Docker)
start_be.sh --daemon
- 检查BE是否启动成功
- BE 进程启动后,如果之前有数据,则可能有数分钟不等的数据索引加载时间。
- 如果是 BE 的第一次启动,或者该 BE 尚未加入任何集群,则 BE 日志会定期滚动
waiting to receive first heartbeat from frontend
字样。表示 BE 还未通过 FE 的心跳收到 Master 的地址,正在被动等待。这种错误日志,在 FE 中 ADD BACKEND 并发送心跳后,就会消失。如果在接到心跳后,又重复出现master client, get client from cache failed.host: , port: 0, code: 7
字样,说明 FE 成功连接了 BE,但 BE 无法主动连接 FE。可能需要检查 BE 到 FE 的 rpc_port 的连通性。- 如果 BE 已经被加入集群,日志中应该每隔 5 秒滚动来自 FE 的心跳日志:
get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx
,表示心跳正常。- 其次,日志中应该每隔 10 秒滚动
finish report task success. return code: 0
的字样,表示 BE 向 FE 的通信正常。- 同时,如果有数据查询,应该能看到不停滚动的日志,并且有
execute time is xxx
日志,表示 BE 启动成功,并且查询正常。- 也可以通过如下连接查看是否启动成功:
http://be_host:be_http_port/api/health
如果返回:
{"status": "OK","msg": "To Be Added"}
则表示启动成功,其余情况,则可能存在问题。
注:如果在 be.INFO 中查看不到启动失败的信息,也许在 be.out 中可以看到。
- 测试连通性(本地)
# 登录FE-MySQL
mysql -h FE_HOST -P9030 -uusername -ppassword
# 执行命令查看BE运行情况。如一切正常,isAlive 列应为 true。
SHOW PROC '/backends';
- 若连通性测试成功,则循环完成其他BE节点的部署即可