Pomijając dziwnie brzmiący tytuł tego wpisu, chcielibyśmy podzielić się kolejną nowością jaką będzie można znaleźć w nadchodzącym Solr 4.1, a mianowicie możliwość umieszczenia więcej, niż pojedynczej części kolekcji na pojedynczej instancji Solr w ramach klastra. Tak, do tej pory nie było to możliwe. Spójrzmy więc, jak zmienia się Solr 4.1 w stosunku do obecnej wersji 4.0.
Aby zilustrować różnicę postanowiłem zobaczyć, jak wygląda proces tworzenia kolekcji składającej się z dwóch części (shard’ów) i działającej na pojedynczej maszynie.
Solr 4.0
Solr.xml
Spójrzmy, jak wygląda proces tworzenia kolekcji w przypadku Solr 4.0. Czyścimy plik solr.xml, tak aby nie było w nim żadnych wpisów dotyczących rdzeni, jeżeli przechodzimy ze starej instancji Solr.
Uruchamiamy Solr
Następnie uruchamiamy pojedynczą instancję Solr, a wraz z nią ZooKeepera za pomocą następującej komendy:
java -DzkRun -jar start.jar
Przygotowanie konfiguracji
Przed stworzeniem kolekcji musimy przesłać konfigurację, którą zamierzamy użyć do jej stworzenia. Zakładając, że zainstalowałem Solr w katalogu /home/solrpl/solr/ oraz, że pliki konfiguracyjne umieściłem w katalogu /home/solrpl/configs/collection1/conf uruchamiam następujący skrypt dostępny wraz z Solr 4.0:
/home/solrpl/solr/cloud-scripts/zkcli.sh -cmd upconfig -zkhost localhost:9983 -confdir /home/solrpl/configs/collection1/conf/ -confname collection1
Stworzenie kolekcji
Jako, że mamy już konfigurację z ZooKeeperze możemy stworzyć nową kolekcję korzystając z API kolekcji. W tym celu wysyłamy zapytanie do /solr/admin/collections z parametrem action=CREATE mówiącym, że chcemy stworzyć kolekcję. Dodatkowo podajemy jej nazwę (parametr name=collection1). Oprócz tego informujemy Solr, że chcemy podzielić kolekcję na dwie części (parametr numShard=2) oraz, że w tym momencie nie chcemy replik (replicationFactor=0). Zatem pełne zapytanie wygląda następująco:
curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=0'
Widok panelu administracyjnego
Widok chmury w panelu administracyjnym, po uruchomieniu powyższego polecenia, wygląda następująco:
Kilka słów komentarza
Jak widać, Solr 4.0 nie pozwolił nam na umieszczenie dwóch części tej samej kolekcji na jednej instancji Solr. Część oznaczona jako shard1 została umieszczona na maszynie xubuntu-virtual, ale już część shard2 nie została umieszczona na tej maszynie, co oznacza, że nie mamy dostępnej pełnej kolekcji. Oczywiście, jeżeli mielibyśmy więcej, niż jedną instancję Solr sytuacja uległaby zmianie, ale nie o tym mowa w niniejszym wpisie.
Solr 4.1
Solr.xml
Podobnie jak w przypadku Solr 4.0 zaczynamy od czyszczenia pliku solr.xml, który powinien wyglądać tak samo, jak poprzednio. Oczywiście, jeżeli przechodzimy ze starszej wersji Solr.
Uruchamiamy Solr
Następnie uruchamiamy pojedynczą instancję Solr, a wraz z nią ZooKeepera za pomocą dokładnie tej samej komendy co poprzednio:
java -DzkRun -jar start.jar
Przygotowanie konfiguracji
Podobnie jak w przypadku Solr 4.0, do wrzucenia konfiguracji do ZooKeepera korzystamy z tego samego polecenia:
/home/solrpl/solr/cloud-scripts/zkcli.sh -cmd upconfig -zkhost localhost:9983 -confdir /home/solrpl/configs/collection1/conf/ -confname collection1
Stworzenie kolekcji
Podobnie, jak w przypadku Solr 4.0 musimy teraz stworzyć kolekcję. Parametry action, collection i numShards nie ulegają zmianie. Dochodzi nowy parametr – maxShardsPerNode, określający maksymalną ilość części z jednej kolekcji, jaką Solr może umieścić na tej samej instancji Solr (domyślnie ustawiony na wartość 1). W naszym wypadku, ze względu na to, że chcemy mieć maksymalnie dwie części kolekcji umieszczone w ramach jednej instancji, ustawiamy ten parametr na wartość 2. Dodatkowo Solr wymusza na nas stworzenie przynajmniej jednej repliki i dlatego ustawiliśmy parametr replicationFactor na 1. Całe zapytanie wygląda następująco:
curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=1&maxShardsPerNode=2'
Widok panelu administracyjnego
Widok chmury w panelu administracyjnym, po uruchomieniu powyższego polecenia, wygląda następująco:
Kilka słów komentarza
Jak widać w przypadku Solr 4.1 byliśmy w stanie stworzyć kolekcję podzieloną na dwie części, które to części umieszczone są w ramach tej samej instancji Solr. Zatem jeżeli ogranicza Was obecna funkcjonalność Solr 4.0, która na to nie pozwala, można ze spokojem oczekiwać Solr 4.1.