diff --git a/ansible/host_vars/clickhouseproxy.dev.ooni.io/vars.yml b/ansible/host_vars/clickhouseproxy.dev.ooni.io/vars.yml index e0e08c78..feddd704 100644 --- a/ansible/host_vars/clickhouseproxy.dev.ooni.io/vars.yml +++ b/ansible/host_vars/clickhouseproxy.dev.ooni.io/vars.yml @@ -1 +1,6 @@ -clickhouse_url: "clickhouse3.prod.ooni.io" \ No newline at end of file +clickhouse_nodes: + #- host: clickhouse1.prod.ooni.io + #- host: clickhouse2.prod.ooni.io + - host: clickhouse3.prod.ooni.io + +clickhouse_port: 9000 diff --git a/ansible/host_vars/clickhouseproxy.prod.ooni.io/vars.yml b/ansible/host_vars/clickhouseproxy.prod.ooni.io/vars.yml index 15f63ecc..6d6a017d 100644 --- a/ansible/host_vars/clickhouseproxy.prod.ooni.io/vars.yml +++ b/ansible/host_vars/clickhouseproxy.prod.ooni.io/vars.yml @@ -1 +1,7 @@ -clickhouse_url: "clickhouse1.prod.ooni.io" \ No newline at end of file +clickhouse_nodes: + - host: clickhouse1.prod.ooni.io + #- host: clickhouse2.prod.ooni.io + - host: clickhouse3.prod.ooni.io + backup: true + +clickhouse_port: 9000 diff --git a/ansible/roles/clickhouse_proxy/templates/99-stream.conf b/ansible/roles/clickhouse_proxy/templates/99-stream.conf index 22f5a0f4..bacb23e1 100644 --- a/ansible/roles/clickhouse_proxy/templates/99-stream.conf +++ b/ansible/roles/clickhouse_proxy/templates/99-stream.conf @@ -1,12 +1,17 @@ stream { upstream clickhouse_backend { - server {{ clickhouse_url }}:{{ clickhouse_port }}; +{% for n in clickhouse_nodes %} + # node {{ loop.index }}{% if n.backup is defined and n.backup %} (backup){% endif %} + server {{ n.host }}:{{ n.port | default(clickhouse_port) }} max_fails=3 fail_timeout=60s{% if n.backup is defined and n.backup %} backup{% endif %}; +{% endfor %} } server { - listen 9000; + listen {{ proxy_listen_port | default(9000) }}; - proxy_pass clickhouse_backend; + proxy_connect_timeout 3s; + proxy_timeout 600s; # kill idle connections after 10 minutes + proxy_pass clickhouse_backend; } error_log /var/log/nginx/error.log;