Nakama Server,服务器配置

2021-05-27 19:10:53 浏览数 (1)

YAML 配置文件配置 Nakama 服务器运行方式的许多方面。您可以在不指定配置文件的情况下运行 Nakama(而是依赖默认设置)。

指定配置文件

您可以在运行时使用 --config 标志指定配置文件。

代码语言:javascript复制
nakama --config my-special-config.yml

如果您通过 Docker-Compose 运行 Nakama,则需要在计算机中绑定一个文件夹,以便该文件夹在 Docker 中可用。请遵循本指南来设置文件夹绑定。

服务器端口

Nakama 是一个非常灵活的系统。你可以通过 gRPC, HTTP, Websockets 和 rUDP 与服务器交换数据。由于这种灵活性,Nakama 需要 4 个端口可用来绑定:

  • HTTP API 服务器位于端口 7350 上。可以在配置中更改端口。
  • HTTP API 服务器在端口 7351 上为嵌入式开发人员控制台提供动力。可以在配置中更改端口。
  • gRPC API 服务器位于端口 7349 上。端口是根据 API 服务器端口选择的。
  • 嵌入式控制台的 gRPC API 服务器位于端口 7348 上。端口是根据 API 服务器端口选择的。

我们将在未来的版本中减少端口要求。

公共属性

在大多数环境中,都有一些配置属性需要更改。完整的配置列表在页面底部。

代码语言:javascript复制
Nakama 节点名称(必须唯一)- 默认为 nakama。

"生产设置" 在将 Nakama 部署到实时生产环境之前,必须更改 socket.server_keysession.encryption_keyruntime.http_key 的值。

服务器配置

Nakama 具有各种配置选项,以使其尽可能灵活地适用于各种用例和部署环境。

Nakama 为所有配置选项提供了健全的默认值,因此您只需要覆盖选项的子集。您还可以设置自己的配置文件,并通过命令行标志覆盖配置文件中的值。例如,要覆盖运行时路径:

代码语言:javascript复制
nakama --runtime.path /tmp/my-modules

如果字段没有指定,将使用默认值。有关如何重写标志的更多信息,请参阅服务器命令行页面。

"覆盖配置" 可以从配置文件中将每个配置选项设置为命令行标志,也可以将两者都设置为命令行参数优先,并且命令行参数将覆盖配置值。

参数

Flag

描述

name

name

Nakama 节点名称(必须唯一)- 默认为 nakama。日志文件中也使用该名称。

data_dir

data_dir

Nakama 将在其中存储数据(包括日志)的可写文件夹的绝对路径。默认值为启动 Nakama 的工作目录。

shutdown_grace_sec

shutdown_grace_sec

关闭服务器之前等待服务器完成工作的最大秒数。如果为 0,则服务器在收到终止信号时将立即关闭。默认值为 0。

集群(Cluster)

本节将配置节点应该如何相互连接以形成集群。

"仅 Nakama 企业版":以下配置选项仅在 Nakama 服务器的 Nakama 企业版本中可用

