From 565bfdb43140375e31923911301583e9f355f077 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Thu, 10 Mar 2011 12:53:17 +0000
Subject: [PATCH]  - switch haproxy to http_mode with nice web_based status
 interface

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@44113 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5/src/slapos/recipe/erp5/__init__.py    | 11 +++++++----
 .../slapos/recipe/erp5/template/haproxy.cfg.in | 18 ++++++++++++++++--
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
index c6f7da25ce..4c86b36c9d 100644
--- a/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
+++ b/slapos/recipe/erp5/src/slapos/recipe/erp5/__init__.py
@@ -136,7 +136,9 @@ class Recipe(BaseSlapRecipe):
 
     self.connection_dict.update(
         haproxy_login=self.installHaproxy(
-          ip=self.getGlobalIPv6Address(), port='15000', name='login', url_list=login_list))
+          ip=self.getGlobalIPv6Address(), port='15000', name='login',
+          url_list=login_list, server_check_path=
+          self.parameter_dict.get('server_check_path', '/erp5/getId')))
     self.connection_dict.update(
         apache_login=self.installLoginApache(ip=self.getGlobalIPv6Address(), port=13000,
         backend=self.connection_dict['haproxy_login']))
@@ -348,9 +350,10 @@ class Recipe(BaseSlapRecipe):
         test_ca_path=CONFIG['ca_dir']
     )
 
-  def installHaproxy(self, ip, port, name, url_list):
-    server_template = """  server %(name)s %(address)s check"""
-    config = dict(name=name, ip=ip, port=port)
+  def installHaproxy(self, ip, port, name, server_check_path, url_list):
+    server_template = """  server %(name)s %(address)s cookie %(name)s check inter 20s rise 2 fall 4"""
+    config = dict(name=name, ip=ip, port=port,
+        server_check_path=server_check_path,)
     i = 1
     server_list = []
     for url in url_list:
diff --git a/slapos/recipe/erp5/src/slapos/recipe/erp5/template/haproxy.cfg.in b/slapos/recipe/erp5/src/slapos/recipe/erp5/template/haproxy.cfg.in
index 63ed4c3dd0..4087c1a4ea 100644
--- a/slapos/recipe/erp5/src/slapos/recipe/erp5/template/haproxy.cfg.in
+++ b/slapos/recipe/erp5/src/slapos/recipe/erp5/template/haproxy.cfg.in
@@ -1,12 +1,26 @@
+global
+  maxconn 4096
+
 defaults
-  mode  tcp
+  log global
+  mode  http
+  option  httplog
+  option  dontlognull
+  retries 1
   option redispatch
+  maxconn 2000
   timeout server 3000s
   timeout queue 5s
   timeout connect 10s
   timeout client 3600s
 
 listen %(name)s %(ip)s:%(port)s
-  option ssl-hello-chk
+  cookie  SERVERID insert
   balance roundrobin
+
 %(server_text)s
+
+  option httpchk GET %(server_check_path)s
+
+  stats uri /haproxy
+  stats realm Global\ statistics
-- 
2.30.9