Skip to content

Commit d541ebd

Browse files
committed
fix: Fix ClickHouse port names, allow overrides
1 parent 412479a commit d541ebd

File tree

11 files changed

+73
-24
lines changed

11 files changed

+73
-24
lines changed

tutoraspects/patches/k8s-deployments

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ spec:
8787
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__PASSWORD
8888
value: "{{CLICKHOUSE_ADMIN_PASSWORD}}"
8989
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__PORT
90-
value: "{{CLICKHOUSE_PORT}}"
90+
value: "{{CLICKHOUSE_INTERNAL_HTTP_PORT}}"
9191
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__TEST_HOST
9292
value: "clickhouse"
9393
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__USERNAME

tutoraspects/patches/k8s-jobs

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ spec:
113113
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__PASSWORD
114114
value: "{{CLICKHOUSE_ADMIN_PASSWORD}}"
115115
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__PORT
116-
value: "{{CLICKHOUSE_PORT}}"
116+
value: "{{CLICKHOUSE_INTERNAL_HTTP_PORT}}"
117117
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__TEST_HOST
118118
value: "clickhouse"
119119
- name: RALPH_BACKENDS__DATABASE__CLICKHOUSE__USERNAME

tutoraspects/patches/local-docker-compose-services

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ clickhouse:
77
CLICKHOUSE_PASSWORD: "{{ CLICKHOUSE_ADMIN_PASSWORD }}"
88
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
99
ports:
10-
- 8123:{{ CLICKHOUSE_HTTP_PORT }}
11-
- 9000:{{ CLICKHOUSE_CLIENT_PORT }}
10+
- {{ CLICKHOUSE_HOST_HTTP_PORT }}:{{ CLICKHOUSE_INTERNAL_HTTP_PORT }}
11+
- {{ CLICKHOUSE_HOST_NATIVE_PORT }}:{{ CLICKHOUSE_INTERNAL_NATIVE_PORT }}
1212
ulimits:
1313
nofile:
1414
soft: 262144

