Инструменты управления ====================== Изменение конфигурации Grid --------------------------- Существует два варианта изменения конфигурации -- через интерфейс **ADCM** и через интерфейс кластера *Cartridge*. **1. Изменение конфигурации через интерфейс ADCM.** * Во вкладке "Clusters" интерфейса ADCM выбрать кластер *ADG* (*Grid*). * В открывшемся окне в меню слева выбрать пункт "Services". * В списке сервисов выбрать "Grid". * В меню слева выбрать пункт "Configuration". Топология и все настройки кластера содержатся в виде json в поле *cluster_topology* (:numref:`Рис.%s `). .. _mt1: .. figure:: ../../../images/mt1.png :align: center Окно конфигурации Grid с полем cluster_topology Для удобства редактирования файла топологии его целесообразно скопировать в текстовый редактор. * Сохранить изменения в поле *cluster_topology*, нажав кнопку "Save". * Для применения изменений на кластере нажать кнопку "Reconfigure". .. important:: Крайне не рекомендуется вносить существенных изменений в топологию (состав и расположение инстансов по хостам, состав репликасетов и т.п.), т.к. в случае таких изменений велик риск нарушения целостности кластера **2. Изменение конфигурации через интерфейс Cartridge.** * Открыть Web-интерфейс кластера (http://api-1-master-1:8811 либо URL HTTP Proxy, если он установлен). * В левой панели выбрать меню "Code" (:numref:`Рис.%s `). * Выбрать необходимый конфигурационный файл и отредактировать его. Изменения на кластере применяются автоматически, кроме настроек ``kafka.consumers``. Для применения этих изменений необходимо перезапустить сервис *Grid*. * При необходимости перезапустить сервис *Grid* в интерфейсе ADCM с помощью кнопки "Restart". .. _mt2: .. figure:: ../../../images/mt2.png :align: center Интерфейс конфигурации приложения в Cartridge * Изменения, сделанные в интерфейсе *Cartridge* необходимо загрузить в ADCM с помощью кнопки "Sync_config". Добавление инстанса в кластер ----------------------------- **1. Добавление инстанса реплики к существующему репликасету.** :Инстанс: Экземпляр процесса, выполняющий определенную роль. Например, инстанс типа *storage*: ``storage-2-master-1`` -- из наименования однозначно определяется: * *storage* -- тип инстанса; * *storage-2* -- наименование репликасета, где *2* -- индекс репликасета; * *master* -- роль в репликасете; * *1* -- индекс инстанса. Таким образом репликасет *storage-2* может содержать следующие инстансы: * *storage-2-master-1* * *storage-2-replica-1* * *storage-2-replica-2* * ... В примере уже создан репликасет хранилища (шард) *storage-1*, состоящий из двух инстансов: * *storage-1-master-1* * *storage-1-replica-1* Добавление дополнительной реплики ``storage-1-replica-1`` к шарду и расположение ее на хосте *adg1*: * В интерфейсе ADCM выбрать кластер *ADG*; * В списке сервисов выбрать *Grid*; * В интерфейсе сервиса нажать кнопку "Add_instance"; * В открывшемся диалоговом окне заполнить поля (:numref:`Рис.%s `): * *instance* -- тип инстанса, в рассматриваемом примере -- storage; * *replicaset_id* -- номер репликасета, для storage-1 -- 1; * *replicaset_role* -- master/replica, в рассматриваемом примере -- replica; * *instance_id* -- для ``storage-1-replica-2`` -- 2; * *host* -- хост, на который предполагается установить инстанс -- adg1. * *clean host* и *check host* -- следует оставить пустыми, т.к. установка инстанса производится на хост, уже содержащий компоненты Grid. .. important:: ``clean host`` удаляет все компоненты Grid c хоста, что может вызвать разрушение кластера. Эта опция применима только для вновь вводимого в кластер хоста .. _mt3: .. figure:: ../../../images/mt3.png :align: center Диалоговое окно добавления инстанса * Нажать кнопку "Run" для запуска процесса добавления нового инстанса, результатом которого является отображение его в интерфейсе Cartridge (:numref:`Рис.%s `). .. _mt4: .. figure:: ../../../images/mt4.png :align: center Результат добавления инстанса storage-1-replica-2 в интерфейсе Cartridge **2. Добавление хоста в кластер с добавлением репликасета.** * Во вкладке "HOSTS" создать новый хост, например, *adg3*, и добавить его в кластер *Grid* (:numref:`Рис.%s `). .. _mt5: .. figure:: ../../../images/mt5.png :align: center Список хостов кластера Grid * Добавить инстанс ``storage-2-master-1`` на хост *adg3* как описано выше в первом пункте. Так как репликасет *storage-2* не существует, он создается автоматически (:numref:`Рис.%s `). .. _mt6: .. figure:: ../../../images/mt6.png :align: center Добавление нового инстанса хранилища * Аналогично добавить реплику ``storage-2-replica-1``. Результат добавления нового шарда хранилища изображен на :numref:`Рис.%s `. .. _mt7: .. figure:: ../../../images/mt7.png :align: center Созданный репликасет storаge-2 Переключение мастера (failover) ------------------------------- В случае сбоя текущего мастера в репликасете происходит переключение роли мастера на реплику. При восстановлении мастера происходит обратное переключение. Переключение можно выполнить вручную, например, для удаления инстанса или проведения обслуживания хоста: * В интерфейсе ADCM в окне кластера *Grid* нажать кнопку "Failover_instance". * В открывшемся диалоговом окне ввести имя инстанса, который необходимо переключить, либо ввести наименование репликасета (:numref:`Рис.%s `). * Результат работы операции можно увидеть в интерфейсе *Cartridge* -- флажок "Leader" переместился на реплику (:numref:`Рис.%s `). .. _mt8: .. figure:: ../../../images/mt8.png :align: center Диалоговое окно failover .. _mt9: .. figure:: ../../../images/mt9.png :align: center Результат переключения мастера Удаление инстанса ----------------- **1. Удаление инстанса в роли "replica".** * Для исключения инстанса из кластера необходимо воспользоваться кнопкой "Remove_instance". * В открывшемся диалоговом окне ввести название инстанса (:numref:`Рис.%s `). .. _mt10: .. figure:: ../../../images/mt10.png :align: center Удаление инстанса .. important:: Невозможно удалить инстанс в роли "master" и не являющийся при этом инстансом типа "storage". Для подобного случая сначала необходимо вручную произвести failover, назначив инстанс репликой **2. Удаление репликасета storage.** Для удаления репликасета (шарда) хранилища необходимо: * Удалить все реплики шарда, как описано выше; * В интерфейсе кластера *Cartridge* нажать кнопку "Edit" для удаляемого шарда; * В открывшемся окне поменять значение поля "Replica set weight" на *0* (:numref:`Рис.%s `). После завершения перебалансировки убедиться в отсутствии бакетов в репликасете; * Удалить мастер репликасета, аналогично удалению реплики. .. important:: При наличии бакетов в репликасете удаление мастера невозможно .. _mt11: .. figure:: ../../../images/mt11.png :align: center Окно свойств репликасета **3. Удаление хоста.** Для удаления хоста следует удалить с него все инстансы, при необходимости предварительно переведя их в состояние *replica*. После удаления последнего инстанса хост автоматически удаляется из кластера. Создание снапшота и перезапуск кластера --------------------------------------- Операция "Take_snapshot" позволяет сбросить изменения из оперативной памяти инстансов *storage* на диск с объединением журналов изменений. Операция "Restart" выполняет последовательный перезапуск инстансов кластера.