Pull to refresh
Southbridge
Обеспечиваем стабильную работу highload-проектов

Инcтрукция по установке Couchbase 2.1.1 Community и основы работы с ним

Southbridge corporate blog NoSQL *
image

Жизнь системного администратора подкинула нового зверя на и без того тернистый путь. Потребовалось клиенту под проект в обязательном порядке использовать Couchbase.

Под катом инструкция по его установке, добавлению в кластер и балансировке данных. А вдруг кому будет полезно.



Установка Couchbase.


Устанавливаем openssl098e.

Скачиваем и устанавливаем couchbase 2.1.1

wget http://packages.couchbase.com/releases/2.1.1/couchbase-server-community_x86_64_2.1.1.rpm
rpm -Uhv couchbase-server-community_x86_64_2.1.1.rpm


В нашей компании активно используется виртуализация OpenVZ, а для нормальной работы couchbase в контейнере openvz необходим файл memsup из пакета erlang-os-mon версии не ниже 2.2.10.

Что делаем:
Останавливаем couchbase:
service couchbase-server stop


Для начала нужно скачать сам erlang, например, с официального сайта www.erlang.org/download.html
И скомпилировать нужную библиотеку, которая находится по пути lib/os_mon/priv

Затем, из lib/os_mon/priv/bin берем memsup и помещаем в каталог /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/
Выставляем на него права:
chown bin:bin /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/memsup
chmod a+x /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/memsup


Запускаем сервер couchbase-server и пользуемся.
Админка по умолчанию доступна по hostname:8091/

Добавление нового сервера в кластер и балансировка данных.


Внимание!!! Перед добавлением нового сервера в кластер необходимо снять бэкап БД.

Например, так:
/opt/couchbase/bin/cbbackup -u Administrator -p PASSWORD http://localhost:8091/ /tmp/cbbackup/


Или, если нужен бэкап только одного бакета, остальные не важны:
/opt/couchbase/bin/cbbackup -u Administrator -p PASSWORD http://localhost:8091/ /tmp/cbbackup/ -b SRC_BUCKET


При добавлении нового сервера в кластер couchbase, необходимо сделать ребалансировку данных и может случиться так, что ребалансировка не проходит и в логе будет ошибка примерно такого содержания:
<0.20769.2129> exited with {unexpected_exit,
{'EXIT',<0.20785.2129>,
{badmatch,
[{'EXIT',
{{badmatch,{error,closed}},
{gen_server,call,
[<19210.18145.6>,had_backfill,30000]}}}]}}}


Вариант 1.
На hw ноде можно попробовать изменить vm.swappiness на время балансировки данных и повторно запустить ребалансировку:
sysctl -w vm.swappiness=0


Если балансировка не прошла:
Вариант 2. (Очищаем, либо удаляем бакет)

1. Смотрим через админку couchbase host:8091/ на каком бакете валится балансировка (вкладка Server Nodes и открываем сами сервера)
2. Идем на вкладку Data Bucket, открываем нужный бакет, а в нём кнопку (Edit)
3. Ищем в самом низу, рядом с кнопкой DELETE кнопку FLUSH. (Если её нет, чуть выше ставим галочку Flush-Enable.) И нажимаем FLUSH, тем самым очищаем содержимое бакета (Бэкап же у нас есть)
4. Если бакет очистился нормально, делаем снова ребалансировку. Если прошла то заливаем бакет назад.
/opt/couchbase/bin/cbrestore -u Administrator -p PASSWORD /tmp/cbbackup/ http://host:8091/ -b <_имя_бакета_>


5. Если бакет не очищается, либо если после очистки балансировка также не проходит на нем, то
6. В меню редактирования бакета (Edit) запоминаем (записываем) о нем всю информацию и удаляем его. После этого создаем новый с такими же параметрами и заливаем бэкап.
И так по каждому бакету.

И очень полезная команда, чаще всего приходится пользоваться:
/opt/couchbase/bin/cbrestore -u Administrator -p PASSWORD -b SRC_BUCKET -B DST_BUCKET -k "key1|key2|key3|key...|KeyN" /tmp/cbbackup/ http://localhost:8091


Восстанавливает отдельные ключи.
Tags:
Hubs:
Total votes 6: ↑5 and ↓1 +4
Views 6.5K
Comments Comments 5

Information

Founded
Location
Россия
Website
southbridge.io
Employees
51–100 employees
Registered
Representative
Антон Скобин