tutoraspects/patches/openedx-common-settings

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Configuration needed for openedx-event-sink-clickhouse
22
EVENT_SINK_CLICKHOUSE_BACKEND_CONFIG = {
3-
"url": "http://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_PORT }}",
3+
"url": "http://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_INTERNAL_HTTP_PORT }}",
44
"username": "{{ ASPECTS_CLICKHOUSE_CMS_USER }}",
55
"password": "{{ ASPECTS_CLICKHOUSE_CMS_PASSWORD }}",
66
"database": "{{ ASPECTS_EVENT_SINK_DATABASE }}",

tutoraspects/plugin.py

+59-10
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,54 @@
8181
# Make sure LMS / CMS have event-routing-backends installed
8282
######################
8383
# ClickHouse Settings
84+
# Note! ClickHouse has several reserved ports, make sure you are not reusing
85+
# a taken port: https://clickhouse.com/docs/en/guides/sre/network-ports
8486
("CLICKHOUSE_HOST", "clickhouse"),
85-
("CLICKHOUSE_CLIENT_HTTP_PORT", "9000"),
86-
("CLICKHOUSE_CLIENT_HTTPS_PORT", "9440"),
87+
# Port for the native interface exposed on the host container in Docker Compose,
88+
# this is changed from 9000 to prevent conflicts with MinIO, which also listens
89+
# on 9000.
90+
("CLICKHOUSE_HOST_INSECURE_NATIVE_PORT", "9006"),
91+
# Port for the native interface ClickHouse will open on the container, used in
92+
# internal networking on the cluster.
93+
("CLICKHOUSE_INTERNAL_INSECURE_NATIVE_PORT", "9000"),
94+
# Port for the TLS native encrypted native interface exposed on the host
95+
# container in Docker Compose.
96+
("CLICKHOUSE_HOST_TLS_NATIVE_PORT", "9440"),
97+
# Port for the TLS native interface ClickHouse will open on the container
98+
("CLICKHOUSE_INTERNAL_TLS_NATIVE_PORT", "9440"),
99+
# Use the secure ports if we're configured for them, otherwise insecure
87100
(
88-
"CLICKHOUSE_CLIENT_PORT",
101+
"CLICKHOUSE_HOST_NATIVE_PORT",
89102
"{% if CLICKHOUSE_SECURE_CONNECTION %}"
90-
"{{CLICKHOUSE_CLIENT_HTTPS_PORT}}{% else %}{{CLICKHOUSE_CLIENT_HTTP_PORT}}{% endif %}",
103+
"{{CLICKHOUSE_HOST_TLS_NATIVE_PORT}}{% else %}{{CLICKHOUSE_HOST_INSECURE_NATIVE_PORT}}{% endif %}",
91104
),
92-
("CLICKHOUSE_HTTP_PORT", "8123"),
93-
("CLICKHOUSE_HTTPS_PORT", "8443"),
94105
(
95-
"CLICKHOUSE_PORT",
106+
"CLICKHOUSE_INTERNAL_NATIVE_PORT",
96107
"{% if CLICKHOUSE_SECURE_CONNECTION %}"
97-
"{{CLICKHOUSE_HTTPS_PORT}}{% else %}{{CLICKHOUSE_HTTP_PORT}}{% endif %}",
108+
"{{CLICKHOUSE_INTERNAL_TLS_NATIVE_PORT}}{% else %}{{CLICKHOUSE_INTERNAL_INSECURE_NATIVE_PORT}}{% endif %}",
98109
),
110+
# Port for the HTTP interface exposed on the host container in Docker Compose.
111+
("CLICKHOUSE_HOST_INSECURE_HTTP_PORT", "8123"),
112+
# Port for the HTTP interface ClickHouse will open on the container, used in
113+
# internal networking on the cluster.
114+
("CLICKHOUSE_INTERNAL_INSECURE_HTTP_PORT", "8123"),
115+
# Port for the TLS HTTP encrypted HTTP interface exposed on the host
116+
# container in Docker Compose.
117+
("CLICKHOUSE_HOST_TLS_HTTP_PORT", "8443"),
118+
# Port for the TLS HTTP interface ClickHouse will open on the container
119+
("CLICKHOUSE_INTERNAL_TLS_HTTP_PORT", "8443"),
120+
# Use the secure ports if we're configured for them, otherwise insecure
121+
(
122+
"CLICKHOUSE_HOST_HTTP_PORT",
123+
"{% if CLICKHOUSE_SECURE_CONNECTION %}"
124+
"{{CLICKHOUSE_HOST_TLS_HTTP_PORT}}{% else %}{{CLICKHOUSE_HOST_INSECURE_HTTP_PORT}}{% endif %}",
125+
),
126+
(
127+
"CLICKHOUSE_INTERNAL_HTTP_PORT",
128+
"{% if CLICKHOUSE_SECURE_CONNECTION %}"
129+
"{{CLICKHOUSE_INTERNAL_TLS_HTTP_PORT}}{% else %}{{CLICKHOUSE_INTERNAL_INSECURE_HTTP_PORT}}{% endif %}",
130+
),
131+
99132
("CLICKHOUSE_K8S_VOLUME_SIZE", "10Gi"),
100133
# This can be used to override some configuration values in
101134
# via "docker_config.xml" file, which will be read from a
@@ -107,14 +140,29 @@
107140
(
108141
"CLICKHOUSE_EXTRA_XML_CONFIG",
109142
"""
143+
<!-- Port for HTTP API. See also 'https_port' for secure connections.
144+
This interface is also used by ODBC and JDBC drivers (DataGrip, Dbeaver, ...)
145+
and by most of web interfaces (embedded UI, Grafana, Redash, ...).
146+
-->
147+
<http_port>{{CLICKHOUSE_INTERNAL_HTTP_PORT}}</http_port>
148+
149+
<!-- Port for interaction by native protocol with:
150+
- clickhouse-client and other native ClickHouse tools (clickhouse-benchmark, clickhouse-copier);
151+
- clickhouse-server with other clickhouse-servers for distributed query processing;
152+
- ClickHouse drivers and applications supporting native protocol
153+
(this protocol is also informally called as "the TCP protocol");
154+
See also 'tcp_port_secure' for secure connections.
155+
-->
156+
<tcp_port>{{CLICKHOUSE_INTERNAL_NATIVE_PORT}}</tcp_port>
157+
110158
<listen_host>::</listen_host>
111159
<listen_host>0.0.0.0</listen_host>
112160
<listen_try>1</listen_try>
113161
""",
114162
),
115163
(
116164
"CLICKHOUSE_URL",
117-
"{{CLICKHOUSE_HOST}}:{{CLICKHOUSE_PORT}}",
165+
"{{CLICKHOUSE_HOST}}:{{CLICKHOUSE_INTERNAL_HTTP_PORT}}",
118166
),
119167
(
120168
"CLICKHOUSE_REPORT_URL",
@@ -128,7 +176,8 @@
128176
(
129177
"CLICKHOUSE_ADMIN_SQLALCHEMY_URI",
130178
"clickhouse+native://{{CLICKHOUSE_ADMIN_USER}}:{{CLICKHOUSE_ADMIN_PASSWORD}}"
131-
"@{{CLICKHOUSE_HOST}}:{{CLICKHOUSE_CLIENT_PORT}}/{{ASPECTS_XAPI_DATABASE}}"
179+
"@{{CLICKHOUSE_HOST}}:{{CLICKHOUSE_INTERNAL_NATIVE_PORT}}/{{"
180+
"ASPECTS_XAPI_DATABASE}}"
132181
"{% if CLICKHOUSE_SECURE_CONNECTION %}?secure=True{% endif %}",
133182
),
134183
######################

tutoraspects/templates/aspects/apps/aspects/dbt/profiles.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ aspects: # this needs to match the profile in your dbt_project.yml file
55
type: clickhouse
66
schema: {{ DBT_PROFILE_TARGET_DATABASE }}
77
host: {{ CLICKHOUSE_HOST }}
8-
port: {{ CLICKHOUSE_PORT }}
8+
port: {{ CLICKHOUSE_INTERNAL_HTTP_PORT }}
99
user: {{ CLICKHOUSE_ADMIN_USER }}
1010
password: '{{ CLICKHOUSE_ADMIN_PASSWORD }}'
1111

tutoraspects/templates/aspects/apps/aspects/scripts/clickhouse-demo-xapi-data.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ xapi-db-load --backend ralph_clickhouse \
44
--num_batches $1 \
55
--batch_size $2 \
66
--db_host "{{ CLICKHOUSE_HOST }}" \
7-
--db_port "{{ CLICKHOUSE_PORT }}" \
7+
--db_port "{{ CLICKHOUSE_INTERNAL_HTTP_PORT }}" \
88
--db_username "{{ CLICKHOUSE_ADMIN_USER }}" \
99
--db_password "{{ CLICKHOUSE_ADMIN_PASSWORD }}" \
1010
--db_name "{{ ASPECTS_XAPI_DATABASE }}" \

tutoraspects/templates/aspects/apps/ralph/config/env

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ RALPH_APP_DIR=/app/.ralph
33

44
# ClickHouse database backend
55
RALPH_BACKENDS__DATABASE__CLICKHOUSE__HOST={{CLICKHOUSE_HOST}}
6-
RALPH_BACKENDS__DATABASE__CLICKHOUSE__PORT={{CLICKHOUSE_PORT}}
6+
RALPH_BACKENDS__DATABASE__CLICKHOUSE__PORT={{CLICKHOUSE_INTERNAL_HTTP_PORT}}
77
RALPH_BACKENDS__DATABASE__CLICKHOUSE__DATABASE={{ASPECTS_XAPI_DATABASE}}
88
RALPH_BACKENDS__DATABASE__CLICKHOUSE__EVENT_TABLE_NAME={{ASPECTS_RAW_XAPI_TABLE}}
99
RALPH_BACKENDS__DATABASE__CLICKHOUSE__TEST_HOST=clickhouse

tutoraspects/templates/aspects/apps/vector/partials/common-post.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ auth.password = "{{ ASPECTS_CLICKHOUSE_VECTOR_PASSWORD }}"
104104
# Required: https://github.com/timberio/vector/issues/5797
105105
encoding.timestamp_format = "unix"
106106
inputs = ["tracking"]
107-
endpoint = "{% if CLICKHOUSE_SECURE_CONNECTION %}https{% else %}http{% endif %}://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_PORT }}"
107+
endpoint = "{% if CLICKHOUSE_SECURE_CONNECTION %}https{% else %}http{% endif %}://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_INTERNAL_HTTP_PORT }}"
108108
database = "{{ ASPECTS_VECTOR_DATABASE }}"
109109
table = "{{ ASPECTS_VECTOR_RAW_TRACKING_LOGS_TABLE }}"
110110
healthcheck = true
@@ -119,7 +119,7 @@ encoding.timestamp_format = "unix"
119119
# Allows better parsing of date times
120120
date_time_best_effort = true
121121
inputs = ["xapi"]
122-
endpoint = "{% if CLICKHOUSE_SECURE_CONNECTION %}https{% else %}http{% endif %}://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_PORT }}"
122+
endpoint = "{% if CLICKHOUSE_SECURE_CONNECTION %}https{% else %}http{% endif %}://{{ CLICKHOUSE_HOST }}:{{ CLICKHOUSE_INTERNAL_HTTP_PORT }}"
123123
database = "{{ ASPECTS_VECTOR_DATABASE }}"
124124
table = "{{ ASPECTS_VECTOR_RAW_XAPI_TABLE }}"
125125
healthcheck = true

tutoraspects/templates/aspects/jobs/init/clickhouse/deduplicate.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
echo "Initialising Clickhouse..."
22
ch_connection_max_attempts=10
33
ch_connection_attempt=0
4-
until clickhouse client --user {{ CLICKHOUSE_ADMIN_USER }} --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_CLIENT_PORT }}{% endif %} -q 'exit'
4+
until clickhouse client --user {{ CLICKHOUSE_ADMIN_USER }} --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_INTERNAL_NATIVE_PORT }}{% endif %} -q 'exit'
55
do
66
ch_connection_attempt=$(expr $ch_connection_attempt + 1)
77
echo " [$ch_connection_attempt/$ch_connection_max_attempts] Waiting for Clickhouse service (this may take a while)..."
@@ -16,7 +16,7 @@ echo "Clickhouse is up and running"
1616

