Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 12099 сообщений
Cообщения с меткой

linux - Самое интересное в блогах

Следующие 30  »
VaSiLiSkk

Без заголовка

Воскресенье, 26 Июня 2016 г. 22:38 (ссылка)
macdigger.ru/macall/pochemu...?_utl_t=li


Почему большинство разработчиков в Кремниевой долине предпочитают macOS вместо Linux или Windows | MacDigger.ru – новости из мира Apple

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Gobetween Exec discovery+ Elasticsearch. L4 балансировка с Data Node Discovery

Суббота, 25 Июня 2016 г. 22:56 (ссылка)

Зачем все это нужно



Все кто использовал Elasticsearch каластер для своих нужд (особенно для логирования и как основную базу данных) на больших нагрузках сталкивался с проблемами консистентности и масштабируемости. Когда требуется распараллелить нагрузку на Elasticsearch обычно применялись статические решения то типу NGINX+Elasticsearch. Это позволяет распараллелить нагрузку, но выглядит не слишком гибко. Особенно если учесть что ноды могут сами выпадать из кластера и простой хелсчек покажет что все отлично, а на самом деле нода перегружена, исключена из кластера. В любом случае хотелось бы иметь данные о состоянии кластера из первых рук, а не довольствоваться простыми проверками.

Итак, приступим к построению балансировки .



Как мы будем это делать



В данном случае мы будем использовать CAT node API, которое является частъю мощьнейшего CAT API, который является инструментом поиска заголовков по Elasticsearch клстреру.

Мы будем использовать только Gobetween и встроенные механизмы Elasticsearch для балансировки записи /чтения СRUD (DATA) нод при произвольном количестве/статусе нод в кластере.



image



Предварительные настройки



Нам потребуются:



Elasticsearch client node :



Нужна специально для gobetween т.к. при мультимастер конфигурации она сама будет перенаправлять запрос на правильную мастер ноду(активный мастер), и таким образом будет нашим роутером внутри кластера для корректной работы нашего Data Node discovery.



В elasticsearch.conf на client ноде прописываем:



 node.master: false
node.data: false


и остальные настройки идентичные настройкам нод в вашем кластере.



Скрипт для дискавери:



Теперь создадим скрипт который будет запрашивать API и возвращать нам список нод.

назовем его discovery_elasticsearch.sh :



#!/bin/bash
curl -sS -XGET 'http://PI_OF_YOUR_CLIENT_NODE:9200/_cat/nodes?v&h=ip,r=d' |sed '1d'|tr -d ' '|sed 's/$/:9200/'


вывод скрипта будет примерно таким :



 10.0.0.51:9200
10.0.0.55:9200
10.0.0.53:9200
10.0.0.52:9200
10.0.0.54:9200
итд...


Теперь все готово, и можно начинать настраивать непосредственно сам балансер.



Настройка балансировщика



После установки настало время настроить балансировку используя EXEC discovery и round robin алгоритм балансировки.

Данный пример довольно простой и служит для описания возможностей данного типа балансировки. Можно расширить скрипт для динамической генерации весов для каждой ноды по их загрузке (cpu,io и т.д.).



конфиг нашего балансера будет выглядеть :



[logging]
level = "warn" # "debug" | "info" | "warn" | "error"
output = "stdout" # "stdout" | "stderr" | "/path/to/gobetween.log"

[defaults]
max_connections = 0
client_idle_timeout = "0"
backend_idle_timeout = "0"
backend_connection_timeout = "0"

[servers.sample3]
bind = "100.100.1.5:9200"
protocol = "tcp"
balance = "weight"
[servers.sample3.discovery]
kind = "exec"
exec_command = ["/etc/gobetween/discovery_elasticsearch.sh"]
interval="1m"
timeout = "10s"

[servers.sample3.healthcheck]
kind = "ping"
interval = "20s"
timeout = "2s"
fails = 3
passes = 3


Итак, мы имеем "рыбу" решения для построения гибкой балансировки в elasticsearch кластере.

В "боевых" условиях у нас работет более сложная конфигурация с динамическим определением весов.

