Apache Doris 如何部署与负载均衡

开发工具 潘老师 1小时前 3 ℃ (0) 扫码查看

Apache Doris如何实现部署与负载均衡配置?作为运维开发人员,一般都会遇到吧,今天,咱们就来深入了解一下如何完成这些操作。

一、Doris基础架构

Apache Doris的架构主要由前端节点(FE)和后端节点(BE)构成。

  • FE(Frontend):这是Doris的前端节点,它就像是一个“大管家”。主要负责和客户端打交道,接收客户端的请求,然后把处理结果返回给客户端。同时,它还管理着元数据,负责集群的管理工作,并且生成查询计划,对整个系统的运行起着关键的协调作用。
  • BE(Backend):作为后端节点,BE主要承担数据存储与管理的重任,就像一个“仓库管理员”。它负责把数据存储好,并且在需要执行查询计划的时候,按照要求去处理数据,保障数据的高效处理和查询。
  • bdbje(Oracle Berkeley DB Java Edition):这个组件在Doris里也很重要,它负责把元数据操作日志保存下来,让这些信息不会丢失。同时,它还保障了FE的高可用性,让FE在运行过程中更加稳定可靠。

了解了架构之后,我们再来看一下各个组件之间通讯用到的端口信息。这部分内容很关键,在部署过程中,每个端口都有其特定的用途:

名称 端口名称 端口 通讯方向 说明
BE be_port 9060 FE –> BE BE上thrift server的端口,专门用来接收FE发来的请求
BE webserver_port 8040 BE <–> BE BE上http server的端口,用于BE之间的通讯
BE heartbeat_service_port 9050 FE –> BE BE上心跳服务端口(thrift),用来接收FE发送的心跳信号,以此判断节点是否正常运行
BE brpc_port 8060 FE <–> BE, BE <–> BE BE上的brpc端口,用于FE和BE之间,以及BE相互之间的通讯
FE http_port 8030 FE <–> FE,用户 <–> FE FE上的http server端口,既用于FE之间的交互,也用于用户和FE的通讯
FE rpc_port 9020 BE –> FE, FE <–> FE FE上的thrift server端口,每个FE的这个配置必须保持一致
FE query_port 9030 用户 <–> FE FE上的mysql server端口,用户通过这个端口和FE进行数据查询等交互
FE edit_log_port 9010 FE <–> FE FE上bdbje之间通信用的端口
Broker broker_ipc_port 8000 FE –> Broker, BE –> Broker Broker上的thrift server端口,用于接收FE和BE发送的请求

二、负载均衡配置

当我们部署了多个FE节点后,为了让请求能够合理地分配到各个节点上,就需要进行负载均衡配置。这里我们借助nginx来实现。在nginx的配置文件nginx.conf中添加如下代码块:

stream {
    upstream mysqld{
        server 10.0.2.102:9030;
        server 10.0.2.105:9030;
        server 10.0.2.107:9030;
    }
    server {
        listen 9999;
        proxy_pass mysqld;
    }
}

这段代码的作用是,将发往9999端口的请求,代理到upstream mysqld定义的几个FE节点(10.0.2.102:9030、10.0.2.105:9030、10.0.2.107:9030)上,从而实现负载均衡。简单来说,就是让多个FE节点共同分担请求压力,提高系统的整体性能和稳定性。

三、安装部署步骤

在开始部署Apache Doris之前,要确保服务器的操作系统是centos7.9,并且安装了java 1.8环境。接下来,按照下面的步骤一步步操作:

  1. 下载二进制包:从官网下载Apache Doris的二进制包,使用以下命令:
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.6-bin-x64.tar.xz
  1. 解压文件:下载完成后,解压这个压缩包,指定解压路径为/home/work/ ,命令如下:
tar -xf apache-doris-1.2.4.1-bin-x86_64.tar.xz -C /home/work/

这里需要注意,解压的版本号要和实际下载的版本对应,如果版本不一致,可能会导致后续问题。
3. 关闭交换空间:为了保证系统性能,需要关闭交换空间,执行以下命令:

swapoff -a
  1. 设置文件打开数量:通过修改/etc/security/limits.conf文件,设置文件打开数量的限制。添加以下内容:
soft nofile 65536
hard nofile 65536

