惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Visual Studio Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
L
LangChain Blog
Cyberwarzone
Cyberwarzone
美团技术团队
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
V
V2EX
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
人人都是产品经理
人人都是产品经理
F
Full Disclosure
V2EX - 技术
V2EX - 技术
The Cloudflare Blog
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
S
Security @ Cisco Blogs
Spread Privacy
Spread Privacy
Project Zero
Project Zero
K
Kaspersky official blog
MyScale Blog
MyScale Blog
Attack and Defense Labs
Attack and Defense Labs
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Webroot Blog
Webroot Blog
罗磊的独立博客
Vercel News
Vercel News
N
News and Events Feed by Topic
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes

博客园 - 小得盈满

Hudi 时间旅行与增量查询的区别分析 NATS 的基本安装及使用 Doris 和 StarRocks 性能测试对比 ClickHouse 添加磁盘扩容存储 使用 Docker 部署 Elasticsearch 集群 Qdrant 单机和集群的安装方法 ClickHouse UDF 的基本用法 StarRocks 容器镜像构建 Kafka 线上性能调优 Kafka 的分片和副本机制 Flink 自定义 ClickHouse Table Connector 的简单实现 Redis 性能优化实战 记一次 Go 调用系统命令出现的问题分析 APISIX proxy-cache 插件用法 etcd 历史版本回溯的方法 APISIX 简单的自定义插件开发步骤 Kafka 集群副本数量调整 使用 Docker Compose 安装 APISIX etcd 集群安装 Consul 集群安装
StarRocks 集群安装
小得盈满 · 2024-04-15 · via 博客园 - 小得盈满

当前按照官网上的提供的安装包方式安装,版本是 3.2.2,部署模式为存算一体,安装的操作系统是 Ubuntu 22.04,JDK 版本为 OpenJDK 11,这里选择 3 个节点进行安装,节点的 hosts 定义如下:

10.0.1.25 ec25
10.0.1.26 ec26
10.0.1.27 ec27

由于 StarRocks 安装包比较大,所以选择在每个节点上都单独解压,否则发送解压后读文件速度比较慢:

# 每个机器上分别解压
tar -xvzf StarRocks-3.2.2.tar.gz -C /opt
cd /opt/StarRocks-3.2.2

解压后的目录中除了两个 txt 的文件外有 3 个目录,分别是 febeapache_hdfs_broker ,其中 fe 是 FE 角色相关的程序,be 是 BE 角色相关的程序,apache_hdfs_broker 是 Broker 节点的相关的程序,主要用于对接 HDFS 或 S3 等外部存储数据源,不过从 StarRocks 2.5 版本起不需要手动部署 Broker 节点,StarRocks 本身已经集成了这部分功能。

我们计划将 3 个 FE 和 3 个 BE 在 3 个节点上混合部署,不过我们首先启动其中 1 个 FE,等集群整体组件完毕再加入另外 2 个 FE 从而实现高可用的功能。

安装 FE 服务

在所有节点提前创建 FE 元数据目录:

# 建议为 StarRocks 分配独立的外部挂载
mkdir -p /data/starrocks/meta

然后我们修改 FE 的配置文件 fe/conf/fe.conf 主要修改下面的一些配置:

meta_dir = /data/starrocks/meta

http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true

priority_networks = 10.0.1.0/24

meta_dir 配置 FE 的元数据目录。

然后是端口号部分的设置,我们这里都使用了默认值:

  1. http_port 是 FE 对外提供的 HTTP 端口,默认是 8030
  2. rpc_port 是 FE 对外提供的 Thrift 端口,默认是 9020
  3. query_port 是 FE 对外提供的查询端口,可以使用 MySQL 客户端连接,默认是 9030
  4. edit_log_port 是多个 FE 之间组建高可用集群使用的通信端口,默认是 9010

priority_networks 配置集群所在的网络,格式是 CIDR 描述,如果我们使用主机名(FQDN)访问,则不需要配置这个项,我们这里计划使用 IP 地址访问,所以需要设置一下这个配置。

如果我们系统上有多个 JDK,那么可以单独指定我们要使用的 JAVA_HOME ,例如:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

因为我们全局只有一个 JDK 并且在 /etc/profile 中设置了 JAVA_HOME 环境变量,所以这里就不需要再配置了。

基本的配置就是上面这些,我们修改完成后保存配置,然后注意将配置文件同步到其他节点,用的时候就不用再修改了。