1717
echo "Running deduplication script..."
1818

19-
clickhouse client --user "{{ CLICKHOUSE_ADMIN_USER }}" --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_CLIENT_PORT }}{% endif %} --multiquery <<'EOF'
19+
clickhouse client --user "{{ CLICKHOUSE_ADMIN_USER }}" --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_INTERNAL_NATIVE_PORT }}{% endif %} --multiquery <<'EOF'
2020
-- Optimize final
2121
OPTIMIZE TABLE {{ASPECTS_XAPI_DATABASE}}.{{ASPECTS_RAW_XAPI_TABLE}} FINAL;
2222
OPTIMIZE TABLE {{ASPECTS_XAPI_DATABASE}}.{{ASPECTS_ENROLLMENT_EVENTS_TABLE}} FINAL;

tutoraspects/templates/aspects/jobs/init/clickhouse/init-clickhouse.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
echo "Initialising Clickhouse..."
22
ch_connection_max_attempts=10
33
ch_connection_attempt=0
4-
until clickhouse client --user {{ CLICKHOUSE_ADMIN_USER }} --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_CLIENT_PORT }}{% endif %} -q 'exit'
4+
until clickhouse client --user {{ CLICKHOUSE_ADMIN_USER }} --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_INTERNAL_NATIVE_PORT }}{% endif %} -q 'exit'
55
do
66
ch_connection_attempt=$(expr $ch_connection_attempt + 1)
77
echo " [$ch_connection_attempt/$ch_connection_max_attempts] Waiting for Clickhouse service (this may take a while)..."
@@ -16,7 +16,7 @@ echo "Clickhouse is up and running"
1616

1717
echo "Running schema creation scripts..."
1818

19-
clickhouse client --user "{{ CLICKHOUSE_ADMIN_USER }}" --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_CLIENT_PORT }}{% endif %} --multiquery <<'EOF'
19+
clickhouse client --user "{{ CLICKHOUSE_ADMIN_USER }}" --password="{{ CLICKHOUSE_ADMIN_PASSWORD }}" --host "{{ CLICKHOUSE_HOST }}" {% if CLICKHOUSE_SECURE_CONNECTION %} --secure {% else %} --port {{ CLICKHOUSE_INTERNAL_NATIVE_PORT }}{% endif %} --multiquery <<'EOF'
2020
-- Create databases
2121
CREATE DATABASE IF NOT EXISTS {{ ASPECTS_XAPI_DATABASE }};
2222
CREATE DATABASE IF NOT EXISTS {{ ASPECTS_EVENT_SINK_DATABASE }};

0 commit comments

Comments
 (0)