My Set-up

我在同一个 node 上启动了两台SiriDB服务器,但使用了不同的端口:

第一台服务器:

  • 服务器名称:%HOSTNAME:9010
  • 监听客户端口:9000
  • http_api_端口:9020

第二台服务器:

  • 服务器名称:%HOSTNAME:9011
  • 监听客户端口:9001
  • http_api_端口:9021

Situation

我已使用以下curl命令创建了一个新副本:

curl --location --request POST 'http://localhost:9021/new-replica' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic c2E6c2lyaQ==' \
--header 'Content-Type: text/plain' \
--data-raw '{
    "dbname": "dbtest",
    "username": "iris",
    "password": "siri",
    "host": "localhost",
    "port": 9000,
    "pool": 0
}'

上述命令的react 是OK.

但在服务器日志(log)中,我看到了以下错误消息:

Connecting to back-end server 'my-hostname-xxx:9010' failed (error: connection refused)

执行list servers查询时,服务器似乎无法找到彼此:

curl --location --request POST 'http://localhost:9021/query/dbtest' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic aXJpczpzaXJp' \
--header 'Content-Type: text/plain' \
--data-raw '{"q": "list servers"}'

以下是回应:

{"columns":["status"],"servers":[["offline"],["running | synchronizing"]]}

我找不到问题所在,因为服务器运行在同一台主机上.因此,他们应该能够找到彼此,对吗?

推荐答案

很可能您的绑定不正确.你能判断一下情况吗?

出于安全原因,默认情况下SiriDB只绑定到127.0.0.1(localhost).

由于使用了%HOSTNAME,SiriDB可能正在监听另一个接口.

如果使用的是配置文件,则可能需要将bind_server_addressbind_client_address都更改为::(任意).

注意:可以使用环境变量SIRIDB_BIND_SERVER_ADDRESSSIRIDB_BIND_CLIENT_ADDRESS进行相同的设置.

Database相关问答推荐

Postgresql 服务器:允许访问私有网络内的远程连接,而不是外部网络

如何在 C# 控制台应用程序中执行 CMD 命令?

如何在 Angular 中使用 IndexedDB?

查询最后一天、上周、上个月SQLite

寻找基于磁盘的类 redis 数据库

Boyce-Codd 范式的良好 KISS 描述是什么?

如何将数据库从一台计算机复制到另一台计算机?

如何从表列中删除唯一约束?

我什么时候应该考虑使用内存数据库,需要注意什么问题?

PostgreSQL 字符变长限制

为什么在连接表上有一个主键不好?

从原始物理文件中恢复 postgreSQL 数据库

使用批处理文件执行一组 SQL 查询?

XML、CSV 或数据库格式的 ICD-9 代码列表

如何使用反射调用扫描可变参数函数

如何以 SYS 身份在 Java 中连接到 Oracle?

For循环或数据库调用哪个更好?

SQLite3 数据库的最大连接数是多少?

使用 Django 的复合/复合主/唯一键

用于 sql 表中的状态列的类型