暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Doris集群的3节点混合部署实践笔记

原创 数据库管理员陆美芳 2024-07-17
459

1、安装基础工具

因为是重装系统的机器,要从安装基础软件开始,包括vim,netstat,ifconfig等,方便各种检测软件硬件条件需要。其中遇到的问题是,yum安装不了的问题,解决方法是:
找到/etc/yum.repos.d/CentOS-Base.repo,然后备份一下
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
然后重新编辑,从yum安装正常的系统复制/etc/yum.repos.d/CentOS-Base.repo文件过来保存即可

2、安装jdk

2.1、准备好jdk安装包

这里使用Doris官网推荐的jdk-8u202-linux-x64.tar.gz。

2.2、解压安装

mkdir -p /usr/java/jdk
mv /opt/jdk-8u202-linux-x64.tar.gz /usr/java/jdk/
cd /usr/java/jdk/
tar -zxvf jdk-8u202-linux-x64.tar.gz 

vim /etc/profile
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
:wq
source /etc/profile

2.3、确认Java版本

执行 java -version确认Java是否安装成功,执行命令,得到如下结果即成功:
[root@crmdb2 ~]# java -version
java version “1.8.0_202”
Java™ SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot™ 64-Bit Server VM (build 25.202-b08, mixed mode)

3、手动部署Doris集群

3.1、软硬件环境检查

每台机器都要检查

3.1.1、cpu检查

cat /proc/cpuinfo | grep avx2

3.1.2、内存检查

[root@localhost network-scripts]# free -m
              total        used        free      shared  buff/cache   available
Mem:          96130        6121       78752          10       11255       89450
Swap:             0           0           0

3.1.3、存储空间检查

[root@localhost network-scripts]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                  47G     0   47G    0% /dev
tmpfs                     47G     0   47G    0% /dev/shm
tmpfs                     47G   11M   47G    1% /run
tmpfs                     47G     0   47G    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G   13G   38G   26% /
/dev/sda2               1016M  143M  874M   15% /boot
/dev/sda1                200M   12M  189M    6% /boot/efi
/dev/mapper/centos-home  7.3T  114M  7.3T    1% /home
tmpfs                    9.4G     0  9.4G    0% /run/user/0

3.1.4、文件系统检查

[root@localhost network-scripts]# mount |grep home
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,sunit=512,swidth=1024,noquota)

可以看到文件系统为 xfs,满足官网要求。

3.1.5、网卡检查

[root@localhost network-scripts]# lshw -class network
  *-network:0               
       .....
       size: 1Gbit/s
       capacity: 1Gbit/s
       ...
 speed=1Gbit/s
       ...
  *-network:1
       ...
       capacity: 1Gbit/s
       width: 64 bits
       ...

可以看到我的网卡不是万兆网卡,但是我是开发环境,所以不纠结,先用着。

3.2、操作系统检查

3.2.1、关闭swap分区

编辑 /etc/fstab,注释掉swap的行,然后重启服务器

[root@localhost network-scripts]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jul 16 15:40:36 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=451bb932-6a28-4d6f-a7cf-b54acfb01415 /boot                   xfs     defaults        0 0
UUID=3F34-B4F1          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@localhost network-scripts]# reboot

3.2.2、关闭系统防火墙

sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

3.2.3、配置 NTP 服务

yum install ntp -y
sudo systemctl start ntpd.service
sudo systemctl enable ntpd.service

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

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

3.2.5、修改虚拟内存区域数量

sysctl -w vm.max_map_count=2000000

3.2.6、关闭透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

3.3、集群规划

3台物理机,混合部署3节点FE、3节点BE,具体IP如下:
192.168.xx.126【FE MASTER]
192.168.xx.127
192.168.xx.128

3.4、安装集群

3.4.1、部署 FE Master 节点

FE存储目录:

mkdir -p /home/doris/fe

准备Doris二进制安装包,并上传到/opt,我使用的是当前最新版本apache-doris-2.1.4-bin-x64.tar.gz
然后开始安装FE Master节点
第一步:解压软件包
cd /opt
tar -zxvf apache-doris-2.1.4-bin-x64.tar.gz
mv apache-doris-2.1.4-bin-x64 apache-doris
cd apache-doris/fe/conf
第二步:修改配置
vim fe.conf
修改:JAVA_OPTS 的 -Xmx16384m
修改:meta_dir = /home/doris/fe
修改:priority_networks = 192.168.23.0/24
保存退出
第三步:启动FE
./bin/start_fe.sh --daemon
第四步:检查FE启动状态
先登录FE,初次登录使用root账号,密码空
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h192.168.xx.126
查看状态命令:
show frontends\G

