Linkurious bolt 配置
默认的 Linkurious 配置在 production.json 配置文件中包含以下代码片段
{
"dataSources": [{
"readOnly": false,
"graphdb": {
"vendor": "neo4j",
"url": "http://127.0.0.1:7474",
"user": null,
"password": null
},
"index": {
"vendor": "elasticSearch",
"host": "127.0.0.1",
"port": 9201,
"forceReindex": false,
"dynamicMapping": false,
"skipEdgeIndexation": false
}
}]
}
文档中说明如下
Linkurious can connect to Neo4j via the Bolt protocol. To do so, you need to enable the protocol in your Neo4j configuration file. If Linkurious is connected over HTTP/S, it will try to automatically upgrade the connection to Bolt. The HTTP/S protocol is still required to perform a small subset of operations.
其中 URL 可以设置为 http、https、bolt、bolt+routing。然而,在集群环境下使用上述配置可能会导致写入问题。
一般来说,写操作在以下情况下产生:
-
您通过 UI 创建/编辑/删除信息
-
您编写自己的查询 / 查询模板并让用户运行它们
当 Linkurious 使用 bolt+routing 协议时,可能会返回集群中的一个节点,而该节点可能是只读副本,当然,对该节点发送写入查询时,写入将会失败。
话虽如此,您可能会遇到不同的场景
-
您不希望任何用户通过 LKE UI 更改数据(并且您已经妥善配置了所有安全措施以实现此目的,同时在数据源中设置了只读标志)。在这种情况下,系统永远不会执行写操作,因此不会遇到任何问题。您的配置将能够正常工作。
-
您的集群仅包含 Core Server,没有副本(只读)。在这种情况下,bolt+routing 协议返回的每个节点都将接受写请求,因而不会出现失败。
-
您希望通过 LKE UI 更改数据且 Neo4j 集群中还包含副本服务器。在这种情况下,为了消除失败的可能性,您需要按照下面所示使用 HTTP/S 协议配置额外的
writeUrl参数,并指向 Core 服务器,以确保所有写入查询都发送到核心节点(因为在 Linkurious 中,所有 HTTP 调用实际上是通过 bolt 在底层进行的)。
配置将如下所示
{
"dataSources": [
{
"graphdb": {
"vendor": "neo4j",
"url": "bolt+routing://full-cluster:7687/",
"writeUrl": "http://core-server:7474/",
"user": "myNeo4jUser",
"password": "nyNeo4jPassword"
},
"index": {
"vendor": "neo4jSearch"
}
}
]
}
说明:
- full-cluster
-
指向集群中任意活动节点的地址。如果只配置单个服务器,一旦该服务器发生故障,系统将无法连接到集群。在这种情况下,建议使用始终可用的组件,例如负载均衡器、具有备份服务器配置的反向代理、指向活跃服务器池的 DNS 别名等,确保不会返回离线服务器。
- core-server
-
应遵循上述相同的建议,唯一的区别是该组件绝不应返回副本服务器,只应链接到 Core 服务器的子集。
此页面有帮助吗?