Can haproxy sync configuration to another instance for configuration updates?

2014-09-16 Thread Zebra
Hi,all
  I want to deploy keepalived + haproxy to supply one high availability cluster 
with master-slave mode. But I am anxious about whether the configuration 
updates made in the master node can sync to the slave.  
  Any suggestiones will be appreciated.
  Looking forward to your reply. Thank you!

Re: Application Persistence with WebSockets

2014-09-16 Thread Willy Tarreau
Hi Ryan,

On Mon, Sep 15, 2014 at 12:11:39PM -0500, Ryan Brock wrote:
 Willy,
 
 I tested these changes in my environment and it all works. So you may move
 forward with these changes.

Great, thanks for the feedback!

 I really appreciate the help.

You're welcome :-)

Best regards,
Willy




Re: Access backend vía proxy

2014-09-16 Thread Javier Sigler
Hi all,

Sorry for the last email. I sent it empty.



I would like to know it is possible to configure haproxy to forward the
requests to a backend via proxy?

Something like the following:

backend api_backend
*set_proxy http:proxy1:8080*
server  server1server1:8080



Using curl, it should be like the following curl -x proxy1:8080
http://server1:8080

I would really appreciate any help about this issue.

Thank you in advance.


Javier Sigler



On Tue, Sep 16, 2014 at 11:22 AM, Javier Sigler 
javiersig...@javiersigler.com wrote:

 Hi all,

 Is is possible



Access backend vía proxy

2014-09-16 Thread Javier Sigler
Hi all,

Is is possible


MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Hoggins!
Hello list,

This is my first post. I checked a bit online to find a solution to my
problem, but it seems that not many people are having the same issues.

I use a very simple loadbalancing between two synchronized (Galera)
MariaDB nodes. Here is the HAProxy config file :


 SNIP ---
global
  log 127.0.0.1 local0 notice
user haproxy
group haproxy

defaults
log global
retries 3
option dontlognull
option redispatch
maxconn1024
timeout connect 5000
timeout server 5
timeout client 5

listen mysql-cluster
bind 127.0.0.1:3306
mode tcp
option tcpka
option mysql-check user haproxy_check
balance roundrobin
server db-1 db-1.network.hoggins.fr:3306 check 500
server db-2 db-2.network.hoggins.fr:3306 check 500 backup

listen httpstats
bind 127.0.0.1:8080
mode http
stats enable
stats uri /

---

When I connect to HAProxy as a MySQL host, and perform a simple request,
everything is fine :

MariaDB [(none)] show variables like '%wsrep_node_name%';
+-+---+
| Variable_name   | Value |
+-+---+
| wsrep_node_name | db1   |
+-+---+
1 row in set (0.00 sec)

If I issue the same command after a few seconds, here is what I get :

MariaDB [(none)] show variables like '%wsrep_node_name%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:743181
Current database: *** NONE ***

+-+---+
| Variable_name   | Value |
+-+---+
| wsrep_node_name | db1   |
+-+---+
1 row in set (0.00 sec)

Does it have something to do with my MariaDB setup ? Connecting directly
to any of my nodes is normal, I can stay connected as long as I wish
without having the MySQL server has gone away message.



If someone has a lead to a solution...

Thanks in advance !





signature.asc
Description: OpenPGP digital signature


MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Hoggins!
Hello list,

This is my first post. I checked a bit online to find a solution to my
problem, but it seems that not many people are having the same issues.

I use a very simple loadbalancing between two synchronized (Galera)
MariaDB nodes. Here is the HAProxy config file :


 SNIP ---
global
  log 127.0.0.1 local0 notice
user haproxy
group haproxy

defaults
log global
retries 3
option dontlognull
option redispatch
maxconn1024
timeout connect 5000
timeout server 5
timeout client 5

listen mysql-cluster
bind 127.0.0.1:3306
mode tcp
option tcpka
option mysql-check user haproxy_check
balance roundrobin
server db-1 db-1.network.hoggins.fr:3306 check
server db-2 db-2.network.hoggins.fr:3306 check

