Skip to content

节点配置

节点配置对于每个节点都是独立的,不会在集群范围中共享。

在 Ignite 3 中,配置文件支持 HOCONJSON 格式。配置文件有一个名为ignite的根节点,所有配置项都是该节点的子节点、孙节点等。

1.检查节点配置

使用命令行工具可以获取节点配置信息:

  • 启动命令行工具并接入节点;
  • 运行node config show命令。

命令行工具会输出完整节点配置,如果只想要部分配置,可以将所需的属性作为命令行参数就可以缩小搜索范围,例如:

shell
node config show ignite.clientConnector

2.调整节点配置

可以使用命令行工具调整节点的配置,做法如下:

  • 启动命令行工具并接入某个节点,该节点会成为后续操作的默认节点;
  • 要更新该节点的配置,运行node config updatenode config update命令并提供新的参数作为命令参数,例如:
    shell
    node config update ignite.clientConnector.connectTimeout=10000
  • 要更新其他节点的配置,需要先明确指定目标节点。例如,对于名为node1的节点:
    shell
    node config update -n node1 ignite.nodeAttributes.nodeAttributes={clientConnector.attribute="10900"}
  • 重启该节点以使配置生效。

3.导出节点配置

使用以下命令可以将节点配置导出为 HOCON 格式的文件:

shell
bin/ignite3 node config show > node-config.conf

4.配置参数

4.1.客户端连接器配置

客户端连接器的参数配置,请参见客户端连接器相关章节的内容。

4.2.计算配置

json
{
  "ignite" : {
    "compute" : {
      "queueMaxSize" : 2147483647,
      "statesLifetimeMillis" : 60000,
      "threadPoolSize" : 10,
      "threadPoolStopTimeoutMillis" : 10000
    }
  }
}
属性默认值描述可修改需要重启可选值
queueMaxSize2147483647队列中的最大计算任务数1 - Integer.MAX_VALUE
statesLifetimeMillis60000作业完成后作业状态的生命周期(毫秒)0 - inf
threadPoolSize10可用于计算作业的线程数1 - Integer.MAX_VALUE
threadPoolStopTimeoutMillis10000作业线程池停止超时(毫秒)1 - inf

4.3.关键线程配置

json
{
  "ignite" : {
    "criticalWorkers" : {
      "livenessCheckInterval" : 200,
      "maxAllowedLag" : 500,
      "nettyThreadsHeartbeatInterval" : 100
    }
  }
}
属性默认值描述可修改需要重启可选值
livenessCheckInterval200关键线程执行的存活检查的间隔(毫秒)1 - inf(不大于 maxAllowedLag 的一半)
maxAllowedLag500从上次心跳到当前时间的最大允许延迟(毫秒),如果超过,则认为关键线程已被阻塞。1 - inf(应至少是 livenessCheckInterval 的两倍)
nettyThreadsHeartbeatInterval100用于更新 Netty 线程心跳时间戳的心跳间隔(毫秒)1 - inf

4.4.代码部署配置

json
{
  "ignite" : {
    "deployment" : {
      "deploymentLocation" : "deployment"
    }
  }
}
属性默认值描述可修改需要重启可选值
deploymentLocationdeployment相对于工作目录的目录名,所有的部署单元都要保存在该位置有效的路径

4.5.网络配置

