feat: initialize
This commit is contained in:
commit
1cc35d5ce2
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2022 Reinaldy Rafli <aldy505@proton.me>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,54 @@
|
|||
# Local Clickhouse Cluster with Docker Compose
|
||||
|
||||
Sets up a local Clickhouse cluster with 3 nodes (and Zookeeper as a bonus).
|
||||
|
||||
To run it:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
There is no authentication, just log in with the `default` user with no password at all.
|
||||
|
||||
There is a cluster already set up called `localcluster`.
|
||||
|
||||
Prometheus metrics is available at `/metrics` endpoint on port `9363` of each node.
|
||||
|
||||
To connect with Go:
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/ClickHouse/clickhouse-go/v2"
|
||||
)
|
||||
|
||||
func main() {
|
||||
clickhouseOptions, err := clickhouse.ParseDSN("clickhouse://default:@127.0.0.1:19000,127.0.0.1:29000,127.0.0.1:39000/default?dial_timeout=200ms&max_execution_time=60&debug=true")
|
||||
if err != nil {
|
||||
// handle your error
|
||||
}
|
||||
|
||||
clickhouseConnection, err := clickhouse.Open(clickhouseOptions)
|
||||
if err != nil {
|
||||
// handle your error
|
||||
}
|
||||
defer func () {
|
||||
err := clickhouseConnection.Close()
|
||||
if err != nil {
|
||||
// handle your error
|
||||
}
|
||||
}()
|
||||
|
||||
// To query with to the "localcluster"
|
||||
err = clickhouseConnection.Exec(
|
||||
context.Background(),
|
||||
`CREATE DATABASE IF NOT EXISTS "sampledatabase" ON CLUSTER "localcluster"`,
|
||||
)
|
||||
if err != nil {
|
||||
// handle your error
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,40 @@
|
|||
<clickhouse>
|
||||
<listen_host>::1</listen_host>
|
||||
<listen_host>0.0.0.0</listen_host>
|
||||
<remote_servers>
|
||||
<localcluster>
|
||||
<shard>
|
||||
<internal_replication>true</internal_replication>
|
||||
<replica>
|
||||
<host>ch1</host>
|
||||
<port>9000</port>
|
||||
</replica>
|
||||
<replica>
|
||||
<host>ch2</host>
|
||||
<port>9000</port>
|
||||
</replica>
|
||||
<replica>
|
||||
<host>ch3</host>
|
||||
<port>9000</port>
|
||||
</replica>
|
||||
</shard>
|
||||
</localcluster>
|
||||
</remote_servers>
|
||||
|
||||
<zookeeper>
|
||||
<node>
|
||||
<host>zookeeper</host>
|
||||
<port>2181</port>
|
||||
</node>
|
||||
</zookeeper>
|
||||
|
||||
<prometheus>
|
||||
<endpoint>/metrics</endpoint>
|
||||
<port>9363</port>
|
||||
|
||||
<metrics>true</metrics>
|
||||
<events>true</events>
|
||||
<asynchronous_metrics>true</asynchronous_metrics>
|
||||
<status_info>true</status_info>
|
||||
</prometheus>
|
||||
</clickhouse>
|
|
@ -0,0 +1,90 @@
|
|||
services:
|
||||
ch1:
|
||||
image: clickhouse/clickhouse-server:22.8.1
|
||||
restart: on-failure:10
|
||||
volumes:
|
||||
- ./config.xml:/etc/clickhouse-server/config.d/local.xml
|
||||
- ./macro1.xml:/etc/clickhouse-server/config.d/macros.xml
|
||||
- ch1data:/var/lib/clickhouse
|
||||
ports:
|
||||
- '18123:8123'
|
||||
- '19000:9000'
|
||||
ulimits:
|
||||
nproc: 65536
|
||||
nofile:
|
||||
soft: 252144
|
||||
hard: 252144
|
||||
healthcheck:
|
||||
test: wget --spider -q localhost:8123/ping
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
zookeeper:
|
||||
condition: service_healthy
|
||||
ch2:
|
||||
image: clickhouse/clickhouse-server:22.8.1
|
||||
restart: on-failure:10
|
||||
volumes:
|
||||
- ./config.xml:/etc/clickhouse-server/config.d/local.xml
|
||||
- ./macro2.xml:/etc/clickhouse-server/config.d/macros.xml
|
||||
- ch2data:/var/lib/clickhouse
|
||||
ports:
|
||||
- '28123:8123'
|
||||
- '29000:9000'
|
||||
ulimits:
|
||||
nproc: 65536
|
||||
nofile:
|
||||
soft: 252144
|
||||
hard: 252144
|
||||
healthcheck:
|
||||
test: wget --spider -q localhost:8123/ping
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
zookeeper:
|
||||
condition: service_healthy
|
||||
ch1:
|
||||
condition: service_started
|
||||
ch3:
|
||||
image: clickhouse/clickhouse-server:22.8.1
|
||||
restart: on-failure:10
|
||||
volumes:
|
||||
- ./config.xml:/etc/clickhouse-server/config.d/local.xml
|
||||
- ./macro3.xml:/etc/clickhouse-server/config.d/macros.xml
|
||||
- ch3data:/var/lib/clickhouse
|
||||
ports:
|
||||
- '38123:8123'
|
||||
- '39000:9000'
|
||||
ulimits:
|
||||
nproc: 65536
|
||||
nofile:
|
||||
soft: 252144
|
||||
hard: 252144
|
||||
healthcheck:
|
||||
test: wget --spider -q localhost:8123/ping
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
zookeeper:
|
||||
condition: service_healthy
|
||||
ch1:
|
||||
condition: service_started
|
||||
zookeeper:
|
||||
image: zookeeper:3.8.0
|
||||
restart: on-failure:10
|
||||
healthcheck:
|
||||
test: [ "CMD", "sh", "-c", "nc -nz 127.0.0.1 2181" ]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
volumes:
|
||||
ch1data:
|
||||
ch2data:
|
||||
ch3data:
|
|
@ -0,0 +1,6 @@
|
|||
<clickhouse>
|
||||
<macros replace="replace">
|
||||
<cluster>localcluster</cluster>
|
||||
<replica>ch1</replica>
|
||||
</macros>
|
||||
</clickhouse>
|
|
@ -0,0 +1,6 @@
|
|||
<clickhouse>
|
||||
<macros replace="replace">
|
||||
<cluster>localcluster</cluster>
|
||||
<replica>ch2</replica>
|
||||
</macros>
|
||||
</clickhouse>
|
|
@ -0,0 +1,6 @@
|
|||
<clickhouse>
|
||||
<macros replace="replace">
|
||||
<cluster>localcluster</cluster>
|
||||
<replica>ch3</replica>
|
||||
</macros>
|
||||
</clickhouse>
|
Loading…
Reference in New Issue