在Docker中启动集群
本章节将介绍使用 Docker 配置和运行 Ignite 3 集群的过程,按照以下步骤快速启动并运行三节点集群。
1.前提条件
- 系统上安装了最新的 Docker 和 Docker Compose;
- 熟悉基本的命令行操作;
- 熟悉的代码编辑器(VS Code、IntelliJ IDEA 等)。
2.第 1 步:创建 Docker Compose 配置
- 在工程目录中创建名为
docker-compose.yml的文件:ymlname: ignite3 x-ignite-def: &ignite-def image: apacheignite/ignite:3.1.0 environment: JVM_MAX_MEM: "4g" JVM_MIN_MEM: "4g" configs: - source: node_config target: /opt/ignite/etc/ignite-config.conf mode: 0644 services: node1: <<: *ignite-def command: --node-name node1 ports: - "10300:10300" - "10800:10800" node2: <<: *ignite-def command: --node-name node2 ports: - "10301:10300" - "10801:10800" node3: <<: *ignite-def command: --node-name node3 ports: - "10302:10300" - "10802:10800" configs: node_config: content: | ignite { network { port: 3344 nodeFinder.netClusterNodes = ["node1:3344", "node2:3344", "node3:3344"] } }
3.第 2 步:启动 Ignite 集群
- 打开终端,转到
docker-compose.yml文件所在的目录; - 运行以下命令启动集群:shell
docker compose up -d - 验证所有容器是否都在运行:shell命令输出大致如下:
docker compose psNAME IMAGE COMMAND SERVICE CREATED STATUS PORTS ignite3-node1-1 apacheignite/ignite:3.1.0 "docker-entrypoint.s…" node1 13 seconds ago Up 10 seconds 0.0.0.0:10300->10300/tcp, 3344/tcp, 0.0.0.0:10800->10800/tcp ignite3-node2-1 apacheignite/ignite:3.1.0 "docker-entrypoint.s…" node2 13 seconds ago Up 10 seconds 3344/tcp, 0.0.0.0:10301->10300/tcp, 0.0.0.0:10801->10800/tcp ignite3-node3-1 apacheignite/ignite:3.1.0 "docker-entrypoint.s…" node3 13 seconds ago Up 10 seconds 3344/tcp, 0.0.0.0:10302->10300/tcp, 0.0.0.0:10802->10800/tcp
现在各个节点正在运行,但集群尚未初始化。
4.步骤 3:初始化集群
- 在 Docker 中启动Ignite的命令行终端:shell
docker run --rm -it --network=host -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 apacheignite/ignite:3.1.0 cli - 在命令行中,接入其中一个节点:shell
connect http://localhost:10300 - 在命令行工具中确认接入节点成功;
- 初始化集群:shell
cluster init --name=ignite3
此步骤的输出大致如下:
# ___ __
### / | ____ ____ _ _____ / /_ ___
# ##### / /| | / __ \ / __ `// ___// __ \ / _ \
### ###### / ___ | / /_/ // /_/ // /__ / / / // ___/
##### ####### /_/ |_|/ .___/ \__,_/ \___//_/ /_/ \___/
####### ###### /_/
######## #### ____ _ __ _____
# ######## ## / _/____ _ ____ (_)/ /_ ___ |__ /
#### ####### # / / / __ `// __ \ / // __// _ \ /_ <
##### ##### _/ / / /_/ // / / // // /_ / ___/ ___/ /
#### ## /___/ \__, //_/ /_//_/ \__/ \___/ /____/
## /____/
Apache Ignite CLI version 3.1.0
You appear to have not connected to any node yet. Do you want to connect to the default node http://localhost:10300? [Y/n] y
Connected to http://localhost:10300
The cluster is not initialized. Run cluster init command to initialize it.
[node1]> cluster init --name=ignite3
Cluster was initialized successfully5.第 4 步:验证集群
使用
cluster status命令验证集群是否正常运行。shellcluster status输出大致如下:
[name: ignite3, nodes: 3, status: active, cmgNodes: [node1, node2, node3], msNodes: [node1, node2, node3]]这意味着所有 3 个节点都找到了彼此并形成了一个激活的集群。
2.输入exit或按 Ctrl+D 退出命令行工具,这也将停止命令行容器。
这时一个本地的 Apache Ignite 3 集群就部署成功了,可用于开发。
6.了解端口配置
Docker Compose 文件为每个节点开放了两种类型的端口:
10300-10302:用于管理操作的 REST API 端口;10800-10802:应用程序的客户端连接端口。
7.停止集群
如果要暂停集群,请执行以下命令:
shell
docker compose stop
[+] Stopping 3/3
✔ Container ignite3-node1-1 Stopped
✔ Container ignite3-node2-1 Stopped
✔ Container ignite3-node3-1 Stopped这将停止容器并保留数据。
8.删除集群
集群用完后,可以使用以下方法将其删除:
shell
docker compose down
[+] Running 4/4
✔ Container ignite3-node3-1 Removed
✔ Container ignite3-node2-1 Removed
✔ Container ignite3-node1-1 Removed
✔ Network ignite3_default Removed这将停止并移除所有容器,除非配置了持久化存储,否则数据将丢失。
18624049226
