Amazon web services Neo4j HA群集使用螺栓连接到图形数据库时出错
我们正在AWS上使用neo4j-enterprise-3.0.4集群和螺栓协议。HAproxy习惯于我们知道HA集群中谁是主,谁是奴隶。Java应用程序使用spring-data-neo4j框架,并部署在Tomcat7上 AWS上的结构为:Neo4j HA群集(1个主群集和2个从群集)--->HAproxy-->ELB 我们收到了这个错误。错误不是每次都发生,而是偶尔发生 (昨天3次) 我们不知道哪里出了问题。问题出在: 1)Amazon web services Neo4j HA群集使用螺栓连接到图形数据库时出错,amazon-web-services,neo4j,spring-data-neo4j,amazon-elb,neo4j-ogm,Amazon Web Services,Neo4j,Spring Data Neo4j,Amazon Elb,Neo4j Ogm,我们正在AWS上使用neo4j-enterprise-3.0.4集群和螺栓协议。HAproxy习惯于我们知道HA集群中谁是主,谁是奴隶。Java应用程序使用spring-data-neo4j框架,并部署在Tomcat7上 AWS上的结构为:Neo4j HA群集(1个主群集和2个从群集)--->HAproxy-->ELB 我们收到了这个错误。错误不是每次都发生,而是偶尔发生 (昨天3次) 我们不知道哪里出了问题。问题出在: 1) org.neo4j.ogm.drivers.bolt.driver.
org.neo4j.ogm.drivers.bolt.driver.BoltDriver
2) 厄尔巴顿AWS
3) HAproxy.cfg
4) AWS上的螺栓协议
在使用Bolt作为协议之前,我们使用HTTP端点,在AWS上使用相同的设置,并且没有问题
编辑
我们更改了配置,因此以下是我们对问题的了解:
1) org.neo4j.ogm.drivers.bolt.driver.BoltDriver
-错误仅出现在Tomcat 7上
2) AWS上的ELB-我们不再使用ELB,而是直接连接到HAproxy
3) cfg-我们的PHP团队使用端口83使用http协议连接到Neo4j HA集群,他们没有错误
4) AWS上的螺栓协议-我们在ELB和EC2上添加了日志,我们没有收到任何关于螺栓协议的错误
neo4j-enterprise-3.0.4和neo4j ogm螺栓驱动器2.0.4是否存在问题
编辑
neo4j-enterprise-3.0.4或neo4j ogm螺栓驱动器2.0.4与AWS ELB或两者之间存在问题
我们更改了应用程序设置,并在AWS上使用具有相同结构的Http驱动程序,而不是Bolt驱动程序。我们没有收到错误
我们没有找到解决此问题的方法 是否允许使用螺栓协议进行非本地连接?
neo4j.conf
中的相应行是什么?是的,我们允许非本地连接。否则,我们将永远不会偶尔出错Bolt connectordbms.connector.Bolt.type=Bolt dbms.connector.Bolt.enabled=true dbms.connector.Bolt.tls_level=OPTIONAL#让Bolt接受非本地连接,取消注释此行dbms.connector.bolt.address=0.0.0:7687
#HTTP connectordbms.connector.HTTP.type=HTTP dbms.connector.HTTP.enabled=true#dbms.connector.HTTP.encryption=NONE#要让HTTP接受非本地连接,请取消注释此行dbms.connector.HTTP.address=0.0.0:7474
org.neo4j.ogm.exception.ConnectionException: Error connecting to graph database using Bolt: N/A, Unable to close socket connection properly.Broken pipe
at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.newSession(BoltDriver.java:97) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.newTransaction(BoltDriver.java:71) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
at org.neo4j.ogm.session.transaction.DefaultTransactionManager.openTransaction(DefaultTransactionManager.java:57) ~[neo4j-ogm-core-2.0.1.jar:?]
at org.neo4j.ogm.drivers.bolt.request.BoltRequest.executeRequest(BoltRequest.java:153) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
at org.neo4j.ogm.drivers.bolt.request.BoltRequest.execute(BoltRequest.java:139) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:93) ~[neo4j-ogm-core-2.0.1.jar:?]
at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:73) ~[neo4j-ogm-core-2.0.1.jar:?]
at org.neo4j.ogm.session.Neo4jSession.query(Neo4jSession.java:313) ~[neo4j-ogm-core-2.0.1.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at com.sun.proxy.$Proxy73.query(Unknown Source) ~[?:?]
at org.springframework.data.neo4j.template.Neo4jTemplate.query(Neo4jTemplate.java:217) ~[spring-data-neo4j-4.1.1.RELEASE.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) ~[spring-tx-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at com.sun.proxy.$Proxy75.query(Unknown Source) ~[?:?]
at com.kubid.booking.service.bookings.SnapCardBookingService.getBookingsInternal(SnapCardBookingService.java:216) ~[classes/:?]
at com.kubid.booking.service.bookings.SnapCardBookingService.getBookings(SnapCardBookingService.java:249) ~[classes/:?]
at com.kubid.booking.service.bookings.SnapCardBookingService$$FastClassBySpringCGLIB$$d05944f4.invoke(<generated>) ~[spring-core-4.2.0.RELEASE.jar:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:649) ~[spring-aop-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at com.kubid.booking.service.bookings.SnapCardBookingService$$EnhancerBySpringCGLIB$$bfd16c77.getBookings(<generated>) ~[spring-core-4.2.0.RELEASE.jar:?]
at com.kubid.booking.service.controller.BookingController.getBookings(BookingController.java:264) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) ~[spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:111) ~[spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) ~[spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) ~[spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) [servlet-api.jar:?]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:436) [catalina.jar:7.0.65]
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:177) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]
at com.kubid.booking.service.config.RequestBodyFilter.doFilter(RequestBodyFilter.java:36) [classes/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [catalina.jar:7.0.65]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.65]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) [catalina.jar:7.0.65]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) [catalina.jar:7.0.65]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.65]
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) [catalina.jar:7.0.65]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.65]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) [catalina.jar:7.0.65]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) [tomcat-coyote.jar:7.0.65]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) [tomcat-coyote.jar:7.0.65]
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) [tomcat-coyote.jar:7.0.65]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_92]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_92]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.65]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
Caused by: org.neo4j.driver.v1.exceptions.ClientException: Unable to close socket connection properly.Broken pipe
at org.neo4j.driver.internal.connector.socket.SocketClient.stop(SocketClient.java:157) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.connector.socket.SocketConnection.close(SocketConnection.java:181) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.connector.ConcurrencyGuardingConnection.close(ConcurrencyGuardingConnection.java:163) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.PooledConnection.dispose(PooledConnection.java:180) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool$1.onDispose(InternalConnectionPool.java:196) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool$1.onDispose(InternalConnectionPool.java:178) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.dispose(ThreadCachingPool.java:197) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.acquireFromGlobal(ThreadCachingPool.java:145) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.acquire(ThreadCachingPool.java:118) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool.acquire(InternalConnectionPool.java:107) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.InternalDriver.session(InternalDriver.java:53) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.newSession(BoltDriver.java:95) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
... 79 more
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_92]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[?:1.8.0_92]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[?:1.8.0_92]
at sun.nio.ch.IOUtil.write(IOUtil.java:51) ~[?:1.8.0_92]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[?:1.8.0_92]
at org.neo4j.driver.internal.connector.socket.TLSSocketChannel.close(TLSSocketChannel.java:452) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.connector.socket.SocketClient.stop(SocketClient.java:145) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.connector.socket.SocketConnection.close(SocketConnection.java:181) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.connector.ConcurrencyGuardingConnection.close(ConcurrencyGuardingConnection.java:163) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.PooledConnection.dispose(PooledConnection.java:180) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool$1.onDispose(InternalConnectionPool.java:196) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool$1.onDispose(InternalConnectionPool.java:178) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.dispose(ThreadCachingPool.java:197) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.acquireFromGlobal(ThreadCachingPool.java:145) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.ThreadCachingPool.acquire(ThreadCachingPool.java:118) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.pool.InternalConnectionPool.acquire(InternalConnectionPool.java:107) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.driver.internal.InternalDriver.session(InternalDriver.java:53) ~[neo4j-java-driver-1.0.0-RC1.jar:1.0.0-RC1-cc9a365a0ad5346cb6ba50f3b68a998b4d956b98]
at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.newSession(BoltDriver.java:95) ~[neo4j-ogm-bolt-driver-2.0.1.jar:?]
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
maxconn 256
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 30s
timeout client 2h
timeout server 2h
frontend http-in
bind *:81
acl write_method method POST DELETE PUT
acl write_hdr hdr_val(X-Write) eq 1
acl write_payload payload(0,0) -m reg -i CREATE|MERGE|SET|DELETE|REMOVE
acl tx_cypher_endpoint path_beg /db/data/transaction
http-request set-var(txn.tx_cypher_endpoint) bool(true) if tx_cypher_endpoint
use_backend neo4j-master if write_hdr
use_backend neo4j-master if tx_cypher_endpoint write_payload
use_backend neo4j-all if tx_cypher_endpoint
use_backend neo4j-master if write_method
default_backend neo4j-all
frontend http-browse
bind *:83
mode http
default_backend neo4j-browser
backend neo4j-all
option httpchk GET /db/manage/server/ha/available HTTP/1.0\r\nAuthorization:\ Basic\ [code]
acl tx_cypher_endpoint var(txn.tx_cypher_endpoint),bool
stick-table type integer size 1k expire 70s
stick match path,word(4,/) if tx_cypher_endpoint
stick store-response hdr(Location),word(6,/) if tx_cypher_endpoint
server neo4j-1 192.0.0.250:7687 check port 7474
server neo4j-2 192.0.0.251:7687 check port 7474
server neo4j-3 192.0.0.252:7687 check port 7474
backend neo4j-master
option httpchk GET /db/manage/server/ha/master HTTP/1.0\r\nAuthorization:\ Basic\ [code]
server neo4j-1 192.0.0.250:7687 check port 7474
server neo4j-2 192.0.0.251:7687 check port 7474
server neo4j-3 192.0.0.252:7687 check port 7474
backend neo4j-browser
mode http
option prefer-last-server
option httpchk GET /db/manage/server/ha/master HTTP/1.0\r\nAuthorization:\ Basic\ [code]
server neo4j-1 192.0.0.250:7474 check
server neo4j-2 192.0.0.251:7474 check
server neo4j-3 192.0.0.252::7474 check
listen admin
bind *:82
mode http
stats enable
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth admin:admin