这一步是为了确保系统在运行过程中,能够支持足够数量的文件打开操作,避免因文件打开数量限制而导致的问题。
5. 设置虚拟内存空间:编辑/etc/sysctl.conf文件,设置虚拟内存空间参数,添加如下内容:

vm.max_map_count = 2000000

这一设置对系统的内存管理和性能优化有重要作用。
6. 修改FE配置文件:进入FE的配置文件目录,编辑fe.conf文件:

vim /home/work/apache-doris-1.2.4.1/fe/conf/fe.conf

在文件中进行如下配置:

LOG_DIR = ${DORIS_HOME}/log
DATE = `date +%Y%m%d-%H%M%S`
JAVA_OPTS="-Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
JAVA_OPTS_FOR_JDK_9="-Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time"
sys_log_level = INFO
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
priority_networks=10.0.2.0/24 #新增这个配置,定义doris使用的网络。
meta_dir = /data1/doris-meta #新增这个配置,定义FE元数据存储路径

这些配置分别设置了日志目录、Java虚拟机参数、端口号、网络以及元数据存储路径等重要信息,每个配置项都关系到FE的正常运行,需要根据实际情况仔细调整。
7. 启动FE:使用绝对路径启动FE,并设置为后台运行,执行以下命令:

/home/work/apache-doris-1.2.4.1/fe/bin/start_fe.sh --daemon
  1. 查看FE进程:通过以下命令查看FE进程是否启动成功:
ps -ef | grep doris

如果看到类似下面的输出,说明FE已经成功启动:

root 5443 1 0 7月31 ? 00:05:04 /usr/bin/java -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/home/work/apache-doris-1.2.4.1/fe/log/fe.gc.log.20230731-092038 -XX:-OmitStackTraceInFastThrow -XX:OnOutOfMemoryError=kill -9 %p org.apache.doris.PaloFe
  1. 修改BE配置文件:接下来修改BE的配置文件be.conf
vim /home/work/apache-doris-1.2.4.1/be/conf/be.conf

在文件中进行如下配置:

PPROF_TMPDIR="$DORIS_HOME/log/"
#新增java家目录,没有这个目录,可以安装openjdk-devel安装包
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64/
sys_log_level = INFO
priority_networks=10.0.2.0/24 #定义doris网络
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
storage_root_path = /data2/doris #定义BE数据存储目录

这里设置了临时目录、Java环境路径、端口号以及数据存储目录等信息,确保BE能够正常运行并存储数据。
10. 添加BE服务:在启动BE之前,要先使用mysql客户端工具连接到FE,添加BE服务。执行以下命令:

mysql -uroot -P 9030 -h 10.0.2.102 -p #初始连接没有密码

连接成功后,设置账户密码:

set password = password("123456");

然后执行添加BE服务的语句,注意引号内填写主机和心跳端口:

alter system add backend "10.0.2.102:9050";
  1. 启动BE:使用绝对路径启动BE,并设置为后台运行:
/home/work/apache-doris-1.2.4.1/be/bin/start_be.sh --daemon
  1. 查看BE进程:通过以下命令查看BE服务状态:
show proc '/backends';

返回结果类似下面这样:

BackendId: 10003
Cluster: default_cluster
IP: 10.0.2.102
HostName: test
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-07-31 10:40:22
LastHeartbeat: 2023-08-01 00:27:15
Alive: true
SystemDecommissioned: false 
ClusterDecommissioned: false 
TabletNum: 2 
DataUsedCapacity: 2.952 KB 
AvailCapacity: 146.914 GB 
TotalCapacity: 199.986 GB 
UsedPct: 26.54 % 
MaxDiskUsedPct: 26.54 % 
RemoteUsedCapacity: 0.000 
Tag: {"location" : "default"} 
ErrMsg: 
Version: doris-1.2.4-1-Unknown 
Status: {"lastSuccessReportTabletsTime":"2023-08-01 00:27:08","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} 
HeartbeatFailureCounter: 0 
NodeRole: mix

其中,Alivetrue表示BE连接正常;LastStartTime是最近一次BE启动时间;LastHeartbeat是最近一次心跳时间。通过这些信息,我们可以判断BE是否正常工作。

通过以上步骤,我们就完成了Apache Doris的部署和负载均衡配置。在实际操作过程中,可能会遇到各种问题,这就需要大家仔细检查每一个步骤,确保配置正确无误。希望这篇文章能对大家有所帮助。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/tool/17993.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】