listen httpstats
bind 127.0.0.1:8080
mode http
stats enable
stats uri /

---

When I connect to HAProxy as a MySQL host, and perform a simple request,
everything is fine :

MariaDB [(none)] show variables like '%wsrep_node_name%';
+-+---+
| Variable_name   | Value |
+-+---+
| wsrep_node_name | db1   |
+-+---+
1 row in set (0.00 sec)

If I issue the same command after a few seconds, here is what I get :

MariaDB [(none)] show variables like '%wsrep_node_name%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:743181
Current database: *** NONE ***

+-+---+
| Variable_name   | Value |
+-+---+
| wsrep_node_name | db1   |
+-+---+
1 row in set (0.00 sec)

Does it have something to do with my MariaDB setup ? Connecting directly
to any of my nodes is normal, I can stay connected as long as I wish
without having the MySQL server has gone away message.



If someone has a lead to a solution...

Thanks in advance !





signature.asc
Description: OpenPGP digital signature


Re: MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Hoggins!
Wow. First post, first mistake, I hit the button twice after having
corrected.
Sorry, *this* is the current config I have problems with.

Le 16/09/2014 15:48, Hoggins! a écrit :
 Hello list,

 This is my first post. I checked a bit online to find a solution to my
 problem, but it seems that not many people are having the same issues.

 I use a very simple loadbalancing between two synchronized (Galera)
 MariaDB nodes. Here is the HAProxy config file :


  SNIP ---
 global
   log 127.0.0.1 local0 notice
 user haproxy
 group haproxy

 defaults
 log global
 retries 3
 option dontlognull
 option redispatch
 maxconn1024
 timeout connect 5000
 timeout server 5
 timeout client 5

 listen mysql-cluster
 bind 127.0.0.1:3306
 mode tcp
 option tcpka
 option mysql-check user haproxy_check
 balance roundrobin
 server db-1 db-1.network.hoggins.fr:3306 check
 server db-2 db-2.network.hoggins.fr:3306 check

 listen httpstats
 bind 127.0.0.1:8080
 mode http
 stats enable
 stats uri /

 ---

 When I connect to HAProxy as a MySQL host, and perform a simple request,
 everything is fine :

 MariaDB [(none)] show variables like '%wsrep_node_name%';
 +-+---+
 | Variable_name   | Value |
 +-+---+
 | wsrep_node_name | db1   |
 +-+---+
 1 row in set (0.00 sec)

 If I issue the same command after a few seconds, here is what I get :

 MariaDB [(none)] show variables like '%wsrep_node_name%';
 ERROR 2006 (HY000): MySQL server has gone away
 No connection. Trying to reconnect...
 Connection id:743181
 Current database: *** NONE ***

 +-+---+
 | Variable_name   | Value |
 +-+---+
 | wsrep_node_name | db1   |
 +-+---+
 1 row in set (0.00 sec)

 Does it have something to do with my MariaDB setup ? Connecting directly
 to any of my nodes is normal, I can stay connected as long as I wish
 without having the MySQL server has gone away message.



 If someone has a lead to a solution...

 Thanks in advance !







signature.asc
Description: OpenPGP digital signature


