以下是根据您提供的文档整理而成的部署文章,已替换 IP 地址为 172.16.10.110、172.16.10.111、172.16.10.112,并优化了结构和可读性。
Apache Doris 4.0.0 存算分离手动部署指南
一、准备工作
环境要求
- 3 台以上服务器(奇数台)
- 根据业务规模调整 CPU 和内存
- 除修改机器名外,其他命令需在所有服务器上执行
1. 修改机器名
bash
# node1
sudo hostnamectl set-hostname doris-node1
# node2
sudo hostnamectl set-hostname doris-node2
# node3
sudo hostnamectl set-hostname doris-node3
2. 基础配置
bash
# 检查时钟同步
sudo systemctl status chronyd
# 安装 lsof
sudo yum install -y lsof
# 关闭防火墙
sudo systemctl disable firewalld.service
# 禁用透明大页(THP)
echo "echo madvise > /sys/kernel/mm/transparent_hugepage/enabled" | sudo tee -a /etc/rc.local
# 禁用大页
sudo sysctl vm.nr_hugepages=0
3. 修改 /etc/sysctl.conf
ini
vm.max_map_count = 2000000
net.ipv4.tcp_abort_on_overflow = 1
fs.file-max = 1000000
立即生效:
bash
sudo sysctl -p
4. 修改 /etc/security/limits.conf
ini
* soft nofile 1000000
* hard nofile 1000000
root soft nofile 1000000
root hard nofile 1000000
5. 安装 Java 17
bash
sudo yum install -y java-17-openjdk java-17-openjdk-devel
sudo tee /etc/profile.d/doris_java.sh << EOF
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
source /etc/profile.d/doris_java.sh
sudo sh -c 'echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> /etc/environment'
java -version
6. 数据盘挂载
FE 节点(所有节点)
bash
sudo mkfs.xfs /dev/nvme1n1
sudo mkdir -p /data/doris-fe
sudo mount /dev/nvme1n1 /data/doris-fe
echo '/dev/nvme1n1 /data/doris-fe xfs defaults 0 0' | sudo tee -a /etc/fstab
BE 节点(所有节点)
bash
sudo mkfs.xfs /dev/nvme2n1
sudo mkdir -p /data/doris-be
sudo mount /dev/nvme2n1 /data/doris-be
echo '/dev/nvme2n1 /data/doris-be xfs defaults 0 0' | sudo tee -a /etc/fstab
bash
sudo systemctl daemon-reload
7. 创建 doris 用户
bash
sudo groupadd doris
sudo useradd -g doris -M -s /sbin/nologin doris
8. 设置目录权限
bash
sudo chown -R doris:doris /data/doris-fe /data/doris-be
sudo chmod 755 /data/doris-fe /data/doris-be
二、安装 Doris
1. 下载与解压
bash
cd /opt
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-4.0.0-bin-x64.tar.gz
tar -zxvf apache-doris-4.0.0-bin-x64.tar.gz
mv apache-doris-4.0.0-bin-x64 doris-4.0.0
wget http://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.2-tools.tar.gz
tar -zxvf apache-doris-3.0.2-tools.tar.gz
mv tools/fdb/pkgs doris-4.0.0/tools/fdb
2. 安装 FoundationDB
bash
mkdir /opt/foundationdb
编辑 /opt/doris-4.0.0/tools/fdb/fdb_vars.sh:
bash
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=6
CPU_CORES_LIMIT=2
USER="doris"
STORAGE_STATELESS_LOG_RATIO="1:1:1"
STORAGE_PROCESSES_NUM_PER_SSD=2
LOG_PROCESSES_NUM_PER_SSD=2
MEMORY_STORAGE_GB=4
MEMORY_STATELESS_GB=1
MEMORY_LOG_GB=1
部署 FDB 集群:
bash
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh deploy
设置权限:
bash
sudo chown -R doris:doris /opt/foundationdb
sudo chown -R doris:doris /data/doris-fe/foundationdb
sudo chmod -R 750 /opt/foundationdb
创建 systemd 服务 /etc/systemd/system/doris-fdb.service:
ini
[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
启动:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now doris-fdb
3. 部署 Meta Service
编辑 /opt/doris-4.0.0/ms/conf/doris_cloud.conf:
ini
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:
ini
[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
启动并验证:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now doris-ms
ps -p $(cat /opt/doris-4.0.0/ms/bin/doris_cloud.pid)
ss -tulnp | grep 5000
4. 部署 FE
编辑 /opt/doris-4.0.0/fe/conf/fe.conf:
ini
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
创建目录:
bash
sudo -u doris mkdir /data/doris-fe/doris-meta
sudo -u doris mkdir /data/doris-fe/log
创建服务 /etc/systemd/system/doris-fe.service:
ini
[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:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now doris-fe
配置 FE
bash
mysql -h 172.16.10.110 -P 9030 -u root
sql
SET PASSWORD FOR 'root' = PASSWORD('your_password');
ALTER SYSTEM ADD FOLLOWER "172.16.10.111:9010";
ALTER SYSTEM ADD FOLLOWER "172.16.10.112:9010";
SHOW FRONTENDS;
5. 部署 BE
编辑 /opt/doris-4.0.0/be/conf/be.conf:
ini
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
创建目录:
bash
sudo -u doris mkdir /data/doris-be/log
sudo -u doris mkdir /data/doris-be/storage
sudo -u doris mkdir /data/doris-be/file_cache
创建服务 /etc/systemd/system/doris-be.service:
ini
[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:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now doris-be
注册 BE 节点:
sql
ALTER SYSTEM ADD BACKEND "172.16.10.110:9050";
ALTER SYSTEM ADD BACKEND "172.16.10.111:9050";
ALTER SYSTEM ADD BACKEND "172.16.10.112:9050";
SHOW BACKENDS;
三、运维调试
检查 FoundationDB
bash
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh fdbcli --exec "status details"
查看 Meta Service 日志
bash
journalctl -u doris-ms -n 50 --no-pager
清理 FDB(元数据冲突时重建)
bash
sudo -u doris /opt/doris-4.0.0/tools/fdb/fdb_ctl.sh clean
BE 优雅下线
sql
ALTER SYSTEM DECOMMISSION BACKEND "172.16.10.112:9050";
-- 等待 SystemDecommissioned = true, TabletNum = 0
ALTER SYSTEM DROP BACKEND "172.16.10.112:9050";
增加 BE 节点
sql
ALTER SYSTEM ADD BACKEND "172.16.10.112:9050";
四、注意事项与建议
- 版本稳定性:4.0.0 版本存在视图关联查询报错、元数据差异等问题,建议使用更新的稳定版本。
- 高可用:建议部署 Nginx 代理 FE 的 9030 端口,避免主 FE 节点宕机后客户端无法访问。程序连接可配置三个 FE 地址。
以上为完整的 Apache Doris 4.0.0 存算分离手动部署指南。