ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: jabber services
@ 2007-03-05 13:24 Mikhail Yakshin
  2007-03-05 13:37 ` Mikhail Gusarov
                   ` (3 more replies)
  0 siblings, 4 replies; 28+ messages in thread
From: Mikhail Yakshin @ 2007-03-05 13:24 UTC (permalink / raw)
  To: ALT Devel discussion list

Приветствую!

Предлагаю вниманию интересующихся некий примерный проект того, как 
планируется организовывать инфраструктуру сборки jabber-сервисов в ALT:

1. Серверы

Есть серверы - ejabberd, jabberd2, возможно wildfire. Каждый лежит в 
своем пакете, ни от кого не зависит. Каждый можно поставить абсолютно 
отдельно, без всего. Ничего, кроме себя, опять же, они не провайдят.

2. Транспорты

Есть транспорты, которые являются отдельными сервисами с точки зрения 
системы (т.е. имеют отдельный собственный SysV-init). Предпочтительно 
иметь в названии транспорта префикс "jabber" (jabber-jit, jabber-mrim, 
jabber-pyicqt и т.п.) - и в названии пакета, и в названии сервиса. 
Транспорт точно так же, никого не требует, никого не провайдит, кроме себя.

Rationale: транспорт не должен зависеть от сервера, т.к. сервер может не 
быть в одном окружении с транспортом (на одной физической или 
виртуальной машине).

3. Теоретическое обоснование их связи

Транспорты и серверы общаются между собой через протокол accept-connect 
через TCP/IP. Все иные варианты взаимодействия использовать 
рекомендуется не рекомендуется, т.к. они менее универсальны и зачастую 
не позволяют разнести сервер с транспортом по сети.

Есть некая управляющая система (по механизму действия схожая с control 
или alternatives), которая знает о том, что есть те и другие и связывает 
их между собой. У системы есть один вызов типа "сделать все хорошо", 
который вызывается при:

* инсталляции нового сервера
* инсталляции нового транспорта

"Сделать все хорошо" включает в себя прописывание всех транспортов по 
все серверы, если только они оттуда не были принудительно выкинуты 
(прописываемые строчки закомментированы).

Есть некая сложность в том, что во всех известных мне серверах 
(jabberd1.4, jabberd2, ejabberd) нет нормальной модуляризации конфига с 
возможностью подключения модуля через установку дополнительного кусочка 
конфига в какой-то каталог, а в головном конфиге иметь что-то вроде 
"include тот-каталог/*". Таким образом, управляющая система должна будет 
влезать в конфиги этих серверов и что-то исправлять (дописывать) в них 
вручную, при этом, разумеется, зная синтаксис каждого такого конфига.

4. Практический ход их связи

При инсталляции нового транспорта нужно сгенерировать конфиг, в котором 
есть как минимум:

* номер порта (статический, заранее присвоенный в рамках ALT)
* hostname (генерящийся из заранее присвоенного префикса типа "mrim." + 
hostname)
* генерящийся случайно пароль

Задачи управляющей системы:

1) получить от транспорта эти данные из конфига (очевидно, система не 
может знать форматы конфигов всех возможных транспортов, для этого нужен 
маленький адаптер со стороны транспорта)

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

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

5. Реализация

1) генерящийся конфиг со стороны транспорта (в postinstall)
2) адаптер со стороны транспорта - скрипт а ля pkgconfig, с опциями 
--host, --port, --password.
3) адаптер со стороны сервера - скрипт, которому передаются такими же 
опциями --host= --port= --password= параметры; после запуска скрипта 
появляется некая уверенность в том, что данный транспорт подключен к 
данному серверу.
4) скрипт-диспетчер "сделать все хорошо" (в postinstall всех транспортов 
и серверов) - запускает все возможные комбинации адапетров серверов и 
транспортов и пихает их вводы-выводы друг дружке.

6. Директории

Все серверы и транспорты имеют собственные директории логов / спулов / 
lib и т.п., в соответствии с именем пакета. Рекомендуется использовать 
что-то вроде:

/var/log/ejabberd
/var/log/jabber-pyicqt
/var/log/jabber-mrim
...
/var/lib/ejabberd
/var/lib/jabber-pyicqt
/var/lib/jabber-mrim
...
/var/spool/ejabberd
/var/spool/jabber-pyicqt
/var/spool/jabber-mrim
...

Буду рад услышать комментарии, мысли. Если принципиальных возражений нет 
- то готов буду скоро предоставить реализацию этой идеи в виде скриптов.

-- 
С уважением, Михаил Якшин


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2007-06-23 14:30 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-05 13:24 [devel] I: jabber services Mikhail Yakshin
2007-03-05 13:37 ` Mikhail Gusarov
2007-03-11 13:47   ` [devel] jabber policy? (was: I: jabber services) Michael Shigorin
2007-03-11 16:40     ` Mikhail Gusarov
2007-03-11 19:49       ` Michael Shigorin
2007-03-05 14:02 ` [devel] I: jabber services Шенцев Алексей Владимирович
2007-03-05 14:15   ` Nick S. Grechukh
2007-03-05 15:16   ` Mikhail Yakshin
2007-03-05 15:22     ` Шенцев Алексей Владимирович
2007-03-05 14:16 ` Dmitriy L. Kruglikov
2007-03-05 14:47   ` Alexey I. Froloff
2007-03-05 15:06   ` Mikhail Yakshin
2007-03-05 23:52 ` Mikhail Yakshin
2007-03-12  7:59   ` Mikhail Yakshin
2007-03-12 10:26       ` Mikhail Yakshin
2007-03-12 23:01     ` Michael Shigorin
2007-03-13  5:25       ` Alexey Sidorov
2007-03-13  8:22         ` Mikhail Yakshin
2007-03-13 14:00           ` Alexey Sidorov
2007-03-14 13:53             ` [devel] [JT] точки над Ы (Was: I: jabber services) Andrei Bulava
2007-03-14 14:20               ` Anton Farygin
2007-03-14 14:32                 ` Igor Zubkov
2007-03-14 14:43                   ` Anton Farygin
2007-06-21 22:37                     ` Igor Zubkov
2007-06-23 14:30                       ` Денис Смирнов
2007-03-14 18:06               ` Алексей Сидоров
2007-03-17 12:58               ` [devel] [JT] активный админ -- толковый майнтейнер Michael Shigorin
2007-03-13  8:53       ` [devel] I: jabber services Денис Смирнов

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git