Re: MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Baptiste
On Tue, Sep 16, 2014 at 3:52 PM, Hoggins! fucks...@wheres5.com wrote:
 Wow. First post, first mistake, I hit the button twice after having
 corrected.
 Sorry, *this* is the current config I have problems with.

 Le 16/09/2014 15:48, Hoggins! a écrit :
 Hello list,

 This is my first post. I checked a bit online to find a solution to my
 problem, but it seems that not many people are having the same issues.

 I use a very simple loadbalancing between two synchronized (Galera)
 MariaDB nodes. Here is the HAProxy config file :


  SNIP ---
 global
   log 127.0.0.1 local0 notice
 user haproxy
 group haproxy

 defaults
 log global
 retries 3
 option dontlognull
 option redispatch
 maxconn1024
 timeout connect 5000
 timeout server 5
 timeout client 5

 listen mysql-cluster
 bind 127.0.0.1:3306
 mode tcp
 option tcpka
 option mysql-check user haproxy_check
 balance roundrobin
 server db-1 db-1.network.hoggins.fr:3306 check
 server db-2 db-2.network.hoggins.fr:3306 check

 listen httpstats
 bind 127.0.0.1:8080
 mode http
 stats enable
 stats uri /

 ---

 When I connect to HAProxy as a MySQL host, and perform a simple request,
 everything is fine :

 MariaDB [(none)] show variables like '%wsrep_node_name%';
 +-+---+
 | Variable_name   | Value |
 +-+---+
 | wsrep_node_name | db1   |
 +-+---+
 1 row in set (0.00 sec)

 If I issue the same command after a few seconds, here is what I get :

 MariaDB [(none)] show variables like '%wsrep_node_name%';
 ERROR 2006 (HY000): MySQL server has gone away
 No connection. Trying to reconnect...
 Connection id:743181
 Current database: *** NONE ***

 +-+---+
 | Variable_name   | Value |
 +-+---+
 | wsrep_node_name | db1   |
 +-+---+
 1 row in set (0.00 sec)

 Does it have something to do with my MariaDB setup ? Connecting directly
 to any of my nodes is normal, I can stay connected as long as I wish
 without having the MySQL server has gone away message.



 If someone has a lead to a solution...

 Thanks in advance !






Hi,

Are you able to reproduce the behavior in a test environment?
If so, please turn log level to 'info' then report here the logs of
the sequence you ran above.

Baptiste



Boostez votre emailing avec les dernières nouveautés SendinBlue