Так же в нашем продакшне мы используем сложный скрипт хелсчека тоже завязанного на API мониторинга и самого Elasticsearch.





В Следующих статьях — json discovery, windocker service discovery и балансировка, Windows swarm service discovery и балансировка, Балансировка (Windows+linux) Doсker окружений.


Original source: habrahabr.ru.

https://habrahabr.ru/post/304096/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Равертывание Emercoin blockchain с веб-кошельком на RedHat/CentOS 7 и Ubuntu 16.04

Суббота, 25 Июня 2016 г. 18:56 (ссылка)

Одним из современных технических мейнстримов является блокчейн. В этой статье я расскажу как можно быстро развернуть Emercoin блокчейн на RedHat/CentOS 7 и Ubuntu 16.04 LTS.



1. Введение



В этом материале мы будем исходить из следующего:


  • У вас уже есть чистая предустановленная RHEL/CentOS 7 или Ubuntu 16.04 LTS, со стандартным набором пакетов, без специфических настроек

  • Рассматриваемые версии ПО: emercoin(0.3.7), emcssh(0.0.3), emcweb(1.0)

  • В качестве веб-сервера будет использоваться Apache

  • Все команды, приведенные ниже, должны исполняться либо пользователем root, либо через sudo

  • Работа с SElinux в режиме Enforcing не гарантируется



2. Установка пакетов Emercoin



Для начала, мы должны подключить официальный репозиторий Emercoin для использования вашим сервером, скачать и установить требуемые пакеты, запустить клиент блокчейна и пометить его для исполнения во время загрузки ОС. Для этого, нужно выполнить:



В RHEL/CentOS:

rpm -ivh http://download.emercoin.com/rhel/el7/RPMS/emercoin-release-1.0-1.el7.centos.noarch.rpm
yum -y install emercoin emcssh emcweb
systemctl restart emercoind httpd
systemctl enable emercoind httpd


В Ubuntu:

apt-key adv --keyserver keyserver.ubuntu.com --recv B58C58F4
add-apt-repository 'deb [arch=amd64] http://download.emercoin.com/ubuntu xenial emercoin'
apt update && apt install emercoin emcssh emcweb


3. Скачивание и управление блокчейном



Сразу после первого запуска emercoind, начнется скачивание блокчейна. На это может потребоваться какое-то время.

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



emc getinfo


Обращаю ваше внимание на то, что команду emc может исполнять любой пользователь системы, у которого есть права на исполнение команд через sudo. Также, хочу заметить то, что на старт службы emercoind может потребоваться до 30 секунд. Соответственно, если вы поспешите выполнить команду emc до полного старта emercoind, то у вас может возникнуть ошибка подключения к сервису.



Результатом исполнения emc getinfo будет вывод нечто подобного:


{
"version" : "v0.3.7.0-unk-beta",
"protocolversion" : 60005,
"walletversion" : 60000,
"balance" : 0.00000000,
"newmint" : 0.00000000,
"stake" : 0.00000000,
"blocks" : 6532,
"moneysupply" : 26500634.19000000,
"connections" : 7,
"proxy" : "",
"ip" : "162.243.248.174",
"difficulty" : 66.44524799,
"testnet" : false,
"keypoololdest" : 1466865671,
"keypoolsize" : 101,
"paytxfee" : 0.01000000,
"errors" : "WARNING: Checkpoint is too old. Wait for block chain to download, or notify developers of the issue."
}


Здесь нужно смотреть на строку «error», которая может указывать на то, что, в данный момент, блокчейн слишком старый (то есть, не полностью скачанный), а, также, на строку «blocks», где указано сколько блоков уже скачано в вашем блокчейне. На момент написания этой статьи, в блокчейне Emercoin насчитывалось 173444 блока.



Чтобы управлять блокчейном и вашим кошельком через консоль, можно воспользоваться помощью по опциям команды emc:

emc help


4. Веб-кошелек



Для того, чтобы использовать веб-кошелек, у вас должен быть либо созданная учетная запись для него (логин+пароль), либо персональній SSL сертификат. Как использовать персональный SSL сертификат я расскажу в другой раз. Сейчас же, мы можем создать пользователя веб-кошелька командой:

