Doris集群部署

本文详细描述了Doris数据库的部署步骤,包括硬件和软件要求、网络配置、系统配置文件修改、FE高可用服务部署、BE服务部署以及Broker的部署,旨在帮助用户顺利搭建和管理分布式环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境要求

1、软硬件要求

Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:

1.系统要求
Linux系统版本
Centos7.1 及以上
Ubuntu16.04 及以上
2.软件版本要求
软件版本
Java1.8
GCC4.8.2 及以上

2、网络需求

实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port8060FE <–> BE, BE <–> BEBE 上的 brpc 端口,用于 BE 之间通讯
FEhttp_port8030FE <–> FE,用户 <–> FEFE 上的 http server 端口
FErpc_port9020BE --> FE, FE <–> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
FEquery_port9030用户 <–> FEFE 上的 mysql server 端口
FEarrow_flight_sql_port9040用户 <–> FEFE 上的 Arrow Flight SQL server 端口
FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口
Brokerbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收请求

二、系统配置文件修改

1、设置系统最大打开文件句柄数

vim /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536

2、关闭交换分区(swap)

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区,使用临时修改和永久修改,可以避免重启服务器。

#永久修改
#注释掉swap 行 
vim /etc/fstab

#UUID=bd7489db-42dc-4e01-96ab-864eae12f02e swap                    swap    defaults        0 0


#临时修改
swapoff -a

#查询是否关闭
#Swap:             0           0           0全部为0是关闭状态
free -m

              total        used        free      shared  buff/cache   available
Mem:          21031        2364        9667          38        9000       18278
Swap:             0           0           0

3、时间同步(必须保证各服务器时差五秒之内,否则会无法连接)

#1.安装ntp
yum install ntpdate

#2.设置时区
timedatectl set-timezone Asia/Shanghai

#3.同步时间
ntpdate ntp1.aliyun.com

#4.查询时间
date

4、调大单个进程的虚拟内存区域数量

#追加参数,永久设置
vim /etc/sysctl.conf

vm.max_map_count=2000000
#限制单个进程的虚拟内存区域数量(临时设置)
sysctl -w vm.max_map_count=2000000

三、FE高可用服务部署

1、FE简介

FE 分为 Follower 和 Observer 两种角色,其中 Follower 角色会选举出一个 Follower 节点作为 Master。 默认一个集群,只能有一个 Master 状态的 Follower 角色,可以有多个 Follower 和 Observer,同时需保证 Follower 角色为奇数个。其中所有 Follower 角色组成一个选举组,如果 Master 状态的 Follower 宕机,则剩下的 Follower 会自动选出新的 Master,保证写入高可用。Observer 同步 Master 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Master。

第一个启动的 FE 自动成为 Master。在此基础上,可以添加若干 Follower 和 Observer。

#将安装包放置在该目录
/usr/loacl/apache-doris-1.2.7.1-bin-x64.tar.xz
#解压
tar -xvf apache-doris-1.2.7.1-bin-x64.tar.xz
#改名
mv apache-doris-1.2.7.1-bin-x64 doris 

2、主机规划

主机信息192.168.159.100192.168.159.101192.168.159.102
MASTER
FOLLOWER

3、修改配置信息

#顶部添加
DORIS_HOME=/usr/local/doris/fe

#该参数较为复杂,需根据网络环境进行配置,默认改为内网地址。
priority_networks = 192.168.159.100/24
#忽略大小写,需要添加,否则只能重装
lower_case_table_names=1
#web访问端口,按需修改
http_port = 8030

4、MASTER启动

#启动FE 
[root@node1 ~]# cd /usr/local/doris/bin
[root@node1 ~]# ./start_fe.sh --daemon

5、FOLLOWER启动

1.首次启动

leader_fe_host 为 Master 所在节点 ip, edit_log_port 在 Master 的配置文件 fe.conf 中。–helper 参数仅在 follower 和 observer 第一次启动时才需要。

#指令
./bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
#操作
./bin/start_fe.sh --helper 192.168.159.100:9010 --daemon
2.之后启动
./bin/start_fe.sh  --daemon
3.将 Follower 或 Observer 加入到集群
添加 Follower 或 Observer。使用 mysql-client 连接到已启动的 FE,并执行:

ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
或
ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";


#此处添加两个Follower ,不添加Observer 
ALTER SYSTEM ADD FOLLOWER "192.168.159.101:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.159.102:9010";
4.查询启动的FE集群
SHOW PROC '/frontends';
5.注意事项
FE 扩容注意事项:

Follower FE(包括 Master)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
当 FE 处于高可用部署时(1个 Master,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
6.删除FE节点
使用以下命令删除对应的 FE 节点:

ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

FE 缩容注意事项:

删除 Follower FE 时,确保最终剩余的 Follower(包括 Master)节点为奇数。

6、配置集群启动

vim doris.sh

#! /bin/bash
case $1 in
"start"){
for i in test01 test02 test03
do
echo " --------启动 $i Doris FE-------"
ssh $i "/usr/local/doris/bin/start_fe.sh -daemon 
done
};;
"stop"){
for i in test01 test02 test03
do
echo " --------停止 $i Doris FE-------"
ssh $i "/usr/local/doris/bin/stop_fe.sh "
done
};;
esac
#添加执行权限
chmod +x 
./doris.sh start
#启动集群
./doris.sh stop
#关闭集群

7、Nginx配置

Doris 可以部署多个FE,在访问Web UI的时候,如果使用Nginx进行负载均衡,因为Session问题会出现不停的提示要重新登录,这个问题其实是Session共享的问题,Nginx提供了集中Session共享的解决方案,这里我们使用的是nginx中的ip_hash技术,ip_hash能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/custom/*.conf;
    upstream  doris.com {
      server    192.168.159.100:8030 weight=3;
      server    192.168.159.101:8030 weight=4;
      server    192.168.159.102:8030 weight=4;
      ip_hash;
    }

    server {
        listen       80;
        server_name  gaia-pro-bigdata-fe02;
        if ($request_uri ~ _load) {
           return 307 http://$host$request_uri ;
        }

        location / {
            proxy_pass 192.168.159.100:8030;
            proxy_redirect default;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 }

四、BE服务部署

1、主机规划

主机信息192.168.159.100192.168.159.101192.168.159.102
BE

2、修改配置文件

1.修改BE配置文件be.conf
#顶部添加
DORIS_HOME=/usr/local/doris/be

priority_networks = 192.168.159.100/24
2.修改be启动文件

由于从 1.2 版本开始支持 Java UDF 函数,BE 依赖于 Java 环境。所以要预先配置 JAVA_HOME 环境变量,也可以在 start_be.sh 启动脚本第一行添加 export JAVA_HOME=your_java_home_path 来添加环境变量。

3、启动BE

./bin/start_be.sh  --daemon

4、将BE添加到FE

BE 节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。集群负载情况,可以参见 Tablet 负载均衡文档

#其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中。
ALTER SYSTEM ADD BACKEND "be_host:heartbeat-service_port";

ALTER SYSTEM ADD BACKEND  "192.168.159.100:9050"
ALTER SYSTEM ADD BACKEND  "192.168.159.101:9050"
ALTER SYSTEM ADD BACKEND  "192.168.159.102:9050"

5、查看BE启动状态

SHOW PROC '/backends';

五、Broker 部署(扩展)

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、对象存储的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值