YugabyteDB分布式数据库部署

注:不要在aarch64上面部署,我尝试了一个下午无法成功

一、搭建内网

我推荐 https://github.com/gravitl/netmaker 这个项目,这个项目能够将多个主机连接到一起组成一个内网,并且可以当作代理使用,很方便

二、ufw防火墙

因为服务器是有安全组的,所以我直接使用防火墙对对应的端口进行管理,没有开放的端口直接通过安全组管理

  • 我们需要开放的端口如下
    • 5433:应用程序连接用的SQL端口(对外)
    • 15433:集群监控Web UI端口(对外)
    • 7100:节点间内部通信
    • 9000:内部指标交换

2.1 重置防火墙:

sudo ufw --force reset

2.2 设置默认策略:允许所有入站,允许所有出站

sudo ufw default allow incoming
sudo ufw default allow outgoing

2.3 允许内网访问内部端口

对每一个节点运行以下代码,允许其他节点访问

sudo ufw allow from <内网ip> to any port 7100
sudo ufw allow from <内网ip> to any port 9000

2.4 拒绝外网访问内部端口(显式拒绝)

sudo ufw deny 7100
sudo ufw deny 9000

2.5 启用并查看状态

sudo ufw enable
sudo ufw status verbose

三、YugabyteDB 安装部署

3.1 下载安装

cd /opt
wget https://software.yugabyte.com/releases/2025.2.0.1/yugabyte-2025.2.0.1-b1-linux-x86_64.tar.gz
tar xvfz yugabyte-2025.2.0.1-b1-linux-x86_64.tar.gz
ln -s yugabyte-2025.2.0.1 yugabyte
cd yugabyte && ./bin/post_install.sh

3.2 环境配置

cat >> /etc/profile << 'EOF'
export YB_HOME=/opt/yugabyte
export PATH=$YB_HOME/bin:$PATH
EOF
source /etc/profile
mkdir -p /data/yugabyte

四、启动集群

4.1 主要节点

./bin/yugabyted start \
    --advertise_address=<本机ip> \
    --base_dir=/data/yugabyte \
    --cloud_location=dc1.rack1.node1 \
    --fault_tolerance=zone \
    --tserver_flags="ysql_enable_auth=false" \
    --master_flags="replication_factor=2"

4.2 从节点

./bin/yugabyted start \
    --advertise_address=<本机ip> \
    --base_dir=/data/yugabyte \
    --cloud_location=dc1.rack1.node2 \
    --join=<主机ip> \
    --fault_tolerance=zone