2014-09-16 Thread L'équipe SendinBlue
Optimisez la d�livrabilit� de vos emails !  �   [Voir dans votre 
navigateur](http://r.a.d.mailin.fr/fov6vkr71zr6uvf.html)   � �[ 
](http://r.a.d.mailin.fr/1qrgrib0s7yzb6uvd.html)� �

Bonjour � tous,
�
L'�t� a �t� pluvieux, mais studieux chez SendinBlue :) Nous en avons profit� 
pour d�velopper des fonctionnalit�s qui vont booster vos emailings.
D�couvrez comment optimiser la d�livrabilit� de vos campagnes ... et, chers 
utilisateurs WordPress, comment vous simplifier (grandement) la vie ... �   
  �[](http://r.a.d.mailin.fr/1qrgrib0s7zdj6uvd.html)
Acc�l�rez la livraison de vos campagnes�
Le routage de vos campagnes via un pool d'IP d�di�es permettra de livrer plus 
rapidement vos emails dans la bo�te de r�ception de vos clients.

En regroupant plusieurs IP sous une m�me adresse exp�ditrice, vos emails seront 
envoy�s al�atoirement par les IP du pool. La charge de chaque IP sera r�duite 
et votre campagne sera d�livr�e plus rapidement.  �[
En savoir plus ](http://r.a.d.mailin.fr/kx5l63o9enpp36uvd.html)  � �
D�couvrez le nouveau plugin SendinBlue pour WordPress !�
Il n?a jamais �t� aussi simple et efficace de lier votre site WordPress � votre 
compte SendinBlue.

Vous pouvez d�sormais tout g�rer depuis votre back-office WordPress : du 
formulaire d'inscription, � la cr�ation de vos emails marketing, en passant par 
vos emails transactionnels.
�  �[
En savoir plus ](http://r.a.d.mailin.fr/1qrgrib0s805z6uvd.html)   
[](http://r.a.d.mailin.fr/kx5l63o9enp3r6uvd.html)� �
[](http://r.a.d.mailin.fr/1qrgrib0s7zrr6uvd.html)
Personnalisez votre signature DKIM�
Le protocole DKIM permet de signer votre email avec votre nom de domaine, comme 
vous pourriez signer une lettre avec votre signature.

Quand vos campagnes sont envoy�es via nos IP mutualis�es, certains FAI, comme 
Gmail, peuvent faire appara�tre le nom du routeur dans les d�tails de la 
signature de l?email. Vous pouvez d�sormais personnaliser cette signature, m�me 
si vous passez par nos IP mutualis�es.
�  �[
En savoir plus ](http://r.a.d.mailin.fr/1qrgrib0s7zkn6uvd.html)  �
�
On se voit bient�t ?  �[ 
](http://r.a.d.mailin.fr/1qrgrib0s80d36uvd.html)  �
Au Salon du e-Commerce�

Retrouvez-nous au salon du e-Commerce Stand D038

Quand : du 23 au 25 septembre 2014

O� : Parc des Expositions
Pavillon 7-3, Stand D038
Porte de Versailles, Paris

Pourquoi : pour rencontrer qui est derri�re SendinBlue, et b�n�ficier de 
conseils sur vos campagnes. [ 
](http://r.a.d.mailin.fr/1qrgrib0s80k76uvd.html)  �
� la F�te du Cloud fran�ais�

Venez f�ter le Cloud fran�ais ! C�l�brons ensemble le dynamisme du Cloud dans 
l'�conomie fran�aise. [Inscrivez-vous ici 
!](http://r.a.d.mailin.fr/1qrgrib0s80rb6uvd.html)

Quand : le 18 septembre de 18h � 21h
�
O� : Cit� de la Mode et du Design @N�ba
34 Quai d'Austerlitz, 75013 Paris�
�
Pourquoi : euh ... pour boire un verre ensemble, �a ne suffit pas ? ;) �
 �

N?h�sitez pas � contacter le [service 
client](mailto:cont...@sendinblue.com?utm_source=sendinblueutm_campaign=NL_SEPTutm_medium=email)
 pour plus d?informations sur ces nouvelles fonctionnalit�s. � �

A tr�s bient�t,

L'�quipe SendinBlue � �

SendinBlue
59 rue Beaubourg
75003 PARIS
0 899 25 30 61
cont...@sendinblue.com� � 
[](http://r.a.d.mailin.fr/kx5l63o9enobb6uvd.html)  
[](http://r.a.d.mailin.fr/kx5l63o9enoif6uvd.html)  
[](http://r.a.d.mailin.fr/kx5l63o9enopj6uvd.html)  � �
Cet email a �t� envoy� � haproxy@formilux.org.
Vous avez re�u cet email car vous vous �tes inscrit sur SendinBlue.

[Se d�sinscrire](http://r.a.d.mailin.fr/fov6vkr71zr6uvg.html)   �

Envoy� par
[](http://r.a.d.mailin.fr/kx5l63o9enown6uvd.html)   � �
� 2014 SendinBlue  �


Re: MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Cyril Bonté

Hi,

Le 16/09/2014 15:52, Hoggins! a écrit :
 (...)

defaults
 timeout connect 5000
 timeout server 5
 timeout client 5
(...)
If I issue the same command after a few seconds, here is what I get :

MariaDB [(none)] show variables like '%wsrep_node_name%';
ERROR 2006 (HY000): MySQL server has gone away


What are you calling after a few seconds ? Is it more that 50 seconds ?

--
Cyril Bonté



Re: Can haproxy sync configuration to another instance for configuration updates?

2014-09-16 Thread Bryan Talbot
There is nothing to be anxious about because there is no support in haproxy
or keepalived for synchronization of configuration files -- it's something
you'll need to handle using whatever node configuration tools you wish
(puppet, chef, scripts, etc).



On Tue, Sep 16, 2014 at 4:24 AM, Zebra max...@unitedstack.com wrote:

 Hi,all
   I want to deploy keepalived + haproxy to supply one high availability
 cluster with master-slave mode. But I am anxious about whether the
 configuration updates made in the master node can sync to the slave.
   Any suggestiones will be appreciated.
   Looking forward to your reply. Thank you!



Re: MariaDB 5.5.39 + HAProxy v1.5.3

2014-09-16 Thread Hoggins!
Hello Cyril,

Le 16/09/2014 18:54, Cyril Bonté a écrit :
 Hi,

 Le 16/09/2014 15:52, Hoggins! a écrit :
  (...)
 defaults
  timeout connect 5000
  timeout server 5
  timeout client 5
 (...)
 If I issue the same command after a few seconds, here is what I get :

 MariaDB [(none)] show variables like '%wsrep_node_name%';
 ERROR 2006 (HY000): MySQL server has gone away

 What are you calling after a few seconds ? Is it more that 50 seconds ?

yes, it fits the timeout, but I would have expected that with the
keepalive option, as long as the connexion is valid (the MySQL backend
is still up), there would be no switch between the two backends or a
disconnection.

It's just that I'm afraid some of my users (a very little french server,
not a render farm anyway) might not have implemented reconnection
routines in their applications. The commandline mysql client does
reconnect automatically, but not everybody does it.

Thanks for your help.



signature.asc
Description: OpenPGP digital signature


Re: 回复: About the health check

2014-09-16 Thread PiBa-NL

Hi Zebra,

I think it stops after the 3way because your configuration is not using 
any send/expect values, so after the connection is made its immediately 
done 'checking' the layer 7 part.. Something like this would be the 
proper way to use tcp-check:


|option tcp-check
tcp-check send PING\r\n
tcp-check expect +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK|

Have you tried removing that 'option tcp-check' from your configuration 
like i wrote before.? It should then default to a simple layer4 3way.


Zebra schreef op 16-9-2014 3:53:

Hi, PiBa-NL

  Thank you for your reply .
  But I used tcpdump and find the check only try to make one tcp 
three-way handshake and even the packet for tcp ACK will not send.

  This is the result :

  root@ubuntuforhaproxy:/home# tcpdump -lnvvvXei eth0 tcp port 22 and 
src 192.168.10.95 or dst 192.168.10.95
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 
65535 bytes
01:52:21.188205 fa:16:3e:29:d8:8e  fa:16:3e:05:d6:dd, ethertype IPv4 
(0x0800), length 74: (tos 0x0, ttl 64, id 46206, offset 0, flags [DF], 
proto TCP (6), length 60)
192.168.10.94.60528  192.168.10.95.22: Flags [S], cksum 0x963c 
(incorrect - 0xa91a), seq 1728571217, win 29200, options [mss 
1460,sackOK,TS val 146297647 ecr 0,nop,wscale 7], length 0

0x:  4500 003c b47e 4000 4006 f02f c0a8 0a5e  E...~@.@../...^
0x0010:  c0a8 0a5f ec70 0016 6707 e751    ..._.p..g..Q
0x0020:  a002 7210 963c  0204 05b4 0402 080a  ..r
0x0030:  08b8 532f   0103 0307  ..S/
01:52:21.189789 fa:16:3e:05:d6:dd  fa:16:3e:29:d8:8e, ethertype IPv4 
(0x0800), length 74: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], 
proto TCP (6), length 60)
192.168.10.95.22  192.168.10.94.60528: Flags [S.], cksum 0x7eeb 
(correct), seq 952013707, ack 1728571218, win 28960, options [mss 
1460,sackOK,TS val 146298380 ecr 146297647,nop,wscale 7], length 0

0x:  4500 003c  4000 4006 a4ae c0a8 0a5f  E@.@.._
0x0010:  c0a8 0a5e 0016 ec70 38be 938b 6707 e752  ...^...p8...g..R
0x0020:  a012 7120 7eeb  0204 05b4 0402 080a  ..q.~...
0x0030:  08b8 560c 08b8 532f 0103 0307  ..V...S/
01:52:21.189819 fa:16:3e:29:d8:8e  fa:16:3e:05:d6:dd, ethertype IPv4 
(0x0800), length 54: (tos 0x0, ttl 64, id 878, offset 0, flags [DF], 
proto TCP (6), length 40)
192.168.10.94.60528  192.168.10.95.22: Flags [R], cksum 0xdef1 
(correct), seq 1728571218, win 0, length 0

0x:  4500 0028 036e 4000 4006 a154 c0a8 0a5e  E..(.n@.@..T...^
0x0010:  c0a8 0a5f ec70 0016 6707 e752    ..._.p..g..R
0x0020:  5004  def1   P...


-- 原始邮 件 --
*发件人:* PiBa-NL;
*发送时间:* 2014年9月16日(星期二) 上午9:31
*收件人:* Zebra; haproxy;
*主题:* Re: About the health check
Zebra schreef op 16-9-2014 3:08:
 Hi,all

   I configure the backend with one server and want to make the health
 check for it using tcp.And the configuration as below.

 backend httpservers
   option tcp-check
This actually makes it perform tests on a higher layer: Perform health
checks using tcp-check send/expect sequences
If you remove the option tcp-check from the config it will probably do
layer4.

   server server2 192.168.10.95:22 check inter 5s fall 1 maxconn 32000

   But I find the log output  below:

 Sep 16 01:03:34 localhost haproxy[30429]: Health check for server
 httpservers/server2 succeeded, reason: Layer7 check passed, code: 0,
 info: (tcp-check), check duration: 0ms, status: 1/1 UP.

   I could not understand why Layer 7 check passed for I think the
 tcp-check only work for Layer 4.

   Could you tell me more about this ?


 Looking forward to your reply, thanks!









回复: Can haproxy sync configuration to another instance forconfiguration updates?

2014-09-16 Thread Zebra
I got it.Thank you very much!
 
 
-- 原始邮件 --
发件人: Bryan Talbot; 
发送时间: 2014年9月17日(星期三) 凌晨1:31
收件人: Zebra; 
抄送: haproxy; 
主题: Re: Can haproxy sync configuration to another instance forconfiguration 
updates?

 

There is nothing to be anxious about because there is no support in haproxy or 
keepalived for synchronization of configuration files -- it's something you'll 
need to handle using whatever node configuration tools you wish (puppet, chef, 
scripts, etc).




On Tue, Sep 16, 2014 at 4:24 AM, Zebra max...@unitedstack.com wrote:
Hi,all
  I want to deploy keepalived + haproxy to supply one high availability cluster 
with master-slave mode. But I am anxious about whether the configuration 
updates made in the master node can sync to the slave.  
  Any suggestiones will be appreciated.
  Looking forward to your reply. Thank you!

回复: Can I add one new server without stop the haproxy process?

2014-09-16 Thread Zebra
I got it. Thank you very much!
 
 
-- 原始邮件 --
发件人: Juho Mäkinen; 
发送时间: 2014年9月15日(星期一) 中午1:49
收件人: Zebra; 
抄送: haproxy; 
主题: Re: Can I add one new server without stop the haproxy process?

 

You can't. The socket admin interface allows you to only disable existing 
servers and then re-enable them, but you can't add a completely new server.

However you can reload haproxy so that it minimises and on some platforms 
eliminates dropping any existing connections. Probably your init script already 
does this with the reload-command.


For example this blog post tells about this 
https://medium.com/@Drew_Stokes/actual-zero-downtime-with-haproxy-18318578fde6 
but I've also hear that on modern linux kernels even the iptables syn trick 
isn't needed, but I can't confirm.


On Mon, Sep 15, 2014 at 3:02 AM, Zebra max...@unitedstack.com wrote:
Hi,all


  How can I add one new server without stop the haproxy process?


  Looking forward to your reply!




Thanks,
Zebra

Re: 回复: About the health check

2014-09-16 Thread Zebra
Hi,PiBa-NL


Have you tried removing that 'option tcp-check' from your configuration 
like i wrote before.? It should then default to a simple layer4 3way.


  It is indeed as what you say.


  Thank you for your candid reply, and I gain a lot.
  Greatly appreciated.


Kind regards.
Zebra



-- Original --
From:  PiBa-NLpiba.nl@gmail.com;
Date:  Wed, Sep 17, 2014 01:45 AM
To:  Zebramax...@unitedstack.com; haproxyhaproxy@formilux.org; 

Subject:  Re: 回复: About the health check

 
Hi Zebra,

I think it stops after the 3way because your configuration is not using 
any send/expect values, so after the connection is made its immediately 
done 'checking' the layer 7 part.. Something like this would be the 
proper way to use tcp-check:

|option tcp-check
tcp-check send PING\r\n
tcp-check expect +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK|

Have you tried removing that 'option tcp-check' from your configuration 
like i wrote before.? It should then default to a simple layer4 3way.

Zebra schreef op 16-9-2014 3:53:
 Hi, PiBa-NL

   Thank you for your reply .
   But I used tcpdump and find the check only try to make one tcp 
 three-way handshake and even the packet for tcp ACK will not send.
   This is the result :

   root@ubuntuforhaproxy:/home# tcpdump -lnvvvXei eth0 tcp port 22 and 
 src 192.168.10.95 or dst 192.168.10.95
 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 
 65535 bytes
 01:52:21.188205 fa:16:3e:29:d8:8e  fa:16:3e:05:d6:dd, ethertype IPv4 
 (0x0800), length 74: (tos 0x0, ttl 64, id 46206, offset 0, flags [DF], 
 proto TCP (6), length 60)
 192.168.10.94.60528  192.168.10.95.22: Flags [S], cksum 0x963c 
 (incorrect - 0xa91a), seq 1728571217, win 29200, options [mss 
 1460,sackOK,TS val 146297647 ecr 0,nop,wscale 7], length 0
 0x:  4500 003c b47e 4000 4006 f02f c0a8 0a5e  E...~@.@../...^
 0x0010:  c0a8 0a5f ec70 0016 6707 e751    ..._.p..g..Q
 0x0020:  a002 7210 963c  0204 05b4 0402 080a  ..r
 0x0030:  08b8 532f   0103 0307  ..S/
 01:52:21.189789 fa:16:3e:05:d6:dd  fa:16:3e:29:d8:8e, ethertype IPv4 
 (0x0800), length 74: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], 
 proto TCP (6), length 60)
 192.168.10.95.22  192.168.10.94.60528: Flags [S.], cksum 0x7eeb 
 (correct), seq 952013707, ack 1728571218, win 28960, options [mss 
 1460,sackOK,TS val 146298380 ecr 146297647,nop,wscale 7], length 0
 0x:  4500 003c  4000 4006 a4ae c0a8 0a5f  E@.@.._
 0x0010:  c0a8 0a5e 0016 ec70 38be 938b 6707 e752  ...^...p8...g..R
 0x0020:  a012 7120 7eeb  0204 05b4 0402 080a  ..q.~...
 0x0030:  08b8 560c 08b8 532f 0103 0307  ..V...S/
 01:52:21.189819 fa:16:3e:29:d8:8e  fa:16:3e:05:d6:dd, ethertype IPv4 
 (0x0800), length 54: (tos 0x0, ttl 64, id 878, offset 0, flags [DF], 
 proto TCP (6), length 40)
 192.168.10.94.60528  192.168.10.95.22: Flags [R], cksum 0xdef1 
 (correct), seq 1728571218, win 0, length 0
 0x:  4500 0028 036e 4000 4006 a154 c0a8 0a5e  E..(.n@.@..T...^
 0x0010:  c0a8 0a5f ec70 0016 6707 e752    ..._.p..g..R
 0x0020:  5004  def1   P...


 -- 原始邮 件 --
 *发件人:* PiBa-NL;
 *发送时间:* 2014年9月16日(星期二) 上午9:31
 *收件人:* Zebra; haproxy;
 *主题:* Re: About the health check
 Zebra schreef op 16-9-2014 3:08:
  Hi,all
 
I configure the backend with one server and want to make the health
  check for it using tcp.And the configuration as below.
 
  backend httpservers
option tcp-check
 This actually makes it perform tests on a higher layer: Perform health
 checks using tcp-check send/expect sequences
 If you remove the option tcp-check from the config it will probably do
 layer4.

server server2 192.168.10.95:22 check inter 5s fall 1 maxconn 32000
 
But I find the log output  below:
 
  Sep 16 01:03:34 localhost haproxy[30429]: Health check for server
  httpservers/server2 succeeded, reason: Layer7 check passed, code: 0,
  info: (tcp-check), check duration: 0ms, status: 1/1 UP.
 
I could not understand why Layer 7 check passed for I think the
  tcp-check only work for Layer 4.
 
Could you tell me more about this ?
 
 
  Looking forward to your reply, thanks!