emcweb-user "UserName" "UserPassword"


где, UserName и UserPassword — конечно же, придуманные вами логин и пароль.



У веб-кошелька может быть только одна учетная запись. Поэтому, если вы выполните команду emcweb-user повторно, то вы замените предыдущего пользователя новым.



Следующим шагом мы можем в браузере перейти на IP-адрес вашего сервера.

Браузер вас предупредит, что сайт небезопасен. Это нормально и совершенно безопасно, ведь, сертификат веб-сервера был автоматически сгенерирован на вашем сервере в момент устаноавки пакета emcweb. Поэтому, такое предупреждение браузера нужно проигнорировать и продолжить посещение этого ресурса (возможно, добавив этот сайт в исключения, как того требует Firefox, к примеру).







Выбираем «Login via Login/Password» и вводим лоин с паролем, указанные вами при выполнении команды emcweb-user:





Попадаем в веб-кошелек:





Интерфейс веб-кошелька довольно простой и интуитивно понятный. К примеру, раздел с информацией, где можно увидеть похожие данные, получаемые исполнением команды emc getinfo:





Известная ошибка: если блокчейн еще не полностью скачан и вы попытаетесь войти в раздел «Manage Names», то будет ошибка.



Удачного пользования!
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/304100/

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Прощай, семерка

Пятница, 24 Июня 2016 г. 13:32 (ссылка)

Я сдался.

Устав бороться с видеодрайверами Linux для старенького десктопа, позарившись на невиданную щедрость Microsoft, обновился до Windows 10. Променял годами вылизанный интерфейс и оптимистичную голубую гамму семерки на инновационный продукт с угрюмым рабочим столом и системой управления в стиле “разные колеса”. Читать дальше →

https://habrahabr.ru/post/303992/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Релиз Fedora 24. Гонка за версиями

Среда, 22 Июня 2016 г. 13:40 (ссылка)

Fedora 24

Вчера 21 июня вышла в свет новая версия Fedora. Что нового в Fedora можете почитать на oppenet. Я уже полтора месяца пользуюсь этой OS и хотел поделиться с хабралюдьми о том стоит ли переходить и вообще стоит ли так часто релизить.





Почему Fedora?



Дело в том что еще в далеком 1998 я у себя поставил 4 версию RedHat Linux, разобрался с системой rpm и научился создавать собственные rpm-сборки. Потом появилась Fedora Core. Это было как глоток свежего воздуха, регулярно апдейтилось ядро, всегда самые свежие версии php, perl, Gnome, gcc. Я использовал сборку Fedora как на десктопе так и на продакшине на colocattion. Темпы развития радовали, в нашей компании даже была внедрена виртуализация на базе oVirt (менеджмент над KVM в исполнении программистов RedHat). Казалось бы все «цветет и пахнет», но, на мой взгляд, это не так.



Что у нас в новом релизе




  • Система:

    Glibc 2.23, kernel 4.5, gcc 6.0

    все на высоте зачет!


  • Языки программирования:

    • Python 3.5 — свежий

    • Ernang 18.3 — свежий

    • Ruby 2.3.1 — свежий

    • Nodejs 4.2 — старый, сейчас 6.2

    • PHP 5.6 — старый, сейчас 7.0

    • perl 5.22 — старый, сейчас 5.24



    уже не так хорошо


  • Обновился шрифт — Cantarell, авторам шрифта зачет

  • Вручную можно врубить поддержку кодека OpenH264

  • FreeIPA 4.3 хорошо

  • Все остальное — ну неплохо что о но есть, но мне кажется это нишевые фичи





Список фич не впечатляет, нету того «Вау!», которое возникает от смены версий.



Какие я вижу проблемы



1. Ну видно же что команда, которая релизит постоянно не успевает. Раньше дедлайны двигали на несколько дней, ну на пару недель — теперь более месяца.

2. Релиз получается не сбалансированный, что то проапгрейдили до последних стабильных версий а на что-то забили.

