1C & PostgreSQL 9.5

Я тут, на на просторах интернета, накопал патчи для Postgres 9.5 для работы с 1C. Собрал пакетики, теперь тестируем. Хочу обратить внимание, что патчики эти не официальные и их использовать можно на свой страх и риск.

Пакетики я собрал как для RH6 так и для RH7-based.

Вот так по простому подключаем репозиторий, например, для Centos 6:

cat << EOF > /etc/yum.repos.d/1c.repo
[1c_personal]
name=1C Personal
baseurl=http://abf-downloads.abf.io/1c_personal/repository/rosa-server66/x86_64/main/release/
enabled=1
gpgcheck=0
EOF

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

# yum install postgresql95-server

Ну а дальше, все как обычно:

# /etc/init.d/postgresql-9.5 initdb
# /etc/init.d/postgresql-9.5 start

Если мы ранее использовали postgresql 9.4 на этой же машине, то можно выполнить обновление базы:

# /etc/init.d/postgresql-9.4 stop
# /etc/init.d/postgresql-9.5 stop
# sudo su - postgres
$ /usr/pgsql-9.5/bin/pg_upgrade -b /usr/pgsql-9.4/bin/ -B /usr/pgsql-9.5/bin/ --old-datadir=/var/lib/pgsql/9.4/data --new-datadir=/var/lib/pgsql/9.5/data
$ logout
# /etc/init.d/postgresql-9.5 start
# /var/lib/pgsql/analyze_new_cluster.sh

После таких манипуляций 1С-Server работает со своими базами в PostgreSQL только уже на версии 9.5. Со стороны пользователей 1С видимых регрессов пока не заметил.

Свое собственноe облако restfs

Я тут, тихим сапом, взялся осваивать c++. В результате моих изысканий родилось что то чуть более чем «Hello world». В качестве задачки я взялся за реализацию некоего REST API для облачного хранения файликов.
Первый прототип выложил на GitHub restfs.
Умеет оно совсем не много.
— создавать пользователей
— логиниться под этим пользователем (получать сессионный токен)
— создавать и просматривать директории
— заливать и скачивать файлики.

Работает как fcgi daemon, чтобы легко прятаться за nginx. Все это работает в потоках и настраивается простым ini файлом.
Файлики хранит в Elliptics on Yandex а информацию о них хранит в PostgreSQL.

Тут описание в формате RAML о том, как это использовать.

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

И это боюсь только начало…

Postgres + GSSAPI

secure-postgresql-deployment-17-728Чисто ради интереса, решил попробовать настроить аутентификацию при подключению к PostgreSQL из ActiveDirectory развернутом на базе Samba 4.3. В общем, оказалось ничего сложного.

1. Заводим обычного пользователя в AD, под которым наш сервер PostgreSQL будет обращаться в AD, и выгружаем keytab следующим образом (из винды, которая в домене):

C:\>ktpass -princ postgresql/srv.krb.local@KRB.LOCAL -mapuser pguser -pass pgpass -out pgpass.keytab

где postgresql — имя службы (обязательно именно такое для PostgreSQL),
srv.krb.local — FQDN сервера, на котором работает PostgreSQL,
KRB.LOCAL — REALM нашего домена,
pguser — пользователь, которого мы завели в домене,
pgpass — пароль этого пользователя в домене,
pgpass.keytab — имя файла куда выгружаем все эти данные.

2. На сервере srv.krb.local необходимо установить и настроить Kerberos клиента. Если этот сервер был ранее введен в домен, то все это у Вас уже настроено. В противном случае необходимо установить пакет krb5-workstation (у Вас же там Centos, правда?) и привести файл /etc/krb5.conf примерно к такому виду:

[libdefaults]
        default_realm = KRB.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true

а в /etc/resolv.conf nameserver должен указывать на DNS сервер, который обслуживает Ваш AD

3. Запишем файл pgpass.keytab куда-нибудь на сервер srv.krb.local, где его сможет прочитать PostgreSQL. Я например его записал в /var/lib/pgsql/krb/pgpass.keytab и выставил права:

$ chown postgres:postgres /var/lib/pgsql/krb/pgpass.keytab
$ chmod 600 /var/lib/pgsql/krb/pgpass.keytab