json
{
  "ignite" : {
    "network" : {
      "fileTransfer" : {
        "chunkSize" : 1048576,
        "maxConcurrentRequests" : 4,
        "responseTimeout" : 10000,
        "threadPoolSize" : 8
      },
      "inbound" : {
        "soBacklog" : 128,
        "soKeepAlive" : true,
        "soLinger" : 0,
        "soReuseAddr" : true,
        "tcpNoDelay" : true
      },
      "listenAddress" : "",
      "membership" : {
        "failurePingInterval" : 1000,
        "membershipSyncInterval" : 30000,
        "scaleCube" : {
          "failurePingRequestMembers" : 3,
          "gossipInterval" : 200,
          "gossipRepeatMult" : 3,
          "membershipSuspicionMultiplier" : 5,
          "metadataTimeout" : 3000
        }
      },
      "nodeFinder" : {
        "netClusterNodes" : [ "localhost:3344" ],
        "type" : "STATIC"
      },
      "outbound" : {
        "soKeepAlive" : true,
        "soLinger" : 0,
        "tcpNoDelay" : true
      },
      "port" : 3344,
      "shutdownQuietPeriod" : 0,
      "shutdownTimeout" : 15000,
      "ssl" : {
        "ciphers" : "",
        "clientAuth" : "none",
        "enabled" : false,
        "keyStore" : {
          "password" : "********",
          "path" : "",
          "type" : "PKCS12"
        },
        "trustStore" : {
          "password" : "********",
          "path" : "",
          "type" : "PKCS12"
        }
      }
    }
  }
}
属性默认值描述可修改需要重启可选值
fileTransfer文件传输配置
fileTransfer.chunkSize1048576区块大小(字节)1 - 1 - Integer.MAX_VALUE
fileTransfer.maxConcurrentRequests4最大并发请求数1 - Integer.MAX_VALUE
fileTransfer.responseTimeout10000文件传输期间的节点响应超时0 - inf
fileTransfer.threadPoolSize8文件发送方线程池大小1 - Integer.MAX_VALUE
inbound服务器套接字配置,具体请参加 TCP套接字的文档
inbound.soBacklog128积压量的大小0 - Integer.MAX_VALUE
inbound.soKeepAlivetrue是否允许保活状态的数据包truefalse
inbound.soLinger0关闭的套接字应延迟多长时间0-65535
inbound.soReuseAddrtrue是否允许地址复用truefalse
inbound.tcpNoDelaytrue是否使用 TCP_NODELAY 选项truefalse
listenAddress要监听的地址(IP或主机名),如果为空则监听所有的地址有效的地址
membership节点成员资格配置
membership.failurePingInterval1000故障检测 ping 间隔0 - inf
membership.membershipSyncInterval30000定期成员数据同步间隔0 - inf
membership.scaleCubeScaleCube 配置
scaleCube.failurePingRequestMembers3为间接 ping 请求随机选择的成员数1 - inf
scaleCube.gossipInterval200Gossip传播间隔1 - inf
scaleCube.gossipRepeatMult3Gossip 重复乘数1 - inf
scaleCube.membershipSuspicionMultiplier5用于计算超时的乘数,超过该值后节点将被视为无效1 - inf
scaleCube.metadataTimeout3000元数据更新操作的超时时间(毫秒)1 - inf
nodeFinder节点在集群中探测其他节点的配置
nodeFinder.netClusterNodes集群中所有节点的地址,采用 host:port 格式有效的地址
nodeFinder.typeSTATIC节点探测器类型当前仅支持STATIC
outbound输出请求的配置
outbound.soKeepAlivetrue是否允许保活状态的数据包truefalse
outbound.soLinger0关闭的套接字应延迟多长时间0-65535
outbound.tcpNoDelaytrue是否使用 TCP_NODELAY 选项truefalse
port3344节点端口有效的端口号
shutdownQuietPeriod0节点关闭期间 Ignite 确保在节点自行关闭之前不提交任何任务的时间段,如果在此期间提交了任务还可以被接受0 - inf
shutdownTimeout15000节点关闭前的最长时间,无论在shutdownQuietPeriod期间是否提交了新的网络消息。0 - inf
ssl.ciphers要启用的密码列表,以逗号分隔。为空表示自动选择密码TLS_AES_256_GCM_SHA384 等(标准密码 ID)
ssl.clientAuthnone是否启用 SSL 客户端身份验证以及是否为强制性身份验证noneoptionalrequire
ssl.enabledfalse是否为节点启用 SSLtruefalse
ssl.keyStoreSSL 密钥库配置
keyStore.password密钥库密码有效的密码
keyStore.path密钥库路径有效的路径
keyStore.typePKCS12密钥库类型PKCS12JKS
ssl.trustStoreSSL 信任库配置
trustStore.password信任库密码有效的密码
trustStore.path信任库路径有效的路径
trustStore.typePKCS12信任库类型PKCS12JKS