3. Часть пакетов, которые нужны моей компании для работы, нужно пересобирать уже для 5 дистрибутивов Fedora 19 -Fedora 24.

4. Наши программисты уже не апдейтят систему с каждым новым релизом, большинство «прыгают через версию».

5. Но проблемы со сборками под новые релизы есть у многих компаниях:

rpmfusion, тянули до самого релиза, не успели, но сегодня уже пакеты для Fedora 24 есть

oVirtсамые свежие сборки для Fedora 22

MariaDBсамые свежие сборки для Fedora 23

ParconaServer для 24 Fedora вы не соберете из src.rpm

(Ну это то с чем работаю я)

6. Беспроблемно у меня не проходит ни один апдейт, проблемы с зависимостями от сторонних сборок пакета, иногда меняется или требует обновления формат конфигов, да вы сами это знаете.

7. Нету четких дат, на которые ориентирован релиз, когда-то это было конец осени/конец весны. Теперь это уже новый год/начало лета



Что сделать чтоб стало лучше



1. Мне кажется что называть версию с привязкой к году выпуска это хорошая идея. Fedora 2016 звучит неплохо. Частоту релизов установить в 1 год. Всегда можно выпустить нужный апдейт.

2. Для повышение привлекательности самого дистрибутива, хотя бы для той сборки, которая «Server», ввести LTM (Long-term Support) 3 года

3. Больше уделять внимания маркетингу, анонсы релиза выглядят очень не привлекательно.



Стот ли апдейтиться



Ну конечно стоит, куда вы денитесь? Все, ваша Fedora устарела, вы еще не успели к ней привыкнуть? — не беда, делайте апгрейд и привыкайте к 24 :)



За месяц с лишним при работе с бета-версией на стабильность я пожаловаться не могу. Не лучше и не хуже чем Fedora 23, вроде как ничего и не менял.



Стот ли так часто релизиться





Ну со мной все ясно, а как вы считаете как часто должна релизится Ваша ОС?


























































Проголосовало 11 человек. Воздержался 1 человек.





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


Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/303826/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
eugene20237

Linux: как посмотреть список открытых портов в системе?

Среда, 22 Июня 2016 г. 23:20 (ссылка)

lsof -Pni4

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

ProxySQL — еще один mysql-proxy

Воскресенье, 19 Июня 2016 г. 16:20 (ссылка)

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





Что же такое ProxySQL?

Это приложение для проксирования SQL-запросов к базам данных для форков MySQL икаю как MariaDB и Percona(в будущем разработчики обещают добавить поддержку других различных БД). Работает как отдельный демон, все SQL-запросы, которые необходимо спроксировать, обрабатываются, затем по заранее составленным правилам демон подключается к необходимому MySQL-серверу и выполняет его, и уже после этого отдает результат приложению. ProxySQL может так же модифицировать поступающие запросы согласно шаблонам.



Архитектура ProxySQL.

ProxySQL имеет достаточно сложную, но простую для конфигурирования систему, благодаря ней возможно:


  • Осуществлять автоматические изменения в конфигурации, что важно для больших систем. Осуществляется это MySQL-подобный административный интерфейс.

  • Большинство изменений можно вносить в runtime-режиме без перезапуска демона ProxySQL

  • Легко выполнять откаты изменений, если вдруг что-то было сконфигурировано неправильно.





Это достигается путем использования многослойной системы конфигурации, которая делится на 3 слоя:



image



Слой Runtime — Этот слой конфигурации непосредственно используется демоном ProxySQL и содержит всю конфигурационную информацию для проексирования запросов.



Слой Memory — Или слой main представляет собой SQLite3 базу данных, которая находится в памяти, используется для предоставления информации о конфигурации и самого конфигурирования. Конфигурирование осуществляется через стандартный MySQL-клиент SQL-командами.



Слой Диск — Представляет собой обычный SQLite3 файл, в который сохраняются(пользователем) данные внесенные через слой Memory



Конф. файл — файл конфигурации ProxySQL(proxysql.cnf) используется в момент инициализации, содержит информацию о нахождении SQLite3 базы данных, информацию об административном интерфейсе, а так же начальную конфигурацию демона.