mysql> show frontends\G
*************************** 1. row ***************************
              Name: fe_650dc407_537e_49a2_b926_57937e56cab0
              Host: 192.168.xx.126
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 9030
           RpcPort: 9020
ArrowFlightSqlPort: -1
              Role: FOLLOWER
          IsMaster: true
         ClusterId: 1213843435
              Join: true
             Alive: true
 ReplayedJournalId: 171
     LastStartTime: 2024-07-17 13:35:44
     LastHeartbeat: 2024-07-17 13:49:05
          IsHelper: true
            ErrMsg: 
           Version: doris-2.1.4-rc03-e93678fd1e
  CurrentConnected: Yes
1 row in set (5.10 sec)

看到如上信息,重点关注 Alive: true,表示正常。

3.4.2、部署 FE 集群

安装了FE master后,为了高可用,还要安装2个节点FE,安装第一步、第二步跟master的安装相同。第三步 启动FE之前,要先在刚安装好的FE master节点上注册新的FE节点,注册命令为:

ALTER SYSTEM ADD FOLLOWER "192.168.xx.127:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.xx.128:9010";

第三步:启动FE FOLLOWER节点,初次启动的命令为:

cd /opt/apache-doris/fe
./bin/start_fe.sh --helper 192.168.xx.126:9010 --daemon

后续启动命令:

./bin/start_fe.sh --daemon

第四步:检查启动状态

mysql> show frontends\G
*************************** 1. row ***************************
              Name: fe_650dc407_537e_49a2_b926_57937e56cab0
              Host: 192.168.xx.126
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 9030
           RpcPort: 9020
ArrowFlightSqlPort: -1
              Role: FOLLOWER
          IsMaster: true
         ClusterId: 1213843435
              Join: true
             Alive: true
 ReplayedJournalId: 1244
     LastStartTime: 2024-07-17 13:35:44
     LastHeartbeat: 2024-07-17 15:18:17
          IsHelper: true
            ErrMsg: 
           Version: doris-2.1.4-rc03-e93678fd1e
  CurrentConnected: Yes
*************************** 2. row ***************************
              Name: fe_75b02626_764c_4464_999c_9ec5387c25c6
              Host: 192.168.xx.127
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 9030
           RpcPort: 9020
ArrowFlightSqlPort: -1
              Role: FOLLOWER
          IsMaster: false
         ClusterId: 1213843435
              Join: true
             Alive: true
 ReplayedJournalId: 1243
     LastStartTime: 2024-07-17 14:12:20
     LastHeartbeat: 2024-07-17 15:18:17
          IsHelper: true
            ErrMsg: 
           Version: doris-2.1.4-rc03-e93678fd1e
  CurrentConnected: No
*************************** 3. row ***************************
              Name: fe_60609b3b_f9f3_4ecb_9b66_ec861be62d53
              Host: 192.168.xx.128
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 9030
           RpcPort: 9020
ArrowFlightSqlPort: -1
              Role: FOLLOWER
          IsMaster: false
         ClusterId: 1213843435
              Join: true
             Alive: true
 ReplayedJournalId: 1245
     LastStartTime: 2024-07-17 15:12:47
     LastHeartbeat: 2024-07-17 15:18:27
          IsHelper: true
            ErrMsg: 
           Version: doris-2.1.4-rc03-e93678fd1e
  CurrentConnected: No
3 rows in set (15.05 sec)

看到如上状态,表示3个节点都安装完,状态都正常!

3.4.3、部署 BE

第一步:修改be.conf配置文件
修改:JAVA_HOME=/usr/java/jdk/jdk1.8.0_202
修改:priority_networks = 192.168.xx.0/24
修改:storage_root_path = /home/doris/be
第二步:在23.126上注册be节点

ALTER SYSTEM ADD BACKEND "192.168.xx.126:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.127:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.128:9050";

第三步:启动BE

ulimit -n 60000
./bin/start_be.sh --daemon

第三步:检查状态

