我在AWS EC2(Linux)内的私有子网中的2个虚拟机上运行4个节点(2个群集节点,2个仲裁节点)neo4j 2.2.5企业群集。我能够启动集群并让成员加入它们。 我还配置了一个AWD Elastic Load Balancer来访问不同机器的7474端口。负载均衡器运行状况检查使用下面的结束点进行配置。
/db/manage/server/ha/available
但是,服务器返回401是未经授权的,因为它们不包含授权标头。我不确定AWS是否允许您为healthcheck传递身份验证值。是否有可能让neo4j不需要auth用于"只是"这些健康检查网址? (我不想为整个数据库禁用auth)。 谢谢, NN
答案 0 :(得分:3)
AWS ELB不支持自定义标头,我建议您使用HAproxy而不是ELB - 以下是配置的精彩描述 - http://blog.armbruster-it.de/2015/08/neo4j-and-haproxy-some-best-practices-and-tricks/
答案 1 :(得分:2)
以下内容见2.3.3:
dbms.security.ha_status_auth_enabled
说明:要求授权访问HA状态端点。
有效值:dbms.security.ha_status_auth_enabled是一个布尔值。
默认值:true
将其更改为false将允许在没有安全性的情况下访问HA状态检查端点。我目前正在使用此作为将AWS ELB与Neo4j配合使用的方法,并且它的工作正常。
答案 2 :(得分:0)
回答您的问题 - 在Neo4j中不可能只抑制一条路径的身份验证。我们看到there - 白名单是硬编码的,无法扩展。
也许您可以在案例中使用nginx作为反向代理?
解决方案:
/db/manage/server/ha/available
自动添加授权标题有几篇文章可以帮助您进行设置:
示例(未测试):
location /db/manage/server/ha/available {
proxy_set_header HOST "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";
proxy_pass http://localhost:7474/db/manage/server/ha/available;
}
答案 3 :(得分:0)
实际上FylmTM的解决方案是正确的方法!这只需要一些小的调整 - 请参见下文..
location /db/manage/server/ha/available {
proxy_set_header Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";
proxy_pass_header Authorization;
proxy_pass http://ip-10-0-1-98:7474/db/manage/server/ha/available;
}
这解决了上述问题,您可以使用AWS ELB进行健康检查! 现在我仍然需要弄清楚为什么我在这些网址上出现404错误(请参阅下面的帖子)
答案 4 :(得分:0)
您需要在neo4j.conf中将这两个变量设置为 false 。这两个变量的默认值为 true 。
这些变量可帮助ELB在不进行身份验证的情况下进行健康检查
dbms.security.ha_status_auth_enabled=false
dbms.security.causal_clustering_status_auth_enabled=false
用于设置弹性负载平衡器
对于状态终结点,请根据Neo4j版本检查URL- https://neo4j.com/docs/operations-manual/current/monitoring/causal-cluster/http-endpoints/
用于读取数据的ELB。
运行状况检查-http:7474 / db / manage / server / causalclustering / available
用于写入数据的ELB。
运行状况检查-http:7474 / db / manage / server / causalclustering / writable