Apache Doris 如何部署与负载均衡
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环境。接下来,按照下面的步骤一步步操作:
- 下载二进制包:从官网下载Apache Doris的二进制包,使用以下命令:
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.6-bin-x64.tar.xz
- 解压文件:下载完成后,解压这个压缩包,指定解压路径为
/home/work/
,命令如下:
tar -xf apache-doris-1.2.4.1-bin-x86_64.tar.xz -C /home/work/
这里需要注意,解压的版本号要和实际下载的版本对应,如果版本不一致,可能会导致后续问题。
3. 关闭交换空间:为了保证系统性能,需要关闭交换空间,执行以下命令:
swapoff -a
- 设置文件打开数量:通过修改
/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
- 查看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
- 修改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";
- 启动BE:使用绝对路径启动BE,并设置为后台运行:
/home/work/apache-doris-1.2.4.1/be/bin/start_be.sh --daemon
- 查看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
其中,Alive
为true
表示BE连接正常;LastStartTime
是最近一次BE启动时间;LastHeartbeat
是最近一次心跳时间。通过这些信息,我们可以判断BE是否正常工作。
通过以上步骤,我们就完成了Apache Doris的部署和负载均衡配置。在实际操作过程中,可能会遇到各种问题,这就需要大家仔细检查每一个步骤,确保配置正确无误。希望这篇文章能对大家有所帮助。