4.6.节点属性

json
{
  "ignite" : {
    "nodeAttributes" : {
      "nodeAttributes" : [ ]
    }
  }
}
属性默认值描述可修改需要重启可选值
nodeAttributes用于将数据动态分发到具有指定属性值的节点的节点属性列表。JSON 格式的列表

4.7.Raft配置

json
{
  "ignite" : {
    "raft" : {
      "fsync" : true,
      "logPath" : "",
      "logStripesCount" : 4,
      "logYieldStrategy" : false,
      "responseTimeout" : 3000,
      "retryDelay" : 200,
      "retryTimeout" : 10000,
      "rpcInstallSnapshotTimeout" : 300000,
      "stripes" : 10,
      "volatileRaft" : {
        "logStorage" : {
          "name" : "unlimited"
        }
      }
    }
  }
}
属性默认值描述可修改需要重启可选值
fsynctrue是否使用全同步模式在集群中传输数据。truefalse
logPath存储 Raft 日志的目录。有效路径
logStripesCount4日志管理器的 Disruptor 中的并行度1 - inf
logYieldStrategyfalse如果为 true,则在日志管理器的 Disruptor 中使用非阻塞策略。truefalse
responseTimeout3000Raft 客户端将尝试从远程对等体接收响应的时间段0 - inf
retryDelay200Raft 客户端重新发送失败请求的延迟0 - inf
retryTimeout10000Raft 客户端尝试从远程对等体接收成功响应的时间段0 - inf
installSnapshotTimeout300000允许将 Raft 快照传输给接收方并安装该快照的最长时间1 - inf
volatileRaft.logStorageBudget.nameunlimited节点使用的日志存储名。否,但是新的值仅适用于新的分区unlimitedentry-count

4.8.REST配置

json
{
  "ignite" : {
    "rest" : {
      "dualProtocol" : false,
      "httpToHttpsRedirection" : false,
      "port" : 10300,
      "ssl" : {
        "ciphers" : "",
        "clientAuth" : "none",
        "enabled" : false,
        "keyStore" : {
          "password" : "********",
          "path" : "",
          "type" : "PKCS12"
        },
        "port" : 10400,
        "trustStore" : {
          "password" : "********",
          "path" : "",
          "type" : "PKCS12"
        }
      }
    }
  }
}
属性默认值描述可修改需要重启可选值
dualProtocolfalse端点是否同时使用 HTTPHTTPS 协议。truefalse
httpToHttpsRedirectionfalse是否将 HTTP 端点重定向到 HTTPS 端点。truefalse
port10300节点的 REST 端点的端口。有效的端口
ssl.ciphers显式设置节点 SSL 密码。查看可选值
ssl.clientAuth是否启用 SSL 客户端身份验证以及是否为强制性身份验证。noneoptionalrequire
ssl.enabledfalse是否为节点启用 SSL。truefalse
ssl.keyStoreSSL 密钥库配置
keyStore.password密钥库密码有效的密码
keyStore.path密钥库路径有效的路径
keyStore.typePKCS12密钥库类型PKCS12JKS
ssl.port10400用于 SSL 连接的端口。有效的端口
ssl.trustStoreSSL 信任库配置
trustStore.password信任库密码有效的密码
trustStore.path信任库路径有效的路径
trustStore.typePKCS12信任库类型PKCS12JKS

4.9.快照配置

json
{
  "ignite" : {
    "snapshot" : {
      "threadPoolSize" : 20
    }
  }
}
属性默认值描述可修改需要重启可选值
threadPoolSize20创建或还原快照时Ignite用于IO操作的线程数。1 - Integer.MAX_VALUE

