Currently with HA proxy fronting microservice we are facing a connection
reset exception [1]. Seems like this is a common issue with netty +
haproxy. According to HA proxy manual[2] there are 5 connection modes. With
connection mode "*httpclose*" I managed to get rid of the exception.

>From manual
"In HTTP mode, the processing applied to requests and responses flowing over

a connection depends in the combination of the frontend's HTTP options and
the backend's. HAProxy supports 5 connection modes :

  - KAL : keep alive ("option http-keep-alive
<https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20http-keep-alive>")
which is the default mode : all
    requests and responses are processed, and connections remain open but idle
    between responses and new requests.

  - TUN: tunnel ("option http-tunnel
<https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20http-tunnel>")
: this was the default mode for versions
    1.0 to 1.5-dev21 : only the first request and response are processed, and
    everything else is forwarded with no analysis at all. This mode should not
    be used as it creates lots of trouble with logging and HTTP processing.
*  - PCL: passive close ("option httpclose
<https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20httpclose>")
: exactly the same as tunnel mode,
    but with "Connection: close" appended in both directions to try to make
    both ends close after the first request/response exchange.
*
  - SCL: server close ("option http-server-close
<https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20http-server-close>")
: the server-facing
    connection is closed after the end of the response is received, but the
    client-facing connection remains open.

  - FCL: forced close ("option forceclose
<https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20forceclose>")
: the connection is actively closed

    after the end of the response."

But there are few questions in hand.


   1. Is this the correct approach to solve the issue?
   2. If its correct then can we use the same connection mode for other app
   types like tomcat and php as well?
   3. Are there any better approaches we can take?


Any input would be appriciated.

[1] https://wso2.org/jira/browse/APPCLOUD-79
[2] https://cbonte.github.io/haproxy-dconv/configuration-1.5.html

Thanks & Regards
Danushka Fernando
Senior Software Engineer
WSO2 inc. http://wso2.com/
Mobile : +94716332729
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to