4. В Файле postgresql.conf задаем параметры:

listen_addresses = '*'
krb_server_keyfile = '/var/lib/pgsql/krb/pgpass.keytab'

а в файле pg_hba.conf пишем:

host  all all 0.0.0.0/0 gss include_realm=0 krb_realm=KRB.LOCAL

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

5. Перечитываем настройки PostgreSQL:

# service postgresql-9.4 reload

6. Пользователи с именами аналогичными тем, что в домене должены обязательно присутствовать в PostgreSQL или же Вам потребуется делать map, используя файл pg_ident.conf, но я на этом останавливаться не буду, а просто создам пользователя в PostgreSQL как в домене, например, administrator.

postgres=# CREATE ROLE administrator LOGIN ;

И если Вы нигде ничего не напутали, то под этим пользователем можно подключаться к серверу с любой машины, которая есть в Вашем домене:

$ whoami
administrator
 
$ klist 
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: administrator@KRB.LOCAL
 
Valid starting     Expires            Service principal
03/02/16 18:09:22  03/03/16 04:09:22  krbtgt/KRB.LOCAL@KRB.LOCAL
        renew until 03/03/16 18:09:16
 
$ psql -h srv.krb.local postgres
psql (9.4.6)
Введите "help", чтобы получить справку.
 
postgres=> \conninfo
Вы подключены к базе данных "postgres" как пользователь "administrator" (сервер "srv.krb.local", порт "5432").
postgres=>

В общем это все.

Zabbix 3.0 Update

roadmap-bulb-smallОб этом релизе много говорили. На Хабре опубликована статься со списком наиболее значимых изменений.

Хочу заметить, что обновление прошло почти гладко. Лишь не много пришлось доработать модуль в Puppet, чтобы zabbix_server не ругался на синтаксис файла конфигурации, но это проблема даже не самого Zabbix.

Не хватает версии для RH-Based 6.x дистрибутивов, но сервер у меня на семерке, а zabbix-агенты 2.4 с сервером 3.0, вроде, не ругаются и исправно собирают данные. В общем тестируем.

Обновление PostgreSQL

Linux_Postgres_1CБуквально вчера на сайте postgresql.org опубликовали новость про выпуск корректирующих релизов всех поддерживаемых версий, а сегодня я уже тестирую сборочку PostgreSQL 9.4.6 для работы под базами 1C. Кому интересно, подключайте репозиторий и тестируйте.

Подключаем реп:

# cat << EOF > /etc/yum.repos.d/1c_personal.repo
[1c_personal]
name=1C Personal
baseurl=http://abf-downloads.abf.io/1c_personal/repository/rosa-server67/x86_64/main/release/
enabled=1
gpgcheck=0
EOF

Устанавливаем:

# yum install -y postgresql94-server postgresql94-contrib

Этот репозиторий подходит для Centos 6.7/RELS 6.7/Scientiffic Linux 6.7 и архитектуры x86_64

Есть также сборка под x86 и под версию дистрибутивов 6.6

PGConf 2016

PostgreSQLС 3 по 5 февраля в Москве на площадке Известия Холл проходила конференция PGConf 2016.

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

Автор доклада Michael Paquier рассказал про свою разработку менеджера резервного копирования кластера PostgreSQL.

Попробую кратко описать суть, как её понял я:

Сначала делается полная резервная копия файлов кластера как это делается обычно  pg_start_backup && tar -zcf /path/to/backup.tar.gz  $PGDATA && pg_stop_backup. При этом, запоминается номер транзакции или другая отметка этого момента.

Затем при повтором запуске оно делает не полную копию как в первый раз, а с момента отметки прошлой вычитывает номера страничек из WAL которые были изменены и копирует только их.

Все это обернуто в довольно удобную утилитку pg_arman  для сохранения и восстановления. Автор выкладывает все в GitHub. Для боевого использования оно пока не годится, зато потестировать можно.

 

Добро пожаловать

Рад поприветствовать Вас на своем личном ресурсе, посвященном моей работе и всему, что с ней связано.

Тут я буду размещать различные заметки, связанные с IT, администрированием и всякими настройками, короче говоря, очередной блог гика.