4.10.SQL配置

json
{
  "ignite" : {
    "sql" : {
      "execution" : {
        "threadCount" : 4
      },
      "nodeMemoryQuota" : "60%",
      "planner" : {
        "threadCount" : 4
      }
    }
  }
}
属性默认值描述可修改需要重启可选值
execution.threadCount4用于查询执行的线程数。1 - Integer.MAX_VALUE
nodeMemoryQuota60%节点级用于 SQL 查询的内存限制,具有维度标识符的数字:%:节点堆内存的百分比;k:KB;m:MB;g:GB,带有任何维度标识符的0都会关闭内存配额。0-100%,0-9223372036854775807k/m/g
planner.threadCount4用于查询计划的线程数。1 - Integer.MAX_VALUE

4.11.存储配置

Ignite 的持久化追求读写的高性能。使用持久化时,Ignite 将所有数据存储在磁盘上,并将尽可能多的数据加载到内存中进行处理。Ignite 会将每个分区存储在磁盘上的单独文件中,除了数据分区之外,Ignite 还存储索引和元数据。

每个 Ignite 存储引擎可以有多个存储配置。

检查点是将脏页从内存复制到磁盘上分区文件的过程。脏页是在内存中更新但未写入相应分区文件的页。检查点完成后,所有更改都将保存到磁盘上,并在节点故障并重启时仍然可用。检查点旨在确保数据的持久性并在节点发生故障时进行恢复。此过程通过使磁盘上的页面保持最新状态,能更高效地利用磁盘空间。