Для перемещения конфигураций между слоями существуют несколько административных команд:



Для перемещения конфигураций пользователей(USERS) между Memory(слой 2) и Runtime:

MySQL [(none)]> LOAD MYSQL USERS FROM MEMORY
MySQL [(none)]> LOAD MYSQL USERS TO RUNTIME




Из Runtime в Memory:

MySQL [(none)]> SAVE MYSQL USERS TO MEMORY
MySQL [(none)]> SAVE MYSQL USERS FROM RUNTIME




С диска(слой 3) в память

MySQL [(none)]> LOAD MYSQL USERS TO MEMORY
MySQL [(none)]> LOAD MYSQL USERS FROM DISK




Из памяти(слой 2) на диск(слой3)

MySQL [(none)]> SAVE MYSQL USERS FROM MEMORY
MySQL [(none)]> SAVE MYSQL USERS TO DISK




Из диска(слой 3) в память(слой 2)

LOAD MYSQL USERS FROM CONFIG 




Таким же образом перемещение можно осуществлять и других переменных, список доступных:

QUERY RULES- Запросы для проксирования.

VARIABLES — переменные MySQL-сервера и административных настроек.



Установка

Так как данное приложение достаточно новое и находится на стадии разработки, наилучшим вариантом будет собрать его из исходных текстов, которые можно получить на github: github.com/sysown/proxysql

Для ОС RedHat(CentOS) и Debian(Ubuntu) собраны бинарные пакеты: github.com/sysown/proxysql/releases



Установим пакет для CentOS 7:

rpm -ihv https://github.com/sysown/proxysql/releases/download/v1.2.0i/proxysql-1.2.0-1-centos7.x86_64.rpm




После установки, конф. файл будет располагаться по адресу: /etc/proxysql.cnf

Откроем его в любимом редакторе:



datadir="/var/lib/proxysql"

admin_variables=
{
admin_credentials="admin:admin" # логин и пароль администратора
mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock" #хост и порт для административного интерфейса

refresh_interval=2000 #Интервал обновления счетчиков статистики в микросекундах
debug=true
admin-stats_credentials=stats:stats #логин и пароль к админ.интерфейсу для сбора статистики(только чтение)

}
mysql_variables=
{
threads=4 #количество потоков для обработки входящих запросов
max_connections=2048 #максимальное количество соединений, которое прокси может обрабатывать одновременно.
default_query_delay=0
default_query_timeout=36000000
have_compress=true #на данный момент не используется
poll_timeout=2000
interfaces="127.0.0.1:3306;/tmp/proxysql.sock"
default_schema="information_schema"
stacksize=1048576 # размер стека для потоков и соединений с backend-сервером.
server_version="5.1.30"
connect_timeout_server=10000
monitor_history=60000
monitor_connect_interval=200000
monitor_ping_interval=200000
ping_interval_server=10000
ping_timeout_server=200
commands_stats=true
sessions_sort=true
}




datadir — расположение файла базы SQLite3, по умолчанию /var/lib/proxysql

admin_variables — настройки административного интерфейса

mysql_variables — содержит глобальные переменные для севера входящих mysql-запросов.



Серверы и прочие настройки мы добавим через mysql-интерфейс.



Первый запуск и инициализация

Инициализируем настройки.



Инициализация переносит настройки сервера из конф. файла(слой 3) в базу SQLite3 в памяти(слой 2), сбрасывая при этом все настройки, которое хранились в памяти(слой 2) и переименовывая файл на диске(слой 3).

proxysql --initial




Конфигурирование ProxySQL на лету(Runtime).

Для конфигурирования ProxySQL на лету, мы будем использоваться стандартный клиент mysql.



mysql -h 127.0.0.1 -P6032 -uadmin -p

Enter password:

MySQL [(none)]>




Теперь мы находимся в админ. интерфейсе. Посмотрим какие есть тут таблицы:


