Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: No negative roles

...

  1. “data” role: A node with this role can host data hosting replicas. By default, this is the case for all nodes. However, if a node specifically wants no data to be hosted, it needs to have a “!data” (or “no data”) role. This ! notation is needed to unset any role that is assumed to be true by default, i.e. “data” role.
  2. “overseer” role: A node with this role indicates that this node is a preferred overseer. When one or more such nodes are live, Solr guarantees that one of those nodes become the overseer.
  3. “coordinator” role [UPCOMING FEATURE]: This role can be associated with a node to where requests can be sent, and this node sends out other remote calls to data hosting nodes, aggregates the results and sends back to user. This will be useful for dealing with distributed query requests, bulk indexing & streaming expressions based queries. See
    Jira
    serverASF JIRA
    serverId5aa69414-a9e9-3523-82ec-879b028fb15b
    keySOLR-15715
    . This is very similar in concept to ElasticSearch's coordinating nodes. A coordinator node would be assumed to have no data hosted on it.
  4. “zookeeper” role [UPCOMING FEATURE]: This role can be associated with nodes that can have embedded ZK nodes. See: https://cwiki.apache.org/confluence/display/SOLR/SIP-14+Embedded+Zookeeper


Notes:

  1. If "-Dnode.roles" parameter is not passed, it is implicitly assumed to be "-Dnodes.role=data".

Public Interfaces

There will just one supported way to use the roles functionality:

...

  1. Data node that can act as preferred overseer too:
        -Dnode.roles=overseer
        -Dnode.roles=overseer,data
  2. Preferred overseer node with no data (dedicated overseer): -Dnode.roles=overseer
  3. Preferred overseer ,!with data: -Dnode.roles=overseer,data
  4. Coordinator node: -Dnode.roles=coordinator

...

Proposing the roles as:
* Layer1 nodes are the "data nodes" and hence get either no role defined for them or -Dnode.roles=data.
* Layer2 nodes are "overseer nodes" (though, only one of them can be an overseer at a time). They get -Dnode.roles=!data,overseer
* Layer3 nodes are "coordinator nodes", no data must be hosted on these nodes and they are started with -Dnode.roles=coordinator

...

     “node2”: [“overseer”, “!data”“data”],

     “node3”: [“data”]

}

...

“overseer” : [“node1”, “node2],

“!data” “data” : [“node1”, “node2”]

}

Other notes

  • Every time a node starts up with specified roles, the node assumes it is the correct role for that node and publishes those roles in ZK after successful startup.
  • If a node is being assigned a !data role via startup parameterstarted with a -Dnode.roles parameter that doesn't have a data role, but it already has data hosting replicas on it, the startup fails with an error (and a hint indicating how to move replicas away from this replica).
  • If a coordinator node is started with "data" role also, it fails to startup with a message indicating a node cannot both be coordinator and data node.

...