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

This eliminates one place in which we currently need to mirror changes to the script-land Cluster::Node record. Instead of keeping an exact in-core equivalent, the Supervisor now treats the data structure as opaque, and stores the whole cluster table as a JSON string. We may replace the script-layer Supervisor::ClusterEndpoint in the future, using Cluster::Node directly. But that's a more invasive change that will affect how people invoke Supervisor::create() and similars. Relying on JSON for serialization has the side-effect of removing the Supervisor's earlier quirk of using 0/tcp, not 0/unknown, to indicate unused ports in the Supervisor::ClusterEndpoint record.
62 lines
1.6 KiB
Text
62 lines
1.6 KiB
Text
# Load the core cluster support.
|
|
@load ./main
|
|
@load ./pools
|
|
|
|
@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
|
|
|
|
@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
|