MySQL [(none)]> show tables;
+--------------------------------------+
| tables |
+--------------------------------------+
| global_variables |
| mysql_collations |
| mysql_query_rules |
| mysql_replication_hostgroups |
| mysql_servers |
| mysql_users |
| runtime_mysql_query_rules |
| runtime_mysql_replication_hostgroups |
| runtime_mysql_servers |
| runtime_scheduler |
| scheduler |
+--------------------------------------+
11 rows in set (0.00 sec)




mysql_servers — содержит список backend-серверов

mysql_users — содержит список всех пользователей, которые имеют доступ к ProxySQL и backend-серверам.

mysql_query_rules — все правила кеширования, перенаправления и замены SQl-запросов, которые проходят через прокси.

global_variables — содержит глобальные переменные(которые мы настраивали в конф. файле) MySQl-сервера ProxySQL и административные настройки.

mysql_replication_hostgroups — список групп хостов, к которым будут прикреплены бекенды, к которым в свою очередь будут применяться правила запросов.

mysql_query_rules — правила проксирования запросов.



Добавим бекенды, для начала убедимся, что таблицыmysql_servers, mysql_replication_hostgroups и mysql_query_rules пусты.



Проверим таблицы:

MySQL [(none)]> SELECT * FROM mysql_servers;
Empty set (0.00 sec)

MySQL [(none)]> SELECT * from mysql_replication_hostgroups;
Empty set (0.00 sec)

MySQL [(none)]> SELECT * from mysql_query_rules;
Empty set (0.00 sec)




Действительно, необходимые таблицы пусты. Перед добавлением нам надо определиться что и куда мы будем проксировать, я добавлю два сервера, на один будет осуществляться запись(INSERT, UPDATE и т.п), а со второго мы будем только читать данные(SELECT), в общем типичная схема master-slave с распределением чтения-записи показным серверам. Для этого мы создадим 2 хост группы.



Добавим backend-серверы:

Первый сервер у нас будем заниматься записью в БД и состоять в хост группе 1:

MySQL [(none)]> INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (0,'192.168.100.2',3307);




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

MySQL [(none)]> INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'192.168.100.3',3307);
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> SELECT * FROM mysql_servers;
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
| hostgroup_id | hostname | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms |
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
| 0 | 192.168.100.2 | 3307 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 |
| 1 | 192.168.100.3 | 3307 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 |
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
2 rows in set (0.00 sec)





Таблица mysql_replication_hostgroups имеет 2 поля, первое writer_hostgroup — в ней находятся номера групп, в которые входят хосты на запись. В reader_hostgroup — на чтение.

Добавим 2 хостгруппы(1,2) в таблицу mysql_replication_hostgroups:


MySQL [(none)]> INSERT INTO mysql_replication_hostgroups VALUES (1,2);
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> SELECT * FROM mysql_replication_hostgroups;
+------------------+------------------+
| writer_hostgroup | reader_hostgroup |
+------------------+------------------+
| 1 | 2 |
+------------------+------------------+
1 row in set (0.00 sec)




Теперь перенесем данные о backend-серверах и хост группах из памяти в runtime, чтобы они вступили в силу немедленно:

MySQL [(none)]> LOAD MYSQL SERVERS TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)




и сохраним данные на диск(слой 3):

MySQL [(none)]> SAVE MYSQL SERVERS TO DISK;
Query OK, 0 rows affected (0.00 sec)




Самое время добавить правила проектирования запросов, для этого существует таблица mysql_query_rules:

Таблица имеет следующую структуру:

CREATE TABLE mysql_query_rules (
rule_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 0,
username VARCHAR,
schemaname VARCHAR,
flagIN INT NOT NULL DEFAULT 0,
match_pattern VARCHAR,
negate_match_pattern INT CHECK (negate_match_pattern IN (0,1)) NOT NULL DEFAULT 0,
flagOUT INT,
replace_pattern VARCHAR,
destination_hostgroup INT DEFAULT NULL,
cache_ttl INT CHECK(cache_ttl > 0),
reconnect INT CHECK (reconnect IN (0,1)) DEFAULT NULL,
timeout INT UNSIGNED,
delay INT UNSIGNED,
apply INT CHECK(apply IN (0,1)) NOT NULL DEFAULT 0
)


