分布式数据库Apache Doris HA集群部署

bash 复制代码
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等

可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建

@TOC

前言

Apache Doris实在火的不得了,基于开源的这个分布式数据库HA集群,我们开启体验之旅。


📣 1.部署环境

✨ 1.1 架构规划

Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,按照以下架构。 Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。 Backend(BE),主要负责数据存储、查询计划的执行

✨ 1.2 集群规划

✨ 1.3 网络需求

Doris 各个实例直接通过网络进行通讯,以下表格展示了所有需要的端口 注意: 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。 部署前请确保各个端口在应有方向上的访问权限。

📣 2.前期准备

✨ 2.1 系统文件限制

修改 /etc/security/limits.conf, 执行命令:

echo "* soft nofile 204800" >> /etc/security/limits.conf

echo "* hard nofile 204800" >> /etc/security/limits.conf

echo "* soft nproc 204800" >> /etc/security/limits.conf

echo "* hard nproc 204800 " >> /etc/security/limits.conf

✨ 2.2 关闭交换内存

root@centos79 \~\]# swapoff -a \[root@centos79 \~\]# cat /etc/fstab 注释加载swap分区的那行记录 \[root@centos79 \~\]# free -h total used free shared buff/cache available Mem: 3.7G 1.1G 1.5G 81M 1.1G 2.3G Swap: 0B 0B 0B

✨ 2.3 内核修改

修改 /etc/sysctl.conf, 执行命令:

echo fs.file-max = 6553560 >> /etc/sysctl.conf

echo vm.max_map_count=2000000 >> /etc/sysctl.conf

sysctl -p

✨ 2.4 时间同步

bash 复制代码
[root@frontend01 /]# yum install -y ntp
[root@frontend01 /]# systemctl start ntpd
[root@frontend01 /]# systemctl enable ntpd

[root@frontend01 /]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 makaki.miuku.ne .INIT.          16 u    -   64    0    0.000    0.000   0.000
 119.28.206.193  .INIT.          16 u    -   64    0    0.000    0.000   0.000
 110.42.98.138   .INIT.          16 u    -   64    0    0.000    0.000   0.000
 a.chl.la        .INIT.          16 u    -   64    0    0.000    0.000   0.000

✨ 2.5 java环境

bash 复制代码
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序
docker cp /opt/jdk-8u391-linux-x64.tar.gz frontend01:/opt

1.下载Linux环境下的jdk1.8
https://www.oracle.com/java/technologies/downloads/#java8

2.JDK压缩包解压
tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local

3.环境变量导入
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

##环境变量生效
source /etc/profile

##确认安装是否成功
java -version

[root@frontend01 ~]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

✨ 2.6 防火墙关闭

systemctl stop firewalld

systemctl disalbe firewalld

root@centos79 \~\]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)

✨ 2.7 host配置

vi /etc/hosts \

172.18.12.20 frontend01

172.18.12.21 frontend02

172.18.12.22 frontend03

172.18.12.23 frontend04

172.18.12.24 backend01

172.18.12.25 backend02

172.18.12.26 backend03

172.18.12.27 backend04

📣 3.配置Doris集群

✨ 3.1 配置FE

bash 复制代码
进入到 apache-doris 解压后的fe进行配置

mkdir -p /doris/soft/
tar xf /opt/apache-doris-2.0.2-bin-x64.tar.gz -C /doris/soft/

#创建 fe 元数据存储的目录
mkdir -p /doris/doris-meta


#配置FE
echo "meta_dir=/doris/doris-meta" >> /doris/soft/apache-doris-2.0.2-bin-x64/fe/conf/fe.conf
echo "priority_networks=172.18.12.20/24" >> /doris/soft/apache-doris-2.0.2-bin-x64/fe/conf/fe.conf

# 配置环境变量
vi /etc/profile
#添加如下内容
export DORIS_HOME=/doris/soft/apache-doris-2.0.2-bin-x64
export PATH=$PATH:$DORIS_HOME/fe/bin

