Как установить и настроить Riak2 с Python3 в Ubuntu 14.04

Вступление

Riak - это нереляционное хранилище данных noSQL с упором на архитектуру распределенных баз данных. В новейшей редакции Riak 2.1.1 все данные могут быть сделаны сильно согласованными, в которых данные являются актуальными после извлечения, в отличие от существенно согласованными, в которых данные более доступны, но не обновлены.

Riak - один из вариантов семейства реализаций noSQL с ключами-значениями, с конкурентами, включая Redis, MemcacheDB и Aerospike. Как база данных ключ-значение, она, следовательно, не оптимизирована для запросов SQL-esque, которые захватывают весь набор данных.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

Шаг 1 - Установка Riak

В этом разделе мы установим сам Riak.

С выпуском 2.0 Riak перенес свои пакеты из собственного хранилища apt в сервис packagecloud.io, поэтому нам нужно заполнить индекс + apt + Riak. К счастью, Riak предоставляет собственный скрипт, который делает именно это.

Сначала мы загрузим скрипт.

curl -O https://packagecloud.io/install/repositories/basho/riak/script.deb.sh

Вместо непосредственного выполнения, сначала откройте скрипт, чтобы убедиться, что он содержит то, что мы ожидаем.

less script.deb.sh

Для получения пакетов по HTTPS сценарию необходимо установить пакет + apt-transport-https +. Он также проверяет центр сертификации, импортирует открытый ключ и обновляет индекс пакета.

Нажмите + q +, чтобы закрыть файл, затем запустите скрипт.

sudo bash script.deb.sh

Наконец, установите Riak.

sudo apt-get install riak=2.1.1-1

Шаг 2 - Настройка и запуск Riak

В этом разделе мы настроим и запустим узел Riak.

Для начала нам нужно оптимизировать Riak Erlang VM с некоторыми рекомендуемыми настройками. Мы сделаем две модификации: установим интервалы сканирования очереди и отключим планировщик сжатия нагрузки.

Откройте новый файл конфигурации Riak 2.0, используя + nano + или ваш любимый текстовый редактор.

sudo nano /etc/riak/riak.conf

Раскомментируйте строку + erlang.schedulers.force_wakeup_interval = 500 +, выделенную ниже. Убедитесь, что ведущий пробел также удален, так что + e + является первым символом строки.

/etc/riak/riak.conf

. . .

## Set scheduler forced wakeup interval. All run queues will be
## scanned each Interval milliseconds. While there are sleeping
## schedulers in the system, one scheduler will be woken for each
...
## Default: 500
##
## Acceptable values:
##   - an integer


. . .

Повторите этот процесс для + erlang.schedulers.compaction_of_load = false + в блоке сразу после:

/etc/riak/riak.conf

. . .

## Enable or disable scheduler compaction of load. By default
## scheduler compaction of load is enabled. When enabled, load
## balancing will strive for a load distribution which causes as many
...
## Default: false
##
## Acceptable values:
##   - one of: true, false


. . .

Сохраните и выйдите из файла.

Чтобы запустить узел Riak, запустите:

sudo riak start

Вы увидите следующее.

Выход

!!!!
!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
!!!!

Приведенное выше сообщение предупреждает, что в нашей системе установлен низкий предел количества открытых файлов, что ограничивает количество дескрипторов открытых файлов в любой данный момент. Думайте о каждой ручке как о пишущем инструменте, которым мы владеем. Каждый компьютерный процесс требует пишущего инструмента, чтобы написать

По умолчанию ограничение системы на доступные инструменты для записи составляет 1024; Riak рекомендует повысить этот предел до 65536. Чтобы поднять этот лимит, см. Http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/[official Riak Открытые лимиты документации].

Чтобы дважды проверить, что ваш узел работает, используйте следующее.

sudo riak ping

Команда выведет + pong +, если узел работает, и в противном случае выдаст ошибку.

Чтобы запустить последовательность предварительно созданных тестов Riak, выполните:

