Skip to content

在Docker中启动集群

本章节将介绍使用 Docker 配置和运行 Ignite 3 集群的过程,按照以下步骤快速启动并运行三节点集群。

1.前提条件

  • 系统上安装了最新的 Docker 和 Docker Compose;
  • 熟悉基本的命令行操作;
  • 熟悉的代码编辑器(VS Code、IntelliJ IDEA 等)。

2.第 1 步:创建 Docker Compose 配置

  1. 在工程目录中创建名为docker-compose.yml的文件:
    yml
    name: 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 集群

  1. 打开终端,转到docker-compose.yml文件所在的目录;
  2. 运行以下命令启动集群:
    shell
    docker compose up -d
  3. 验证所有容器是否都在运行:
    shell
    docker compose ps
    命令输出大致如下:
    NAME              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:初始化集群

  1. 在 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
  2. 在命令行中,接入其中一个节点:
    shell
    connect http://localhost:10300
  3. 在命令行工具中确认接入节点成功;
  4. 初始化集群:
    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 successfully

5.第 4 步:验证集群

  1. 使用cluster status命令验证集群是否正常运行。

    shell
    cluster 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