Blog

SolrCloud as a Windows Service

Want to setup a simple solrCloud network on Windows? If you are just running a couple nodes and intend to run the embedded ZooKeeper heres how to get it done.

First, make a list of the ip addresses (or better yet, hostnames) of your servers. Youll need this for the ZooKeeper bit of the solr configuration.

Download a copy of Solr 4.3 or greater. Extract it somewhere reasonable on your first server. For simplicity well assume C:SolrCloud, if not find/replace in your favorite editor will be handy.

Next, grab the Apache Commons daemon for Windows. Unzip it somewhere off to the side. Inside youll find two executables: prunmgr and prunsrv. Copy prunmgr.exe to C:SolrCloud and rename it to solrCloudw.exe. Do the same for prunsrv.exe, but name it solrCloud.exe (no “w” at the end of the name).

Open a command prompt (Start->Run then “cmd.exe” and enter).

cd C:SolrCloud

Then, run the following to register your first server service:

solrCloud.exe //IS/solrCloudZk --DisplayName="Solr Cloud with Zookeeper"  --Install=c:solr-cloudsolr-cloudexamplesolrCloud.exe  --LogPath=c:solr-cloudsolr-cloudexamplelogs  --LogLevel=Debug  --StdOutput=auto  --StdError=auto  --StartMode=java  --StopMode=java  --Jvm=auto  ++JvmOptions=-Djetty.home=c:SolrCloudexamplesolr  ++JvmOptions=-DSTOP.PORT=8087  ++JvmOptions=-DSTOP.KEY=stopsolr  ++JvmOptions=-Djetty.logs=c:SolrCloudexamplelogs  ++JvmOptions=-Djetty.port=8983  ++JvmOptions=-Dorg.eclipse.jetty.util.log.SOURCE=true  ++JvmOptions=-XX:MaxPermSize=512M  --Classpath=c:SolrCloudexamplestart.jar  --StartClass=org.eclipse.jetty.start.Main  ++StartParams=OPTION=ALL  ++StartParams=c:SolrCloudexampleetcjetty.xml  --StopClass=org.eclipse.jetty.start.Main ++StopParams=--stop  ++JvmOptions=-Dsolr.solr.home=c:SolrCloudexamplesolr  --StartPath=c:SolrCloudexample  --JavaHome="c:Program FilesJavajre6"  ++JvmOptions=-DzkHost=10.5.0.1:9983;10.5.0.2:9983  ++JvmOptions=-DzkRun  ++JvmOptions=-DnumShards=1  ++JvmOptions=-Dcollection.configName=myconf  ++JvmOptions=-Dbootstrap_confdir=c:SolrCloudexamplesolrconf

A couple things to note here.

  1. Make sure to edit the line with “++JvmOptions=-DzkHost=10.5.0.1:9983;10.5.0.2:9983″. This should be a list of your servers with “:9983″ on the end of each. And, yes, you could supply a custom ZooKeeper root here by doing something like “:9983/myroot”. No need since we are running the embedded ZooKeeper, but who wants to do that forever?

  2. Check all the paths and make sure they reflect your setup. As mentioned, we are using “c:SolrCloud” for simplicity.

  3. Dont forget that we are writing logs to the C:SolrCloudexamplelogs directory. These can be very handy for trouble shooting.

  4. This setup will reset the the Solr config in ZooKeeper every time this server is restarted. You could remove this behavior by reregistering the service without the last line after it has run once. For now, Id recommend keeping it until you are comfortable managing your own ZooKeeper servers. At that point you can drop the last for lines, and manage Zk as its on server/service.

Start the service:

 solrCloud.exe //SS

Repeat the above on the rest of your servers, with one change. Remove the last line of the service setup, “++JvmOptions=-Dbootstrap_confdir=c:SolrCloudexamplesolrconf”.

You now have a SolrCloud cluster running on Windows!

Thanks to Alexandre Rafalovitch and his article on Solr as a Windows Service. Have a look there if you want to run Solr on Windows, but not SolrCloud.