sudo riak-admin test

Эта команда выше выведет следующее.

Выход

Successfully completed 1 read/write cycle to '[email protected]'

Ваш узел Riak теперь запущен и работает.

Шаг 3 - Создание примера приложения Python (необязательно)

Ниже приведен необязательный ряд шагов по настройке примера приложения Python-Riak. Вышеприведенные инструкции не зависят от языка и не зависят от следующего для нормального функционирования. Если вас не интересует пример приложения Python, вы можете перейти к разделу Заключение.

Сначала проверьте текущую версию Python.

python --version

Вы должны увидеть результат:

OutputPython 2.7.6

Мы бы хотели, чтобы + python запускал Python 3. Итак, давайте удалим старый двоичный файл.

sudo rm /usr/bin/python

Затем создайте символическую ссылку на двоичный файл Python 3 на его месте.

sudo ln -s /usr/bin/python3 /usr/bin/python

Если вы снова запустите + python --version +, вы увидите вывод + Python 3.4.0 +.

Далее мы установим Pip, рекомендуемый установщик пакетов для пакетов Python. Pip позволяет нам легко управлять любым пакетом Python3, который мы хотели бы иметь. Чтобы ознакомиться с обзором Pip, вы можете прочитать story это руководство.

Чтобы установить его, просто запустите следующее:

sudo apt-get install python3-pip

Теперь нам нужно установить клиент Python-Riak. Сначала необходимо удовлетворить несколько зависимостей:

sudo apt-get install python3-dev libffi-dev libssl-dev

Установите клиент.

sudo pip3 install riak

Наконец, мы напишем пример приложения для тестирования комбинации Python-Riak. Создайте новую папку для размещения приложения и создайте в ней новый файл.

mkdir ~/test
sudo nano ~/test/app.py

Вставьте следующее внутри. Это пример кода из official Riak документации.

~ / Тест / app.py

import riak

# connect to Riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc')

# create new Bucket
myBucket = myClient.bucket('test')

# store key-value pairs
val1 = 1
key1 = myBucket.new('one', data=val1)
key1.store()

val2 = "two"
key2 = myBucket.new('two', data=val2)
key2.store()

val3 = {"myValue": 3}
key3 = myBucket.new('three', data=val3)
key3.store()

# fetch the data
fetched1 = myBucket.get('one')
fetched2 = myBucket.get('two')
fetched3 = myBucket.get('three')

print('Value 1 correct: '+str(val1 == fetched1.data))
print('Value 2 correct: '+str(val2 == fetched2.data))
print('Value 3 correct: '+str(val3 == fetched3.data))

Теперь выполните следующее, чтобы протестировать это приложение.

python ~/test/app.py

Это выведет следующее предупреждение, но это может быть проигнорировано.

Python application warning/usr/local/lib/python3.4/dist-packages/riak/security.py:54: UserWarning: Found OpenSSL 1.0.1f 6 Jan 2014 version, but expected at least OpenSSL 1.0.1g.  Security may not support TLS 1.2.
 warnings.warn(msg, UserWarning)

Transport Layer Security (TLS) 1.2 - просто более надежный протокол безопасности, построенный поверх TLS 1.1, а TLS, в свою очередь, обычно является обновлением SSL. Однако Internet Explorer не всегда поддерживает TLS 1.1 и 1.2, а TLS 1.2 отключен в ранних версиях всех популярных браузеров. Как следствие, мы можем использовать SSL для безопасного управления соединениями между приложением и хранилищем данных Riak.

Он должен вывести следующее:

выход

Value 1 correct: True
Value 2 correct: True
Value 3 correct: True

Это оно!

Заключение

Теперь вы настроили Riak 2 и успешно подключили его к Python3. Однако эта установка Riak 2 не является специфичной для Python и может быть легко адаптирована для других языков. Для получения дополнительной информации о защите Riak см. Официальные рекомендации Riak 2.

Related