Что такое ZooKeeper?
ZooKeeper — это распределенная служба координации распределенных приложений с открытым исходным кодом. Это реализация Google Chubby с открытым исходным кодом. Она является менеджером кластера и отслеживает состояние каждого узла в кластере. Следующий шаг разумен в соответствии с отправленными отзывами. узлами.
Функции ZooKeeper
-
Управление кластером Управление «главный-ведомый», балансировка нагрузки и управление высокой доступностью. Вход в кластер. Zookeeper должен быть кластером для обеспечения высокой доступности. Zookeeper имеет механизм выборов и голосования. В кластере должно быть не менее трех узлов.
-
Централизованное управление конфигурационными файлами При создании кластера solr вам необходимо загрузить файл конфигурации Solr в zookeeper, чтобы zookeeper мог управлять им единообразно. Каждый узел получает файл конфигурации из zookeeper.
Конфигурация кластера
- 3 смотрителя зоопарка
- солр 4 единицы
Кластерная конструкция
Создайте кластер зоопарка
-
скачатьZooKeeper
-
Загрузите ZooKeeper на сервер (инструмент sftp или lrzsz)
-
Распаковать ZooKeeper
-
Скопируйте zookeeper в /usr/local/solr-cloud три копии с именами zookeeper01, zookeeper02, zookeeper03 соответственно.
-
Настройте зоопарк.
-
Создайте папку данных в каталоге zookeeper01.
-
Создайте файл myid в каталоге данных
-
Содержимое myid равно 1. (02 соответствует «2», 03 соответствует «3»).
-
zookeeper02, 03 и так далее.
-
Войдите в conf и переименуйте zoo_sample.cfg в zoo.cfg.
-
Изменить zoo.cfg
- Укажите datadir = как папка, которую вы только что создали.
- clientPort указывается как неконфликтующий номер порта (01:2181,02:2182,03:2183)
- Добавьте следующее:
server.1=192.168.126.128: 2881:3881 server.2=192.168.126.128: 2882:3882 server.3=192.168.126.128: 2883:3883
-
-
начать смотритель зоопарка Используйте zkServer.sh в каталоге bin каталога zookeeper, чтобы запустить соответственно три зоопарка. Старт: ./zkServer.sh старт Остановить: ./zkServer.sh остановить Посмотреть статус ./zkServer.sh статус
Создайте solr-кластер
-
Установите 4 tomcats, отредактируйте server.xml и измените порты 8081-8084.
-
Разверните solr на tomcat. (Подробности см. в предыдущем блоге)
-
Создайте solrhome для каждого экземпляра solr.
-
Отредактируйте web.xml, чтобы связать каждый экземпляр solr с соответствующим solrhome.
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- Отредактируйте solr.xml для каждого solrhome и укажите соответствующий хост и порт.
<solrcloud>
<str name="host">${host:192.168.126.128}</str>
<int name="hostPort">${jetty.port:8081}</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
- Загрузите файл конфигурации в zookeeper. Файл конфигурации необходимо загрузить с помощью команды /root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh. (Другие файлы конфигурации solrhome также будут работать.)
./zkcli.sh -zkhost 192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome1/collection1/conf -confname myconf
- Проверьте, прошла ли загрузка успешно Используйте команду zkCli.sh в каталоге bin zookeeper.
./zkCli.sh #即可连接上 zookeeper 集群
Затем вы можете просмотреть файлы в кластере
- Сообщите экземпляру solr местонахождение zookeeper. Нужно отредактировать tomcat catalina.sh, добавить:
JAVA_OPTS="-DzkHost=192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183"
Каждый узел должен быть добавлен.
-
Запускайте каждый экземпляр solr отдельно
-
Разделение кластера Разделите кластер на два сегмента, каждый с двумя репликами. Доступ в адресной строке браузера:
http://192.168.126.128:8081/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
Если получен следующий результат, шардинг прошел успешно.
Обновите страницу облака solr.
- Удалить неиспользуемую коллекцию1.
http://192.168.126.128:8081/solr/admin/collections?action=DELETE&name=collection1
Подключение к кластеру с помощью Solrj
@Test
public void testSolrClout() throws Exception {
//创建一个SolrServer对象
CloudSolrServer solrServer = new CloudSolrServer("192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183");
//设置默认的collection
solrServer.setDefaultCollection("collection2");
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "test01");
document.addField("item_title", "title1");
//添加文档
solrServer.add(document);
//提交
solrServer.commit();
}
Переход на кластеризацию весной
<bean id ="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183"/>
<property name="defaultCollection" value="collection2"/>
</bean>