rule_id — номер правила

active — правило включено, 0-выключено

username и schemaname — Если не-NULL, то правило выполнится только в случае правильного соответствия username/schemaname для соединения

flagIN, flagOUT, apply — Эти флаги дают возможность создать «цепочку из правил». На практике лично мне еще не приходилось их использовать, так что даю пока оригинал текста из официальной документации, если кто сможет грамотно и понятно перевести, пожалуйста. these allow us to create «chains of rules» that get applied one after the other. An input flag value is set to 0, and only rules with flagIN=0 are considered at the beginning. When a matching rule is found for a specific query, flagOUT is evaluated and if NOT NULL the query will be flagged with the specified flag in flagOUT. If flagOUT differs from flagIN, the query will exit the current chain and enters a new chain of rules having flagIN as the new input flag. This happens until there are no more matching rules, or apply is set to 1 (which means this is the last rule to be applied)

match_pattern — регулярное выражение, будут проксироваться правила, которые попадают под него.

replace_pattern — регулярное выражение для замены проектируемого запроса или его части.

destination_hostgroup — номер хост группы к которой будет применяться правило.

cache_ttl — количество секунд на которе будет кешироваться запрос.

reconnect — пока не используется

timeout — таймаут на выполнения match_pattern или replace_pattern, если запрос занимает больше времени, он убивается.

delay — Задержка до выполнения запроса к backend, полезна в случае, если например запрос SELECT идет сразу после INSERT/UPDATE, чтобы дать время на репликацию.



Добавим 3 правила в таблицу mysql_query_rules

MySQL [(none)]> INSERT INTO mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) VALUES(1,1,'^SELECT .* FOR UPDATE$',1,1);
MySQL [(none)]> INSERT INTO mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) VALUES(1,1,''^SELECT',2,1);
MySQL [(none)]> INSERT INTO mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) VALUES(1,1,'.*',1,1);




Первое правило перенаправляет все запросы SELECT UPDATE на master-сервер

Второе правило перенаправляет се завпросы SELECT slave-сервер

И наконец третье правило перенаправляет все остальные запросы на master-сервер.



Пользователи

Теперь добавим пользователей в таблицу mysql_users. ProxySQL нуждается во всех пользователях, которые присутствуют на всех серверах подключенных к нему. Запрос на добавления пользователя root для обоих хост групп:

MySQL [(none)]> INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('root','password',1);
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('root','password',0);
Query OK, 1 row affected (0.00 sec)




Перенесем изменения в Runtime и сохранимна диск:

MySQL [(none)]> LOAD MYSQL USERS FROM MEMORY
MySQL [(none)]> LOAD MYSQL USERS TO RUNTIME
MySQL [(none)]> SAVE MYSQL USERS FROM MEMORY
MySQL [(none)]> SAVE MYSQL USERS TO DISK
MySQL [(none)]> LOAD MYSQL QUERY RULES FROM MEMORY
MySQL [(none)]> LOAD MYSQL QUERY RULES TO RUNTIME
MySQL [(none)]> SAVE MYSQL QUERY RULES FROM MEMORY
MySQL [(none)]> SAVE MYSQL QUERY RULES TO DISK




Заключение

После вышеописанных действий мы имеем настроенный ProxySQL на репликации Master-Slave. Разумеется это не все возможности ProxySQL, кроме всего прочего он имеет может осуществлять отличный мониторинг всех backend-ов и, разумеется, самого себя.



Ссылки:

Офф сайт: http://www.proxysql.com/

Офф. Документация: https://github.com/sysown/proxysql/tree/master/doc

Настройка Master-Slave репликации с применением ProxySQL и настройкой из конф.файла: http://unix-admin.su/scalable-mysql-cluster/
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/303612/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rolletink

Главная :: Воронежский торрент-трекер

Воскресенье, 19 Июня 2016 г. 22:22 (ссылка)
cool-tracker.ru/

Воронежский файловый обменник, торрент трекер, содержащий контент для взрослых. Можно скачать фильмы, музыку, программы. Пообщаться.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<linux - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda