forked from ClickHouse/ClickHouse
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ClickHouse#71911 from ianton-ru/auxiliary_autodico…
…very Auxiliary autodiscovery
- Loading branch information
Showing
17 changed files
with
219 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
tests/integration/test_cluster_discovery/config/config_discovery_path.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<clickhouse> | ||
<remote_servers> | ||
<test_auto_cluster> | ||
<discovery> | ||
<path>/clickhouse/discovery/test_auto_cluster</path> | ||
</discovery> | ||
</test_auto_cluster> | ||
</remote_servers> | ||
</clickhouse> |
9 changes: 9 additions & 0 deletions
9
tests/integration/test_cluster_discovery/config/config_discovery_path_auxiliary_keeper.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<clickhouse> | ||
<remote_servers> | ||
<test_auto_cluster> | ||
<discovery> | ||
<path>zookeeper2:/clickhouse/discovery/test_auto_cluster</path> | ||
</discovery> | ||
</test_auto_cluster> | ||
</remote_servers> | ||
</clickhouse> |
24 changes: 24 additions & 0 deletions
24
tests/integration/test_cluster_discovery/config/config_keepers.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<clickhouse> | ||
<zookeeper> | ||
<node index="1"> | ||
<host>zoo1</host> | ||
<port>2181</port> | ||
</node> | ||
<node index="2"> | ||
<host>zoo2</host> | ||
<port>2181</port> | ||
</node> | ||
<node index="3"> | ||
<host>zoo3</host> | ||
<port>2181</port> | ||
</node> | ||
</zookeeper> | ||
<auxiliary_zookeepers> | ||
<zookeeper2> | ||
<node index="1"> | ||
<host>zoo1</host> | ||
<port>2181</port> | ||
</node> | ||
</zookeeper2> | ||
</auxiliary_zookeepers> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard0</shard> | ||
<replica>replica0</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard1</shard> | ||
<replica>replica1</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard2</shard> | ||
<replica>replica2</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard3</shard> | ||
<replica>replica3</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard4</shard> | ||
<replica>replica4</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<clickhouse> | ||
<macros> | ||
<shard>shard_o</shard> | ||
<replica>replica_o</replica> | ||
</macros> | ||
</clickhouse> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
127 changes: 127 additions & 0 deletions
127
tests/integration/test_cluster_discovery/test_auxiliary_keeper.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
import functools | ||
|
||
import pytest | ||
|
||
from helpers.cluster import ClickHouseCluster | ||
|
||
from .common import check_on_cluster | ||
|
||
cluster = ClickHouseCluster(__file__) | ||
|
||
shard_configs = { | ||
"node0": ["config/config.xml", "config/macros0.xml"], | ||
"node1": ["config/config_shard1.xml", "config/macros1.xml"], | ||
"node2": ["config/config.xml", "config/macros2.xml"], | ||
"node3": ["config/config_shard3.xml", "config/macros3.xml"], | ||
"node4": ["config/config.xml", "config/macros4.xml"], | ||
"node_observer": ["config/config_observer.xml", "config/macros_o.xml"], | ||
} | ||
|
||
nodes = { | ||
node_name: cluster.add_instance( | ||
node_name, | ||
main_configs=shard_config | ||
+ [ | ||
"config/config_discovery_path_auxiliary_keeper.xml", | ||
"config/config_keepers.xml", | ||
], | ||
stay_alive=True, | ||
with_zookeeper=True, | ||
) | ||
for node_name, shard_config in shard_configs.items() | ||
} | ||
|
||
|
||
@pytest.fixture(scope="module") | ||
def start_cluster(): | ||
try: | ||
cluster.start() | ||
yield cluster | ||
finally: | ||
cluster.shutdown() | ||
|
||
|
||
def test_cluster_discovery_with_auxiliary_keeper_startup_and_stop(start_cluster): | ||
""" | ||
Start cluster, check nodes count in system.clusters, | ||
then stop/start some nodes and check that it (dis)appeared in cluster. | ||
""" | ||
|
||
check_nodes_count = functools.partial( | ||
check_on_cluster, what="count()", msg="Wrong nodes count in cluster" | ||
) | ||
check_shard_num = functools.partial( | ||
check_on_cluster, | ||
what="count(DISTINCT shard_num)", | ||
msg="Wrong shard_num count in cluster", | ||
) | ||
|
||
total_shards = 3 | ||
total_nodes = 5 | ||
|
||
check_nodes_count( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_nodes | ||
) | ||
check_shard_num( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_shards | ||
) | ||
|
||
# test ON CLUSTER query | ||
nodes["node0"].query( | ||
"CREATE TABLE tbl ON CLUSTER 'test_auto_cluster' (x UInt64) ENGINE = ReplicatedMergeTree('zookeeper2:/clickhouse/{shard}/tbl', '{replica}') ORDER BY x" | ||
) | ||
nodes["node0"].query("INSERT INTO tbl VALUES (1)") | ||
nodes["node1"].query("INSERT INTO tbl VALUES (2)") | ||
|
||
assert ( | ||
int( | ||
nodes["node_observer"] | ||
.query( | ||
"SELECT sum(x) FROM clusterAllReplicas(test_auto_cluster, default.tbl)" | ||
) | ||
.strip() | ||
) | ||
== 3 | ||
) | ||
|
||
# Query SYSTEM DROP DNS CACHE may reload cluster configuration | ||
# check that it does not affect cluster discovery | ||
nodes["node1"].query("SYSTEM DROP DNS CACHE") | ||
nodes["node0"].query("SYSTEM DROP DNS CACHE") | ||
|
||
check_shard_num( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_shards | ||
) | ||
|
||
nodes["node1"].stop_clickhouse(kill=True) | ||
check_nodes_count( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_nodes - 1 | ||
) | ||
|
||
# node1 was the only node in shard '1' | ||
check_shard_num( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_shards - 1 | ||
) | ||
|
||
nodes["node3"].stop_clickhouse() | ||
check_nodes_count( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_nodes - 2 | ||
) | ||
|
||
nodes["node1"].start_clickhouse() | ||
check_nodes_count( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_nodes - 1 | ||
) | ||
|
||
nodes["node3"].start_clickhouse() | ||
check_nodes_count( | ||
[nodes["node0"], nodes["node2"], nodes["node_observer"]], total_nodes | ||
) | ||
|
||
# regular cluster is not affected | ||
check_nodes_count( | ||
[nodes["node1"], nodes["node2"]], 2, cluster_name="two_shards", retries=1 | ||
) | ||
|
||
# cleanup | ||
nodes["node0"].query("DROP TABLE tbl ON CLUSTER 'test_auto_cluster' SYNC") |