anchor.diff:  
   frontend http-in
       bind *:80
  -    default_backend neo4j
  +    acl write_hdr hdr_val(X-WRITE) eq 1
  +    use_backend neo4j-master if write_hdr
  +    default_backend neo4j-cluster
   
  -backend neo4j
  +backend neo4j-cluster
  +    balance roundrobin
  +    # create a sticky table so that requests with a transaction id are always sent to the correct server
  +    stick-table type integer size 1k expire 70s
  +    stick match path,word(4,/)
  +    stick store-response hdr(Location),word(6,/)
  +    option httpchk GET /db/manage/server/ha/available
  +    server s1 10.0.1.10:7474 maxconn 32
  +    server s2 10.0.1.11:7474 maxconn 32
  +    server s3 10.0.1.12:7474 maxconn 32
  +
  +backend neo4j-master
       option httpchk GET /db/manage/server/ha/master
       server s1 10.0.1.10:7474 maxconn 32
       server s2 10.0.1.11:7474 maxconn 32
  
positive.code: listen admin
      bind *:8080
      stats enable
  ```
  
  
negative.code: [[reference_configuration_readwrite]]
  === Read-only Transactions
  
  As of Version 4.12.0 read-only transactions are fully supported by Spring Data Neo4j
  
  To declare a read-only transaction specify the `readOnly` attribute in your annotation:
  
  ```
  @Transactional(readOnly=true)
  ```
  
  === Drivers
  The Neo4j OGM Drivers have been updated to transmit additional information about the transaction type of the current transaction to the server.
  
  - The HttpDriver implementation sets a Http Header "X-WRITE" to "1" for READ_WRITE transactions (the default) or to "0" for READ_ONLY ones.
  
  - The Embedded Driver can support READ_ONLY, but this only makes sense in an HA environment. As there is no support for HA Embedded in the OGM at the moment, the implementation is currently on hold.
  
  - The native Bolt Driver currently has no support for READ_ONLY transactions or READ_ONLY sessions, so the implementation of this in the OGM is also on hold until this capability becomes available.
  
  [[reference-configuration-haproxy]]
  == Dynamic binding via a load balancer
  
  In the Neo4j HA architecture, a cluster is typically fronted by a load balancer.
  
  The following example shows how to configure your application and set up HAProxy as a load balancer to route write requests to whichever machine in the cluster is currently identified as the master, with read requests being distributed to any available machine in the cluster on a round-robin basis.
  
  This configuration will also ensure that requests against a specific transaction are directed to the server where the transaction was created.
  
  === Example cluster fronted by HAProxy
  
  . haproxy:          10.0.2.200
  . neo4j-server1:    10.0.1.10
  . neo4j-server2:    10.0.1.11
  . neo4j-server3:    10.0.1.12
  
  .OGM Binding via HAProxy
  [source, java]
  ----
  Components.driver().setURI("http://10.0.2.200");
  ----
  
  .Sample haproxy.cfg
  
  [source, config]
  ----
  global
      daemon
      maxconn 256
  