Migrating Solr Replicas
When you replace a host, migrating replicas on that host to the new host, instead of depending on failure recovery, can help ensure optimal performance.
Where possible, the Solr service routes requests to the proper host. Both
ADDREPLICA and DELETEREPLICA Collections API calls can
be sent to any host in the cluster. For more information on the Collections API, see Collections API in Apache Solr Reference Guide.
- For adding replicas, the
node
parameter ensures the new replica is created on the intended host. If no host is specified, Solr selects a host with relatively fewer replicas. - For deleting replicas, the request is routed to the host that hosts the replica to be deleted.
Adding replicas can be resource intensive. For best results, add replicas when the system is not under heavy load. For example, do not add replicas when heavy indexing is occurring or when MapReduceIndexerTool jobs are running.
Cloudera recommends using API calls to create and unload cores. Do not use the Cloudera Manager Admin Console or the Solr Admin UI for these tasks.
This procedure uses the following names:
- Host names:
- Origin:
solr01.example.com
. - Destination:
solr02.example.com
.
- Origin:
- Collection name:
email
- Replicas:
- The original replica
email_shard1_replica1
, which is onsolr01.example.com
. - The new replica
email_shard1_replica2
, which will be onsolr02.example.com
.
- The original replica
To migrate a replica to a new host:
- (Optional) If you want to add a replica to a particular node, review
the contents of the
live_nodes
directory on ZooKeeper to find all nodes available to host replicas. Open the Solr Administration User interface, click Cloud, click Tree, and expand live_nodes. The Solr Administration User Interface, including live_nodes, might appear as follows: - Add the new replica on
solr02.example.com
using the ADDREPLICA API call.http://solr01.example.com:8983/solr/admin/collections?action=ADDREPLICA&collection=email&shard=shard1&node=solr02.example.com:8983_solr
- Verify that the replica creation succeeds and moves from recovery
state to ACTIVE. You can check the replica status
in the Cloud view, which can be found at a URL similar to:
http://solr02.example.com:8983/solr/#/~cloud
. - Use the CLUSTERSTATUS API call to retrieve
information about the cluster, including current cluster
status:
http://solr01.example.com:8983/solr/admin/collections?action=clusterstatus&wt=json&indent=true
Review the returned information to find the correct replica to remove. An example of the JSON file might appear as follows: - Delete the old replica on
solr01.example.com
server using theDELETEREPLICA
API call:http://solr01.example.com:8983/solr/admin/collections?action=DELETEREPLICA&collection=email&shard=shard1&replica=core_node2
The DELETEREPLICA call removes the
datadir
.