代码语言:javascript复制
Nakama 旨在作为高可用性集群在生产中运行。如果您正在运行 Nakama Enterprise,则可以在开发计算机上本地启动集群。在生产中,您可以使用 [Nakama Enterprise](https://heroiclabs.com/nakama-enterprise) 或我们的[托管云服务](https://heroiclabs.com/managed-cloud)。

参数

Flag

描述

gossip_bindaddr

cluster.gossip_bindaddr

绑定 Nakama 进行发现的接口地址。默认情况下,在所有接口上侦听。

gossip_bindport

cluster.gossip_bindport

绑定 Nakama 进行发现的端口号。默认值为 7352

join

cluster.join

要连接的其他 Nakama 节点的主机名和端口的列表。

max_message_size_bytes

cluster.max_message_size_bytes

每个消息允许在 Nakama 节点之间发送的最大字节数。默认值是 4194304。

rpc_port

cluster.rpc_port

用于在 Nakama 节点之间发送数据的端口号。默认值是 7353。

控制台(Console)

本节定义了与嵌入式开发人员控制台相关的配置。

参数

Flag

描述

address

console.address

用于侦听控制台流量的接口的IP地址。默认监听所有可用的地址/接口。

max_message_size_bytes

console.max_message_size_bytes

每条消息允许从客户端 socket 读取的最大字节数。

idle_timeout_ms

console.idle_timeout_ms

启用 keep-alive 时等待下一个请求的最大时间(以毫秒为单位)。

password

console.password

嵌入式控制台的密码。默认设置是“password”。

port

console.port

用于接收嵌入式控制台的连接的端口,监听所有接口。默认值是7351。

read_timeout_ms

console.read_timeout_ms

读取整个请求的最长时间(以毫秒为单位)。

signing_key

console.signing_key

用于对控制台会话令牌签名的 key。

token_expiry_sec

console.token_expiry_sec

令牌几秒内到期。默认的 86400。

username

console.username

嵌入式控制台的用户名。默认设置是 “admin”。

write_timeout_ms

console.write_timeout_ms

超时写入响应之前的最大持续时间(以毫秒为单位)。

数据库(Database)

Nakama 需要一个可用的 CockroachDB 服务器实例。Nakama 在 CockroachDB 数据库中创建并管理自己的名为 Nakama 的数据库。

参数

Flag

描述

address

database.address

要连接的数据库节点列表。它应该遵循 username:password@address:port/dbname 的形式( postgres:// 协议自动附加到路径)。默认为 root@localhost:26257。

conn_max_lifetime_ms

database.conn_max_lifetime_ms

在连接被终止和创建新连接之前重用数据库连接的时间(以毫秒为单位)。默认值为0(不定值 indefinite)。

max_idle_conns

database.max_idle_conns

允许打开但未使用的数据库连接的最大数量。默认值为100。

max_open_conns

database.max_open_conns

允许打开数据库连接的最大数量。默认值为 0(no limit 无限制)。

"数据库地址":您可以通过命令传递多个数据库地址给 Nakama,如:

代码语言:javascript复制
	    nakama --database.address "root@db1:26257" --database.address "root@db2:26257"

排行榜(Leaderboard)

您可以更改与排行榜和比赛系统相关的配置选项。

参数

Flag

描述

blacklist_rank_cache

leaderboard.blacklist_rank_cache

禁用与排行榜名称匹配的排行榜的等级缓存。

callback_queue_size

leaderboard.callback_queue_size

排序终止(expiry)/重置(reset)/结束(end)调用的排行榜和比赛回调队列的大小。默认 65536。

callback_queue_workers

leaderboard.callback_queue_workers

用于并发处理排行榜和比赛回调的 worker 数。默认的8。

"禁用等级缓存":要完全禁用等级缓存,请使用 *,否则留空以启用等级缓存。

日志(Logger)

Nakama以JSON格式生成日志,因此各种系统可以与这些日志进行交互。默认情况下,它们被写入标准输出(控制台)。

参数

Flag

描述

compress

logger.compress

这决定了是否应该使用 gzip 压缩已旋转的日志文件。

file

logger.file

将输出记录到文件中(如果设置了“stdout”)。确保目录和文件是可写的。

format

logger.format

设置日志输出格式。可以是'JSON' 或 'Stackdriver'。默认是 'JSON'。

level

logger.level

产生的最小日志级别。值是debug,info,warn 和 error。默认值为 info。

local_time

logger.local_time

这可以确定格式化备份文件中的时间戳所用的时间是否为计算机的本地时间。默认为使用 UTC 时间。

max_age

logger.max_age

根据文件名中编码的时间戳保留旧日志文件的最大天数。默认情况下不根据年龄删除旧日志文件。

max_backups

logger.max_backups

要保留的旧日志文件的最大数量。默认情况下是保留所有旧的日志文件(尽管 max_age 可能仍然会导致它们被删除)。

max_size

logger.max_size

在日志文件被旋转之前,以兆字节为单位的最大大小。它默认为 100 兆字节。默认是 100。

rotation

logger.rotation

旋转日志文件。默认是 false。

stdout

logger.stdout

将日志重定向到控制台标准输出。日志文件将不再使用。默认为 true。

无论 logger.stdout 字段的值如何,标准的启动日志消息将始终打印到控制台。

Match

可以更改与授权多人游戏运行时相关的配置选项。

参数

Flag

描述

call_queue_size

match.call_queue_size

authoritative match 缓冲区的大小,顺序调用以匹配处理程序回调以确保不重叠。默认的128。

deferred_queue_size

match.deferred_queue_size

authoritative match 缓冲区的大小,用于保存延迟的消息广播,直到每个循环执行结束为止。默认值 128。

input_queue_size

match.input_queue_size

存储客户端消息的 authoritative match 缓冲区的大小,直到下一个 tick 可以处理它们为止。默认值 128。

join_attempt_queue_size

match.join_attempt_queue_size

authoritative match 缓冲区的大小,该缓冲区限制正在进行的连接尝试的次数。默认值 128。

join_marker_deadline_ms

match.join_marker_deadline_ms

客户端 authoritative match 联接的最后期限(以毫秒为单位)将等待匹配处理程序确认联接。默认值 5000。

max_empty_sec

match.max_empty_sec

authoritative matches 被停止之前允许为空的最大连续秒数。0 表示没有最大值。默认值 0。

指标(Metrics)

Nakama 会生成指标信息。此信息可以导出到 Stackdriver 或 Prometheus。

参数

Flag

描述

namespace

metrics.namespace

Prometheus 的命名空间或 Stackdriver 度量的前缀。它将始终前置节点名。默认值为空。

prometheus_port

metrics.prometheus_port

Port 暴露 Prometheus,默认值为 “0”,该值禁止 Prometheus 导出。

reporting_freq_sec

metrics.reporting_freq_sec

指标输出的频率。默认为60秒。

stackdriver_projectid

metrics.stackdriver_projectid

这是服务器要将统计数据上传到的 Stackdriver 项目的标识符。设置此选项可使指标标准导出到 Stackdriver。

确保指标输出受到保护,因为它们包含敏感的服务器信息。

运行时(Runtime)

与基于 lua 的运行时引擎相关的选项。

参数

Flag

描述

call_stack_size

runtime.call_stack_size

每个运行时实例的调用堆栈的大小。默认的128。

env

runtime.env

作为环境变量公开给运行时脚本的 Key-Value 属性列表。

event_queue_size

runtime.event_queue_size

事件队列缓冲区的大小。默认值 65536。

event_queue_workers

runtime.event_queue_workers

用于事件的并行处理的 worker 数。默认值 8。

http_key

runtime.http_key

用于验证 HTTP 运行时调用的密钥。默认值为 defaultkey。

max_count

runtime.max_count

要分配的最大运行时实例数。默认值 256。

min_count

runtime.min_count

要分配的最小运行时实例数。默认值 16。

path

runtime.path

服务器在启动时扫描和加载的模块的路径。默认值为 data_dir/modules。

registry_size

runtime.registry_size

每个运行时实例的注册表的大小。默认值 512

"重要":您必须先更改 http_key,然后才能使用您的应用程序!

"Runtime env value":运行时环境是一个 key-value 对。它们之间用 = 字符分隔,如下所示:

代码语言:javascript复制
nakama --runtime.env "key=value" --runtime.env "key2=value2" --runtime.env "key3=valuecanhave=sign"

会话(Session)

您可以更改与每个用户会话相关的配置选项,例如用于创建令牌的加密密钥。

参数

Flag

描述

encryption_key

session.encryption_key

用于生成客户端令牌的加密密钥。默认值是 defaultencryptionkey。

token_expiry_sec

session.token_expiry_sec

令牌几秒内到期。默认值是 60。

"Important":您必须先更改 encryption_key,然后才能使用您的应用程序!

社交(Social)

Nakama 可以连接到各种社交网络以获取用户信息。它还可以充当通知中心,用于传递和保留通知。

Steam

配置 Steam 网络设置。Facebook,Google 和 GameCenter 不需要任何服务器设置。

参数

Flag

描述

app_id

steam.app_id

Steam App ID.

publisher_key

steam.publisher_key

Steam Publisher 密钥。

Facebook 即时游戏

与 Facebook Instant Games 相关的配置。

参数

Flag

描述

app_secret

facebook_instant_game.app_secret

Facebook 即时应用 Secret。

Socket

与服务器和客户端之间的连接 socket 和传输协议有关的选项。

参数

Flag

描述

address

socket.address

用于侦听客户端流量的接口的IP地址。默认监听所有可用的地址/接口。

idle_timeout_ms

socket.idle_timeout_ms

启用 keep-alive 时等待下一个请求的最大时间(以毫秒为单位)。用于 HTTP 连接。默认值是 60000。

max_message_size_bytes

socket.max_message_size_bytes

每条消息允许从客户端 socket 读取的最大字节数。用于实时连接。默认值是 4096。

max_request_size_bytes

socket.max_request_size_bytes

每次请求允许从客户端读取的最大字节数。用于 gRPC 和 HTTP 连接。默认值是 4096。

outgoing_queue_size

socket.outgoing_queue_size

等待发送到客户端的最大消息数。如果超过此值,则认为客户端太慢,将断开连接。处理实时连接时使用。默认值是 16。

ping_backoff_threshold

socket.ping_backoff_threshold

在单个 ping 周期内从客户端接收到的最小消息数,将延迟到下一个 ping 周期发送 ping,以避免在正常活动的连接上发送不必要的 ping。默认值是 20。

ping_period_ms

socket.ping_period_ms

客户端 ping 消息之间等待的时间(以毫秒为单位)。这个值必须小于 pong_wait_ms。用于实时连接。默认值为15000。

pong_wait_ms

socket.pong_wait_ms

发送 ping 后从客户端等待 pong 消息的时间(以毫秒为单位)。用于实时连接。默认值是 25000。

port

socket.port

端口,用于接收来自客户端的连接,监听所有接口。默认值是 7350。

protocol

socket.protocol

用于监听流量的网络协议。可能的值是 IPv4 和 IPv6 的 tcp 值,仅 IPv4 的 tcp4 值或仅 IPv6 的 tcp6 值。默认为tcp。

read_timeout_ms

socket.read_timeout_ms

读取整个请求的最长时间(以毫秒为单位)。用于 HTTP 连接。默认值是 10000。

server_key

socket.server_key

用于建立与服务器连接的服务器密钥。默认值为 defaultkey。

ssl_certificate

socket.ssl_certificate

如果您想让服务器直接使用 SSL,则指向证书文件的路径。还必须提供 ssl_private_key。不推荐用于生产使用。

ssl_private_key

socket.ssl_private_key

如果您希望服务器直接使用 SSL,则使用私钥文件的路径。还必须提供 ssl_certificate。不推荐用于生产使用。

write_timeout_ms

socket.write_timeout_ms

超时写入响应之前的最长持续时间(以毫秒为单位)。用于 HTTP 连接。默认值是 10000。

write_wait_ms

socket.write_wait_ms

写入数据时等待客户端 ack 的时间(毫秒)。用于实时连接。默认值为 5000。

"Important":您必须先更改 server_key 才能使用您的应用程序!

追踪器(Tracker)

您可以更改与会话跟踪相关的配置选项。

参数

Flag

描述

event_queue_size

tracker.event_queue_size

跟踪器存在事件(presence event)缓冲区的大小。如果预期服务器在短时间内生成大量存在事件,则增加。默认值是1024。

"仅 Nakama 企业版":以下配置选项仅在 Nakama 服务器的 Nakama 企业版本中可用

代码语言:javascript复制
Nakama 旨在作为高可用性集群在生产中运行。如果您正在运行 Nakama Enterprise,则可以在开发计算机上本地启动集群。在生产中,您可以使用 [Nakama Enterprise](https://heroiclabs.com/nakama-enterprise) 或我们的[托管云服务](https://heroiclabs.com/managed-cloud)。

参数

Flag

描述

broadcast_period_ms

tracker.broadcast_period_ms

跟踪器状态复制广播到每个集群节点之间的时间(以毫秒为单位)。默认值为1500。

clock_sample_periods

tracker.clock_sample_periods

如果没有按预期接收到广播,则在出现传输之前将从群集节点请求广播的数量。默认值是2。

max_delta_sizes

tracker.max_delta_sizes

用于将状态数据的最小子集广播到集群节点的状态快照的增量数量和每个增量的最大状态快照计数。默认值为 100、1000 和 10000。

max_silent_periods

tracker.max_silent_periods

在考虑集群节点出现故障之前,错过的最大广播数。预设值为10。

permdown_period_ms

tracker.permdown_period_ms

自上次广播到集群节点存在之前的时间(以毫秒为单位),将被视为永久关闭并且将被删除。默认值为 1200000

示例文件

您可以使用整个文件,也可以仅使用配置的一部分。

代码语言:javascript复制
name: nakama-node-1
data_dir: "./data/"

logger:
	stdout: false
	level: "warn"
	file: "/tmp/path/to/logfile.log"

metrics:
	reporting_freq_sec: 60
	namespace: ""
	stackdriver_projectid: ""
	prometheus_port: 0

database:
	address:
	- "root@localhost:26257"
	conn_max_lifetime_ms: 0
	max_open_conns: 0
	max_idle_conns: 100

runtime:
	env:
	- "example_apikey=example_apivalue"
	- "encryptionkey=afefa==e332*u13=971mldq"
	path: "/tmp/modules/folders"
	http_key: "defaulthttpkey"

socket:
	server_key: "defaultkey"
	port: 7350
	max_message_size_bytes: 4096 # bytes
	read_timeout_ms: 10000
	write_timeout_ms: 10000
	idle_timeout_ms: 60000
	write_wait_ms: 5000
	pong_wait_ms: 10000
	ping_period_ms: 8000 # Must be less than pong_wait_ms
	outgoing_queue_size: 16

session:
	encryption_key: "defaultencryptionkey"
	token_expiry_sec: 60

social:
	steam:
	publisher_key: ""
	app_id: 0

console:
	port: 7351
	username: "admin"
	password: "password"

cluster:
	join:
	- "10.0.0.2:7352"
	- "10.0.0.3:7352"
	gossip_bindaddr: "0.0.0.0"
	gossip_bindport: 7352
	rpc_port: 7353

中文在线文档

https://nakama-docs.hacker-linner.com/

Nakama Server 中文在线文档,持续更新中……

0 人点赞