mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00

Allow access to the Cluster's subscribe(), unsubscribe(), publish(), publish_hrw() and publish_rr() methods by loading only the base/frameworks/cluster/pubsub, rather than everything that __load__.zeek or also main.zeek pulls in. This can be used by other scripts to use these functions without relying or expecting the rest of the cluster framework to be loaded already. Concretely, this is needed to move the Supervisor framework from Broker to Cluster.
71 lines
1.8 KiB
Text
71 lines
1.8 KiB
Text
# Load the core cluster support.
|
|
@load ./main
|
|
@load ./pools
|
|
@load ./pubsub
|
|
@load ./telemetry
|
|
@load ./types
|
|
|
|
@if ( Cluster::is_enabled() )
|
|
|
|
# Give the node being started up it's peer name.
|
|
redef peer_description = Cluster::node;
|
|
|
|
@if ( Cluster::enable_round_robin_logging )
|
|
redef Broker::log_topic = Cluster::rr_log_topic;
|
|
@endif
|
|
|
|
# Add a cluster prefix.
|
|
@prefixes += cluster
|
|
|
|
# Broker-specific additions:
|
|
@if ( Cluster::backend == Cluster::CLUSTER_BACKEND_BROKER )
|
|
@load ./broker-backpressure
|
|
@load ./broker-telemetry
|
|
@endif
|
|
|
|
@if ( Supervisor::is_supervised() )
|
|
# When running a supervised cluster, populate Cluster::nodes from the node table
|
|
# the Supervisor provides to new Zeek nodes. The management framework configures
|
|
# the cluster this way.
|
|
@load ./supervisor
|
|
@if ( Cluster::Supervisor::__init_cluster_nodes() && Cluster::get_node_count(Cluster::LOGGER) > 0 )
|
|
redef Cluster::manager_is_logger = F;
|
|
@endif
|
|
@endif
|
|
|
|
@if ( |Cluster::nodes| == 0 )
|
|
# Fall back to loading a cluster topology from cluster-layout.zeek. If Zeek
|
|
# cannot find this script in your ZEEKPATH, it will exit. The script should only
|
|
# contain the cluster definition in the :zeek:id:`Cluster::nodes` variable.
|
|
# The zeekctl tool manages this file for you.
|
|
@load cluster-layout
|
|
@endif
|
|
|
|
@if ( Cluster::node in Cluster::nodes )
|
|
|
|
@load ./setup-connections
|
|
|
|
@if ( Cluster::local_node_type() == Cluster::MANAGER )
|
|
@load ./nodes/manager
|
|
# If no logger is defined, then the manager receives logs.
|
|
@if ( Cluster::manager_is_logger )
|
|
@load ./nodes/logger
|
|
@endif
|
|
@endif
|
|
|
|
@if ( Cluster::local_node_type() == Cluster::LOGGER )
|
|
@load ./nodes/logger
|
|
@endif
|
|
|
|
@if ( Cluster::local_node_type() == Cluster::PROXY )
|
|
@load ./nodes/proxy
|
|
@endif
|
|
|
|
@if ( Cluster::local_node_type() == Cluster::WORKER )
|
|
@load ./nodes/worker
|
|
@endif
|
|
|
|
@load ./broker-stores.zeek
|
|
|
|
@endif
|
|
@endif
|