一、环境要求
1、软硬件要求
Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:
1.系统要求
Linux系统 | 版本 |
---|---|
Centos | 7.1 及以上 |
Ubuntu | 16.04 及以上 |
2.软件版本要求
软件 | 版本 |
---|---|
Java | 1.8 |
GCC | 4.8.2 及以上 |
2、网络需求
实例名称 | 端口名称 | 默认端口 | 通讯方向 | 说明 |
---|---|---|---|---|
BE | be_port | 9060 | FE --> BE | BE 上 thrift server 的端口,用于接收来自 FE 的请求 |
BE | webserver_port | 8040 | BE <–> BE | BE 上的 http server 的端口 |
BE | heartbeat_service_port | 9050 | FE --> BE | BE 上心跳服务端口(thrift),用于接收来自 FE 的心跳 |
BE | brpc_port | 8060 | FE <–> BE, BE <–> BE | BE 上的 brpc 端口,用于 BE 之间通讯 |
FE | http_port | 8030 | FE <–> FE,用户 <–> FE | FE 上的 http server 端口 |
FE | rpc_port | 9020 | BE --> FE, FE <–> FE | FE 上的 thrift server 端口,每个fe的配置需要保持一致 |
FE | query_port | 9030 | 用户 <–> FE | FE 上的 mysql server 端口 |
FE | arrow_flight_sql_port | 9040 | 用户 <–> FE | FE 上的 Arrow Flight SQL server 端口 |
FE | edit_log_port | 9010 | FE <–> FE | FE 上的 bdbje 之间通信用的端口 |
Broker | broker_ipc_port | 8000 | FE --> Broker, BE --> Broker | Broker 上的 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.100 | 192.168.159.101 | 192.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.100 | 192.168.159.101 | 192.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。