mysql> show backends\G
*************************** 1. row ***************************
              BackendId: 11368
                   Host: 192.168.xx.126
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 8040
               BrpcPort: 8060
     ArrowFlightSqlPort: -1
          LastStartTime: 2024-07-17 15:30:46
          LastHeartbeat: 2024-07-17 15:42:58
                  Alive: true
   SystemDecommissioned: false
              TabletNum: 14
       DataUsedCapacity: 0.000 
      TrashUsedCapacity: 16.261 KB
          AvailCapacity: 7.220 TB
          TotalCapacity: 7.220 TB
                UsedPct: 0.00 %
         MaxDiskUsedPct: 0.00 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: 
                Version: doris-2.1.4-rc03-e93678fd1e
                 Status: {"lastSuccessReportTabletsTime":"2024-07-17 15:42:21","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
*************************** 2. row ***************************
              BackendId: 11660
                   Host: 192.168.xx.127
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 8040
               BrpcPort: 8060
     ArrowFlightSqlPort: -1
          LastStartTime: 2024-07-17 15:34:30
          LastHeartbeat: 2024-07-17 15:42:58
                  Alive: true
   SystemDecommissioned: false
              TabletNum: 8
       DataUsedCapacity: 0.000 
      TrashUsedCapacity: 5.866 KB
          AvailCapacity: 3.440 TB
          TotalCapacity: 3.440 TB
                UsedPct: 0.00 %
         MaxDiskUsedPct: 0.00 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: 
                Version: doris-2.1.4-rc03-e93678fd1e
                 Status: {"lastSuccessReportTabletsTime":"2024-07-17 15:43:00","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
*************************** 3. row ***************************
              BackendId: 11675
                   Host: 192.168.xx.128
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 8040
               BrpcPort: 8060
     ArrowFlightSqlPort: -1
          LastStartTime: 2024-07-17 15:42:49
          LastHeartbeat: 2024-07-17 15:42:58
                  Alive: true
   SystemDecommissioned: false
              TabletNum: 0
       DataUsedCapacity: 0.000 
      TrashUsedCapacity: 0.000 
          AvailCapacity: 1.000 B
          TotalCapacity: 0.000 
                UsedPct: 0.00 %
         MaxDiskUsedPct: 0.00 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: 
                Version: doris-2.1.4-rc03-e93678fd1e
                 Status: {"lastSuccessReportTabletsTime":"N/A","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
3 rows in set (0.00 sec)

看到如上信息,表示3个BE节点安装完成,状态都正常!

3.5、验证测试

登录126并创建数据库,创建数据表,插入数据,查询数据

/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h192.168.xx.126
mysql> 
mysql> select user();
+-------------------------+
| user()                  |
+-------------------------+
| 'root'@'192.168.xx.126' |
+-------------------------+
1 row in set (0.04 sec)
# 创建数据库
mysql> create database testdb;
Query OK, 0 rows affected (0.01 sec)
# 创建表
mysql> CREATE TABLE testdb.table_hash
    -> (
    ->     k1 TINYINT,
    ->     k2 DECIMAL(10, 2) DEFAULT "10.5",
    ->     k3 VARCHAR(10) COMMENT "string column",
    ->     k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
    -> )
    -> COMMENT "my first table"
    -> DISTRIBUTED BY HASH(k1) BUCKETS 32;
Query OK, 0 rows affected (0.05 sec)
# 查看表列表
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| table_hash       |
+------------------+
1 row in set (0.00 sec)
# 插入数据
mysql> INSERT INTO testdb.table_hash VALUES
    -> (1, 10.1, 'AAA', 10),
    -> (2, 10.2, 'BBB', 20),
    -> (3, 10.3, 'CCC', 30),
    -> (4, 10.4, 'DDD', 40),
    -> (5, 10.5, 'EEE', 50);
Query OK, 5 rows affected (0.23 sec)
{'label':'label_fc6a6abf956e44a3_8bad87c662f2c2b7', 'status':'VISIBLE', 'txnId':'44'}
# 查询数据
mysql> SELECT * from testdb.table_hash;
+------+-------+------+------+
| k1   | k2    | k3   | k4   |
+------+-------+------+------+
|    5 | 10.50 | EEE  |   50 |
|    3 | 10.30 | CCC  |   30 |
|    1 | 10.10 | AAA  |   10 |
|    2 | 10.20 | BBB  |   20 |
|    4 | 10.40 | DDD  |   40 |
+------+-------+------+------+
5 rows in set (0.15 sec)

3.6、远程连接

部署好后,通过任意FE节点,都能连接Doris,都能操作数据库,进行DML数据操作,每个节点操作的效果都同步到其他节点。
连接效果:
连接效果.png
数据操作:
节点1.png
节点2.png
节点3.png

4、密码设置

前面部署FE后,默认有root和admin两个账号,默认密码为空,这是不安全的,需要登录FE,并设置密码,设置密码的命令如下:

SET PASSWORD FOR 'root' = PASSWORD('你的root密码');
SET PASSWORD FOR 'admin' = PASSWORD('你的admind密码');

5、web控制台

Doris内置了web控制台,可以进行简单的数据查询等操作,但是不太完善,基本还是通过DBeaver等客户端连接Doris进行操作更好!
登录的账号root或admin和你设置的密码,可以简单操作数据库的界面如下:
web.png
到此,Doris集群的3节点混合部署完成!

最后修改时间:2024-07-30 10:04:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论