Bind9: balancing by client ip (even/odd)

For some reason i need balancing client’s 50/50 for 2 datacenter’s
But, if client send GET request to datacenter1 (DC1) all following request need redirect to the same DC1. Only if DC1 is down – send to DC2
Simplest way – is share client’s by their ip (odd/even)
So we need two Bind9 services on one server.
First Bind9 will be answered that www.example.org is in DC1, second – in DC2
For example first named.conf:

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};
....

Zone:

Читати далі

Telegram Bot on ruby

apt-get install ruby gem ruby-dev make gem install telegram-bot-ruby Теперь необходимо получить токен для бота. Заходим в Telegram, добавляем бота @BotFather, и создаем бота: So, let’s write to out bot and get updates curl -s -X POST https://api.telegram.org/botNNNNN:NZNZNNZNZNZNNZNZ/getUpdates And we have: {“ok”:true,”result”:[{“update_id”:923096141, “message”:{“message_id”:2130,”from”:{“id”:,”first_name”:””,”username”:””},”chat”:{“id”:,”first_name”:””,”username”:””,”type”:”private”},”date”:1447842513,”text”:”test”}}]} # encoding: utf-8 # require ‘telegram/bot’ #require_relative ‘getimg’ token = ‘NNNNNN:XNXNXNXNXNXNXNXNX’ #inputMess … Читати далі

Git: запомнить пароль на день

Чтобы в течении рабочего дня не воодить постоянно пароль при доступе в Git в версии 1.7.9 и выше появилась возможность кеширования введенных данных

git config --global credential.helper cache

это заставит держать данные авторизации в памяти
По умолчанию 15минут.
Но можно выставить свое время

Читати далі

Продолжаем осваивать Git

Начало тут
После того как мы создали пустой репозиторий на сервере, нужно добавить туда наш проект

git add * && git commit -m "Initial commit" && git push origin master

где,
origin это сервер на котором у нас код… и добавляется он вот так

git remote add origin ssh://git@/git/test.git

Возможны ошибки при первом комите:

root@client:app# git push
Password:
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'ssh://root@giserver.com/git/app'

Указываем явно куда пушить

root@gitclient# git push origin master
Password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 203 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://root@gitserver.com/git/app
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://root@gitserver.com/git/app'

Все равно не поддается на провокацию. Сия ситуация хорошо описана тут http://pete.akeo.ie/2011/07/git-remote-repository.html
Git думает что раз репозиторий пустой, то есть не завершенный первый коммит и не дает простому смертному стать первым. Для этого мы на сервере создадим новую ветку:

root@gitserver : git checkout -b first-commit
Switched to a new branch 'first-commit'
root@gitserver $ git symbolic-ref HEAD refs/heads/first-commit

После этого можем внести изменения в код на клиенте и передать это на сервер

echo "new file" > README
git add README
git commit -m "Added file README"
git push origin master

Читати далі

Управляем KVM через браузер с помощью WebVirtMgr

При работе с системами виртуализации всегда хочеться получить доступ к хост-машине с любой точки мира и с любого устройства которое есть под рукой. Если пользоваться штатными инструментами KVM, XenServer, VMWare то там необходима установленая консоль управления на локальном ПК и если нужно сделать, что то удаленно и быстро то возникают проблемы… начинаеш ставить консоль, не хватает .Net… поставил его, не хватает чего то другого. В результате, иногда, чтоб перегрузить умершую виртуалку требуется 30-60мин пока все скачаеш и поставишь. Хотя все это можно проделать с консоли за 30сек 🙂
Но мы не об этом.

Тут будет актуально имет скорый доступ к управлению через браузер, что даст возможность подключится даже с телефона.
Приступим к настройке.
Исходные данные: Debian 7.7
Настраиваем все с нуля.

Читати далі

Отключить Basic авторизацию для каталога в Apache

На сервере настроена Basic авторизация доступа к http средствами Apache, но есть одна директория к которой нужно получать доступ без запроса логина и пароля.
Чтобы исключить этот каталог можно воспользоваться файлом .htaccess
Что мы имеем на входе: Apache 2.2.22, Debian 7 и такой конфиг :

cat /etc/apache2/sites-enabled/000-default
.......

AuthType Basic
  AuthName "Authentication Required"
  AuthUserFile ".password"
  Require valid-user
......

Читати далі

Ускоряем PHP. Установка eAccelerator в Debian

Для удовлетворения потребностей 1C Bitrix в мощи сервака я извращался как мог, но быстрее чем за 3сек страница не грузилась – время генерации самой страницы 1.1сек, это после того как удалось уменьшить время отработки MySQL почти в 2 раза

Пришлось таки ускорять сам PHP.
Будем пробовать с помощью eAccelerator на базе Debian 7.3(amd64) + Apache 2.2.22 + PHP 5.3
Официальная страница модуля: https://github.com/eaccelerator/eaccelerator

Читати далі