Apache Doris 4.0.0 存算分离手动部署指南
Apache Doris 4.0.0 存算分离手动部署指南
一、准备工作
环境要求
- 3 台以上服务器(奇数台)
- 根据业务规模调整 CPU 和内存
- 除修改机器名外,其他命令需在所有服务器上执行
1. 修改机器名
# node1sudohostnamectl set-hostname doris-node1# node2sudohostnamectl set-hostname doris-node2# node3sudohostnamectl set-hostname doris-node32. 基础配置
# 检查时钟同步sudosystemctl status chronyd# 安装 lsofsudoyuminstall-ylsof# 关闭防火墙sudosystemctl disable firewalld.service# 禁用透明大页(THP)echo"echo madvise > /sys/kernel/mm/transparent_hugepage/enabled"|sudotee-a/etc/rc.local# 禁用大页sudosysctlvm.nr_hugepages=03. 修改/etc/sysctl.conf
vm.max_map_count = 2000000 net.ipv4.tcp_abort_on_overflow = 1 fs.file-max = 1000000立即生效:
sudosysctl-p4. 修改/etc/security/limits.conf
* soft nofile 1000000 * hard nofile 1000000 root soft nofile 1000000 root hard nofile 10000005. 安装 Java 17
sudoyuminstall-yjava-17-openjdk java-17-openjdk-develsudotee/etc/profile.d/doris_java.sh<<EOF export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=\$JAVA_HOME/bin:\$PATHEOFsource/etc/profile.d/doris_java.shsudosh-c'echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> /etc/environment'java-version6. 数据盘挂载
FE 节点(所有节点)
sudomkfs.xfs /dev/nvme1n1sudomkdir-p/data/doris-fesudomount/dev/nvme1n1 /data/doris-feecho'/dev/nvme1n1 /data/doris-fe xfs defaults 0 0'|sudotee-a/etc/fstabBE 节点(所有节点)
sudomkfs.xfs /dev/nvme2n1sudomkdir-p/data/doris-besudomount/dev/nvme2n1 /data/doris-beecho'/dev/nvme2n1 /data/doris-be xfs defaults 0 0'|sudotee-a/etc/fstabsudosystemctl daemon-reload7. 创建 doris 用户
sudogroupadddorissudouseradd-gdoris-M-s/sbin/nologin doris8. 设置目录权限
sudochown-Rdoris:doris /data/doris-fe /data/doris-besudochmod755/data/doris-fe /data/doris-be二、安装 Doris
1. 下载与解压
cd/optwgethttps://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-4.0.0-bin-x64.tar.gztar-zxvfapache-doris-4.0.0-bin-x64.tar.gzmvapache-doris-4.0.0-bin-x64 doris-4.0.0wgethttp://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.2-tools.tar.gztar-zxvfapache-doris-3.0.2-tools.tar.gzmvtools/fdb/pkgs doris-4.0.0/tools/fdb2. 安装 FoundationDB
mkdir/opt/foundationdb编辑/opt/doris-4.0.0/tools/fdb/fdb_vars.sh:
DATA_DIRS="/data/doris-fe/foundationdb"FDB_CLUSTER_IPS="172.16.10.110,172.16.10.111,172.16.10.112"FDB_HOME="/opt/foundationdb"FDB_CLUSTER_ID="fdbserver"FDB_CLUSTER_DESC="dorisfdb"MEMORY_LIMIT_GB=6CPU_CORES_LIMIT=2USER="doris"STORAGE_STATELESS_LOG_RATIO="1:1:1"STORAGE_PROCESSES_NUM_PER_SSD=2LOG_PROCESSES_NUM_PER_SSD=2MEMORY_STORAGE_GB=4MEMORY_STATELESS_GB=1MEMORY_LOG_GB=1部署 FDB 集群:
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh deploy设置权限:
sudochown-Rdoris:doris /opt/foundationdbsudochown-Rdoris:doris /data/doris-fe/foundationdbsudochmod-R750/opt/foundationdb创建 systemd 服务/etc/systemd/system/doris-fdb.service:
[Unit] Description=Doris FoundationDB Controller After=network.target [Service] User=doris Group=doris Type=forking WorkingDirectory=/opt/doris-4.0.0/tools/fdb ExecStart=/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh start ExecStop=/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh stop Restart=on-failure RestartSec=30s StartLimitInterval=60s StartLimitBurst=5 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target启动:
sudosystemctl daemon-reloadsudosystemctlenable--nowdoris-fdb3. 部署 Meta Service
编辑/opt/doris-4.0.0/ms/conf/doris_cloud.conf:
fdb_cluster = dorisfdb:fdbserver@172.16.10.110:4500,172.16.10.111:4500,172.16.10.112:4500创建服务/etc/systemd/system/doris-ms.service:
[Unit] Description=Doris Meta Service After=doris-fdb.service [Service] User=doris Group=doris Type=forking Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk" Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin" WorkingDirectory=/opt/doris-4.0.0/ms/ ExecStart=/opt/doris-4.0.0/ms/bin/start.sh --daemon ExecStop=/opt/doris-4.0.0/ms/bin/stop.sh Restart=on-failure RestartSec=30s StartLimitInterval=60s StartLimitBurst=5 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target启动并验证:
sudosystemctl daemon-reloadsudosystemctlenable--nowdoris-msps-p$(cat/opt/doris-4.0.0/ms/bin/doris_cloud.pid)ss-tulnp|grep50004. 部署 FE
编辑/opt/doris-4.0.0/fe/conf/fe.conf:
priority_networks = 172.16.10.0/24 deploy_mode = cloud cluster_id = 388628430 meta_service_endpoint = 172.16.10.110:5000,172.16.10.111:5000,172.16.10.112:5000 meta_dir = /data/doris-fe/doris-meta sys_log_dir = /data/doris-fe/log audit_log_dir = /data/doris-fe/log LOG_DIR = /data/doris-fe/log创建目录:
sudo-udorismkdir/data/doris-fe/doris-metasudo-udorismkdir/data/doris-fe/log创建服务/etc/systemd/system/doris-fe.service:
[Unit] Description=Doris FE After=doris-ms.service [Service] User=doris Group=doris Type=forking Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk" Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin" WorkingDirectory=/opt/doris-4.0.0/fe/ ExecStart=/opt/doris-4.0.0/fe/bin/start_fe.sh --daemon ExecStop=/opt/doris-4.0.0/fe/bin/stop_fe.sh Restart=on-failure RestartSec=30s StartLimitInterval=60s StartLimitBurst=5 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target启动 FE:
sudosystemctl daemon-reloadsudosystemctlenable--nowdoris-fe配置 FE
mysql-h172.16.10.110-P9030-urootSETPASSWORDFOR'root'=PASSWORD('your_password');ALTERSYSTEMADDFOLLOWER"172.16.10.111:9010";ALTERSYSTEMADDFOLLOWER"172.16.10.112:9010";SHOWFRONTENDS;5. 部署 BE
编辑/opt/doris-4.0.0/be/conf/be.conf:
priority_networks = 172.16.10.0/24 deploy_mode = cloud meta_service_endpoint = 172.16.10.110:5000,172.16.10.111:5000,172.16.10.112:5000 sys_log_dir = /data/doris-be/log storage_root_path = /data/doris-be/storage,medium:SSD file_cache_path = [{"path":"/data/doris-be/file_cache","total_size":858993459200}] mem_limit = 48G storage_page_cache_limit = 25% row_cache_mem_limit = 16% inverted_index_searcher_cache_limit = 12% enable_storage_policy = true cloud_unique_id = doris-node1 # 每个节点不同:doris-node1/2/3 disable_storage_medium_check = true创建目录:
sudo-udorismkdir/data/doris-be/logsudo-udorismkdir/data/doris-be/storagesudo-udorismkdir/data/doris-be/file_cache创建服务/etc/systemd/system/doris-be.service:
[Unit] Description=Doris BE After=network.target [Service] User=doris Group=doris Type=forking Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk" Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin" WorkingDirectory=/opt/doris-4.0.0/be/ ExecStart=/opt/doris-4.0.0/be/bin/start_be.sh --daemon ExecStop=/opt/doris-4.0.0/be/bin/stop_be.sh Restart=on-failure RestartSec=30s StartLimitInterval=60s StartLimitBurst=5 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target启动 BE:
sudosystemctl daemon-reloadsudosystemctlenable--nowdoris-be注册 BE 节点:
ALTERSYSTEMADDBACKEND"172.16.10.110:9050";ALTERSYSTEMADDBACKEND"172.16.10.111:9050";ALTERSYSTEMADDBACKEND"172.16.10.112:9050";SHOWBACKENDS;三、运维调试
检查 FoundationDB
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh fdbcli--exec"status details"查看 Meta Service 日志
journalctl-udoris-ms-n50--no-pager清理 FDB(元数据冲突时重建)
sudo-udoris /opt/doris-4.0.0/tools/fdb/fdb_ctl.sh cleanBE 优雅下线
ALTERSYSTEM DECOMMISSION BACKEND"172.16.10.112:9050";-- 等待 SystemDecommissioned = true, TabletNum = 0ALTERSYSTEMDROPBACKEND"172.16.10.112:9050";增加 BE 节点
ALTERSYSTEMADDBACKEND"172.16.10.112:9050";四、注意事项与建议
- 版本稳定性:4.0.0 版本存在视图关联查询报错、元数据差异等问题,建议使用更新的稳定版本。
- 高可用:建议部署 Nginx 代理 FE 的 9030 端口,避免主 FE 节点宕机后客户端无法访问。程序连接可配置三个 FE 地址。
以上为完整的 Apache Doris 4.0.0 存算分离手动部署指南。
