# 沙箱环境

> 用于学习和测试的 4 节点环境
---

Pigsty 有一个沙盒，这是一个具有固定 IP 地址和其他标识符的 4 节点部署。

我们将使用它作为学习和测试目的的标准演示环境。

![pigsty-sandbox.jpg](/img/pigsty/sandbox.jpg)

--------

## 描述 {#description}

沙盒由具有固定 IP 地址和身份的 4 个节点组成：

| ID |     IP 地址     | [NODE](/zh/docs/node) | [PGSQL](/zh/docs/pgsql) | [INFRA](/zh/docs/infra) | [**ETCD**](/zh/docs/etcd) | [**MINIO**](/zh/docs/minio) |
|:--:|:-------------:|:----------------:|:------------------:|:------------------:|:--------------------:|:-----------------------|
| 1  | `10.10.10.10` |      `meta`      |    `pg-meta-1`     |     `infra-1`      |       `etcd-1`       | `minio-1`              |
| 2  | `10.10.10.11` |     `node-1`     |    `pg-test-1`     |                    |                      |                        |
| 3  | `10.10.10.12` |     `node-2`     |    `pg-test-1`     |                    |                      |                        |
| 4  | `10.10.10.13` |     `node-3`     |    `pg-test-1`     |                    |                      |                        |

在 `meta` 节点上有一个主要的单例 PostgreSQL 集群：`pg-meta`，
它可以独立使用，还有一个可选的 L2 VIP `10.10.10.2` 和集群 DNS `pg-meta` 绑定到它。

```bash
10.10.10.10 meta pg-meta-1
10.10.10.2  pg-meta
```

沙盒中还有三个额外的节点，组成一个 3 实例的 PostgreSQL HA 集群 `pg-test`。
有一个可选的 L2 VIP `10.10.10.3` 和集群 DNS `pg-test` 绑定到集群领导者。

```bash
10.10.10.11 node-1 pg-test-1
10.10.10.12 node-2 pg-test-2
10.10.10.13 node-3 pg-test-3
10.10.10.3  pg-test
```

在 `meta` 节点上还有一个 1 节点的 `etcd` 集群和 1 节点的 `minio` 集群。

```bash
10.10.10.10 minio-1
10.10.10.10 etcd-1
```

------

## 实现 {#implementation}

您可以使用 [Vagrant](/zh/docs/prepare/vagrant) 创建本地沙盒，或使用 [Terraform](/zh/docs/prepare/terraform) 创建云沙盒。

要使用本地 vagrant 模板：

```bash
make full9     # 使用 RockyLinux 9 创建 4 节点沙盒
make full12     # 使用 Debian 12 创建 4 节点沙盒
make full24     # 使用 Ubuntu 24.04 创建 4 节点沙盒
```

要使用云 terraform 模板，请使用 [spec/aliyun-full.tf](https://github.com/pgsty/pigsty/blob/v3.7.0/terraform/spec/aliyun-full.tf) 作为示例，
阿里云 4 节点沙盒模板适用于所有发行版和 amd/arm。

```bash
make tu     # terraform up
make td     # terraform destroy
make tssh   # 将 ssh 别名写入 ~/.ssh/pigsty_config
```