source /etc/profile

#启动fe
start_fe.sh --daemon

#关闭fe
stop_fe.sh

✨ 3.2 OBSERVER配置

bash 复制代码
#配置FE OBSERVER从节点

mkdir -p /doris/soft/
tar xf /opt/apache-doris-2.0.2-bin-x64.tar.gz -C /doris/soft/

echo "meta_dir=/doris/doris-meta" >> /doris/soft/apache-doris-2.0.2-bin-x64/fe/conf/fe.conf
echo "priority_networks=172.18.12.23/24" >> /doris/soft/apache-doris-2.0.2-bin-x64/fe/conf/fe.conf

# 配置环境变量
vi /etc/profile
#添加如下内容
export DORIS_HOME=/doris/soft/apache-doris-2.0.2-bin-x64
export PATH=$PATH:$DORIS_HOME/fe/bin

source /etc/profile

#启动fe
bash start_fe.sh --helper 172.18.12.20:9010 --daemon

✨ 3.3 配置BE

bash 复制代码
在所有BE节点上配置
进入到 apache-doris 解压后的be进行配置

mkdir -p /doris/soft/
tar xf /opt/apache-doris-2.0.2-bin-x64.tar.gz -C /doris/soft/

#创建be存储数据的目录
mkdir -p /doris/doris-storage


#配置BE

echo "storage_root_path=/doris/doris-storage" >> /doris/soft/apache-doris-2.0.2-bin-x64/be/conf/be.conf
echo "priority_networks=172.18.12.24/24" >> /doris/soft/apache-doris-2.0.2-bin-x64/be/conf/be.conf

# 配置环境变量
vi /etc/profile
#添加如下内容
export DORIS_HOME=/doris/soft/apache-doris-2.0.2-bin-x64
export PATH=$PATH:$DORIS_HOME/be/bin

source /etc/profile

#启动be
start_be.sh --daemon

📣 4.加入BE和OBSERVER

登录frontend01主节点leader

数据库添加新节点OBSERVER

root@centos79 \~\]# docker exec -it frontend01 bash \[root@frontend01 \~\]# mysql -uroot -P9030 -h127.0.0.1 MySQL \[(none)\]\> alter system add observer "172.18.12.23:9010"; MySQL \[(none)\]\> SHOW observer; 登录frontend01主节点leader 数据库添加新节点BACKENDS mysql -h127.0.0.1 -P9030 -uroot -pAa123456 MySQL \[(none)\]\> alter system add BACKEND "172.18.12.24:9050"; MySQL \[(none)\]\> SHOW BACKENDS;

markdown 复制代码
                                                           >相关推荐阅读:\

90天精通Oracle-实战系列
Oracle高可用实战系列
MySQL从入门到实战
如何成为SQL高手
PostgreSQL从入门到实战
大家可以点赞、收藏、关注、评论我啦 、有数据库相关的问题随时联系我或交流哟~!

相关推荐
光影少年4 天前
Promise状态和方法都有哪些,以及实现原理
javascript·promise·掘金·金石计划
光影少年4 天前
next.js和nuxt与普通csr区别
nuxt.js·掘金·金石计划·next.js
光影少年4 天前
js异步解决方案以及实现原理
前端·javascript·掘金·金石计划
光影少年8 天前
前端上传切片优化以及实现
前端·javascript·掘金·金石计划
ZTStory11 天前
JS 处理生僻字字符 sm4 加密后 Java 解密字符乱码问题
javascript·掘金·金石计划
光影少年11 天前
webpack打包优化都有哪些
前端·webpack·掘金·金石计划
冯志浩12 天前
Harmony Next - 手势的使用(二)
harmonyos·掘金·金石计划
冯志浩13 天前
Harmony Next - 手势的使用(一)
harmonyos·掘金·金石计划
光影少年14 天前
react虚拟列表实现及原理
前端·react.js·掘金·金石计划
光影少年14 天前
react性能优化有哪些
前端·react.js·掘金·金石计划