json
{
  "ignite" : {
    "storage" : {
      "engines" : {
        "aimem" : {
          "pageSize" : 16384
        },
        "aipersist" : {
          "checkpoint" : {
            "checkpointDelayMillis" : 200,
            "checkpointThreads" : 4,
            "compactionThreads" : 4,
            "frequency" : 180000,
            "frequencyDeviation" : 40,
            "logReadLockThresholdTimeout" : 0,
            "readLockTimeout" : 10000,
            "useAsyncFileIoFactory" : true
          },
          "pageSize" : 16384
        },
        "rocksdb" : {
          "flushDelayMillis" : 100
        },
      "profiles" : [ {
        "engine" : "aipersist",
        "name" : "default",
        "replacementMode" : "CLOCK",
        "size" : 268435456
      },
      {
        "engine" : "aimem",
        "name" : "default_aimem",
        "emptyPagesPoolSize" : 100,
        "eviction" : {
          "batchSize" : 200,
          "interval" : 60000,
          "lwmThreshold" : 1000,
          "lwmUpdateInterval" : 60000,
          "mode" : "DISABLED",
          "threshold" : "90%"
        },
        "initSize" : 268435456,
        "maxSize" : 268435456
      },
      {
        "engine" : "rocksdb",
        "name" : "default_rocksdb",
        "size" : 268435456,
        "writeBufferSize" : 67108864
      } ]
    }
  }
}
属性默认值描述可修改需要重启可选值
engines.aimem内存存储配置
aimem.pageSize16384内存存储的页面大小(字节)。1024-16384
engines.aipersist原生存储配置
aipersist.checkpoint.checkpointDelayMillis200在收到命令后启动检查点之前的延迟。0 - inf
aipersist.checkpoint.checkpointThreads4用于检查点的线程数。1 - inf
aipersist.checkpoint.compactionThreads4用于数据压缩的线程数。1 - inf
aipersist.checkpoint.interval180000检查点之间的间隔(毫秒)。0 - inf
aipersist.checkpoint.intervalDeviation40从下一个计划检查点之前的时间段中添加或减去的抖动(百分比)。0 - 100
aipersist.checkpoint.logReadLockThresholdTimeout0记录长读锁定的阈值(毫秒)。0 - inf
aipersist.checkpoint.readLockTimeout10000检查点读取锁获取的超时时间(毫秒)。0 - inf
aipersist.checkpoint.useAsyncFileIoFactorytrueIgnite 是否使用异步文件 I/O 操作程序。truefalse
aipersist.pageSize16384原生存储的页面的大小(字节)。不适用1024-16384
engines.rocksdbRocksDB 存储配置
rocksdb.flushDelayMillis100执行 Raft 触发的刷新之前的延迟。引擎注册时刷新0 - inf
profiles可用存储配置的列表。
engine存储引擎。不适用aimemaipersistrocksdb
name用户定义的配置名。不适用有效的名字
replacementModeCLOCK页面替换算法。CLOCKRANDOM_LRUSEGMENTED_LRU
size268435456内存区的大小(字节)。最小268435456,最大由操作系统的可寻址内存限制定义
aipersist.size268435456堆外内存区的大小(字节)。最小268435456,最大由操作系统的可寻址内存限制定义
aipersist.replacementModeCLOCK页面替换算法。CLOCKRANDOM_LRUSEGMENTED_LRU
aimem.initSize268435456初始内存区大小(字节),超过该值后,会申请新的内存块。最小256MB,最大由操作系统的可寻址内存限制定义
aimem.maxSize268435456最大内存区大小(字节)。最小256MB,最大由操作系统的可寻址内存限制定义
aimem.eviction.modeDISABLED退出模式。DISABLEDHISTORY_ONLYRANDOM
aimem.eviction.threshold90%发起退出的阈值。具有维度标识符的数字:%aimem.maxSize的百分比;k:KB;m:MB;g:GB,例如,90%指只有在90%的数据区被占用后,页面内存才会开始退出。不适用0-100%,0-9223372036854775807k/m/g
aimem.eviction.lwmUpdateInterval60000低水位线更新频率(毫秒)。1 - inf
aimem.eviction.interval60000数据退出迭代的间隔(毫秒)。1 - inf
aimem.eviction.lwmThreshold1000如果低水位线低于当前时间戳的evictionLwmThreshold,则触发行退出。0 - inf
aimem.eviction.batchSize60000数据退出每批次的行数。1 - inf
rocksdb.size268435456RocksDB 的堆外缓冲区大小(字节)。最小值为0,最大由操作系统的可寻址内存限制定义
rocksdb.writeBufferSize67108864RocksDB 的写缓冲区大小(字节)。最小值为1,最大由操作系统的可寻址内存限制定义

5.系统配置

本章节介绍 Ignite 的内部属性。虽然也可以像编辑所有其他属性一样编辑这些属性,即使用命令行工具的node config update命令,但建议开发者慎重修改。这些属性可以适用某个节点(见下文),也可以适用整个集群

提示

注意,属性名为驼峰式。

json
{
  "ignite" : {
    "system" : {
      "cmgPath" : "",
      "metastoragePath" : "",
      "partitionsBasePath" : "",
      "partitionsLogPath" : "",
      "properties":[]
    }
  }
}
属性默认值描述可修改需要重启可选值
system.cmgPath集群管理组信息的存储路径。仅当节点是 CMG 的一部分时适用。数据默认存储在{IGNITE_HOME}/work/cmg,建议仅在空节点上更改此路径。有效的绝对路径。
system.metastoragePath集群元信息的存储路径。仅当节点是元存储组的一部分时适用。数据默认存储在{IGNITE_HOME}/work/metastorage,建议仅在空节点上更改此路径。有效的绝对路径。
system.partitionsBasePath数据分区的存储路径。分区默认存储在{IGNITE_HOME}/work/partitions。建议仅在空节点上更改此路径。有效的绝对路径。
system.partitionsLogPath数据分区的 Raft 日志存储路径。分区默认存储在{system.partitionsBasePath}/log,建议仅在空节点上更改此路径。有效的绝对路径。
system.propertiesIgnite 组件使用的系统属性。属性数组。

18624049226