然后我们可以启动 FE 服务,现在是只在第 1 个节点上执行:

./fe/bin/start_fe.sh --daemon
# 如果是使用主机名访问,那么需要指定 --host_type
./fe/bin/start_fe.sh --host_type FQDN --daemon

然后我们查看日志确保启动成功即可。

安装 BE 服务

在所有节点都创建 BE 数据目录:

mkdir -p /data/starrocks/storage

然后修改配置文件 be/conf/be.conf 主要内容如下:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

be_port = 9060
be_http_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
starlet_port = 9070
priority_networks = 10.0.1.0/24
storage_root_path = /data/starrocks/storage

首先是建议为 BE 指定 JAVA_HOME,因为 BE 不会自动搜索系统的 JDK,需要手动配置一下,否则将无法使用 JNI 相关的调用。

然后端口号的配置我们同样保持默认:

  1. be_port 是 BE 对外提供的 Thrift 端口,默认是 9060
  2. be_http_port 是 BE 对外提供的 HTTP 端口,默认是 8040
  3. heartbeat_service_port 是 BE 之间心跳服务的端口,默认是 9050
  4. brpc_port 是 BE 对外提供的 bRPC 端口,默认是 8060
  5. starlet_port 是存算分离集群用于心跳的端口,默认是 9070

然后 priority_networks 仍然是和 FE 一样,由于使用 IP 访问所以需要配置一下,如果使用主机名则不需要配置。

最后 storage_root_path 配置 BE 的数据目录。

基本配置就上面这些,配置完成后保存,然后同步到其他的节点。

然后在所有节点都启动 BE 服务:

./be/bin/start_be.sh --daemon

这里和 FE 不太一样的地方是如果要使用主机名访问不需要指定 --host_type ,但是要确保 hosts 配置正确即可。

启动之后查看日志确保启动成功,3 个节点都启动后会自动组成 BE 高可用集群。

我们在第一个节点上使用 MySQL 客户端连接:

mysql -h127.0.0.1 -P9030 -uroot --prompt='StarRocks > '

默认 root 用户不需要密码,我们连接上去之后查看 FE 状态:

SHOW PROC '/frontends'\G

当前 FE 只有 1 个就是当前的节点,然后查看 BE 状态:

SHOW PROC '/backends'\G

这里 BE 应该为空,我们需要手动添加 BE 节点:

-- 注意端口使用 heartbeat_service_port 配置的端口
ALTER SYSTEM ADD BACKEND "10.0.1.25:9050", "10.0.1.26:9050", "10.0.1.27:9050";

然后再次查看 BE 的状态:

SHOW PROC '/backends'\G

现在就可以看到 3 个 BE 节点了。

配置 FE 高可用

首先在第一个节点添加 FE 节点:

ALTER SYSTEM ADD FOLLOWER "10.0.1.26:9010";
ALTER SYSTEM ADD FOLLOWER "10.0.1.27:9010";

注意这里只能一行添加 1 个 FE,不能添加多个,端口使用的是 FE 中配置的 edit_log_port,添加后查看状态 active 和 join 应该都是 false,然后我们要启动另外两个节点的 FE 服务:

# 添加 --helper 参数指定 Leader FE
fe/bin/start_fe.sh --helper 10.0.1.25:9010 --daemon

启动之后再查看 FE 的状态就正常了,这样 FE 集群就具备了高可用的能力。

如果之前不小心启动了其他节点的 FE,那么再次启动加入集群时可能会报错如下:

weren't! UNEXPECTED_STATE: Unexpected internal state, may have side effects.

这个原因就是启动的时候 FE 会生成元数据,由于加入 FE 集群会重新生成新的元数据,所以数据出现了冲突,遇到这个问题只需要清空报错节点的元数据目录,再次添加 --helper 参数启动即可。

另外停止服务可以执行:

./fe/bin/stop_fe.sh --daemon
./be/bin/stop_be.sh --daemon

最后由于 root 用户默认没有密码,为了安全需要设置 root 用户密码:

SET PASSWORD = PASSWORD('<password>')

设置后再次登录就需要输入密码了,这个密码和 FE 的 HTTP 访问密码都是相同的,建议生产环境为数据库单独分配用户。

Reference:

  1. https://docs.starrocks.io/zh/docs/deployment/deploy_manually/