global
    #chroot /var/run/haproxy
    daemon
    user haproxy
    group haproxy
    maxconn 4000
    pidfile /var/run/haproxy/haproxy.pid
    #log 127.0.0.1 local0
    tune.bufsize 1000000
    stats socket /var/run/haproxy.sock
    stats timeout 2m

defaults
    log global
    maxconn 8000
    option redispatch
    option dontlognull
    option splice-auto
    timeout http-request 10s
    timeout queue 1m
    timeout connect 10s
    timeout client 50s
    timeout server 50s
    timeout check 10s
    retries 3

listen  proxy-mysql
    bind {{ internal_vip.ip }}:3306
    option tcpka
    option tcplog
    balance source
{% for host, ip in haproxy_hosts.items() %}
{% if loop.index == 1 %}
    server {{ host }} {{ ip }}:3306 weight 1 check inter 2000 rise 2 fall 5
{% else %}
    server {{ host }} {{ ip }}:3306 weight 1 check inter 2000 rise 2 fall 5 backup
{% endif %}
{% endfor %}

listen  proxy-rabbit
    bind {{ internal_vip.ip }}:5672
    bind {{ public_vip.ip }}:5672

    option tcpka
    option tcplog
    timeout client 3h
    timeout server 3h
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:5672 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-glance_registry_cluster
    bind {{ internal_vip.ip }}:9191
    bind {{ public_vip.ip }}:9191
    option tcpka
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:9191 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-glance_api_cluster
    bind {{ internal_vip.ip }}:9292
    bind {{ public_vip.ip }}:9292
    option tcpka
    option tcplog
    option httpchk
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:9292 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-nova-novncproxy
    bind {{ internal_vip.ip }}:6080
    bind {{ public_vip.ip }}:6080
    option tcpka
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:6080 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-network
    bind {{ internal_vip.ip }}:9696
    bind {{ public_vip.ip }}:9696
    option tcpka
    option tcplog
    balance source
    option httpchk
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:9696 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-volume
    bind {{ internal_vip.ip }}:8776
    bind {{ public_vip.ip }}:8776
    option tcpka
    option httpchk
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8776 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-keystone_admin_cluster
    bind {{ internal_vip.ip }}:35357
    bind {{ public_vip.ip }}:35357
    option tcpka
    option httpchk
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:35357 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-keystone_public_internal_cluster
    bind {{ internal_vip.ip }}:5000
    bind {{ public_vip.ip }}:5000
    option tcpka
    option httpchk
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:5000 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-nova_compute_api_cluster
    bind {{ internal_vip.ip }}:8774
    bind {{ public_vip.ip }}:8774
    mode tcp
    option httpchk
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8774 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-nova_metadata_api_cluster
    bind {{ internal_vip.ip }}:8775
    bind {{ public_vip.ip }}:8775
    option tcpka
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8775 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-cinder_api_cluster
    bind {{ internal_vip.ip }}:8776
    bind {{ public_vip.ip }}:8776
    mode tcp
    option httpchk
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8776 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

#listen  proxy-swift-proxy
#    bind {{ internal_vip.ip }}:8080
#    bind {{ public_vip.ip }}:8080
#    balance  source
#    option  tcpka
#    option  tcplog
#{% for host,ip in haproxy_hosts.items() %}
#    server {{ host }} {{ ip }}:8080 weight 1 check inter 2000 rise 2 fall 5
#{% endfor %}

listen  proxy-ceilometer_api_cluster
    bind {{ internal_vip.ip }}:8777
    bind {{ public_vip.ip }}:8777
    mode tcp
    option tcp-check
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8777 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-aodh_api_cluster
    bind {{ internal_vip.ip }}:8042
    bind {{ public_vip.ip }}:8042
    mode tcp
    option tcp-check
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:8042 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-congress_api_cluster
    bind {{ internal_vip.ip }}:1789
    bind {{ public_vip.ip }}:1789
    mode tcp
    option tcp-check
    option tcplog
    balance source
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:1789 weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen  proxy-dashboarad
    bind {{ public_vip.ip }}:80
    mode  http
    balance  source
    capture  cookie vgnvisitor= len 32
    cookie  SERVERID insert indirect nocache
    option  forwardfor
    option  httpchk
    option  httpclose
    rspidel  ^Set-cookie:\ IP=
{% for host,ip in haproxy_hosts.items() %}
    server {{ host }} {{ ip }}:80 cookie {{ host }} weight 1 check inter 2000 rise 2 fall 5
{% endfor %}

listen stats
    mode http
    bind 0.0.0.0:9999
    stats enable
    stats refresh 30s
    stats uri /
    stats realm Global\ statistics
    stats auth admin:admin