Вход:  Пароль:  
FreeSource: ИдеальныйСервер ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Оглавление документа

Введение

Идеальный сервер является службой, реализованной в виде процесса(-ов) демона(-ов) serverd
Управляется утилитой serverd-control [options] <command> через сокет /tmp/.serverd/control или сокет tcp/host:control-port

Управление конфигурацией

Конфигурационные параметры идеального сервера иерархически упорядоченыsysctl,mib (сгруппированы) по смыслу.
Идентификаторы конфигурационных параметров отражают их иерархию: label1.label2.label3....labeln
Конфигурационные параметры принимают свои значения из любыхmysql конфигурационных источников: опций командной строки, переменных окружения, конфигурационных файлов.
Конфигурационные параметры идеального сервера имеют значения по умолчанию (определяемые на стадии его сборки), позволяющие получить работоспособную службу без предварительного задания каких-либо явных значений в конфигурационных источниках.
Семантика (порядок применения, наследования и т.д.) определяется службой идеального сервера.

Опции командной строки

Опции командной строки позволяют задавать начальные значения любых конфигурационных параметров при помощи специальной опции -o label1-label2-label3-...-labeln=value,label1-label2-label3-...-labeln=value ...mount или при помощи «длинной» формы: --label1.label2.label3....labeln=value ... или --label1-label2-label3-...-labeln=value ...mysqld. Для часто используемых конфигурационных параметров «короткая» форма – псевдонимы -o alias=value или --alias=value или -a value ....

Переменные окружения

Переменные окружения позволяют задавать начальные значения любых конфигурационных параметров при помощи специальной формы: SERVERD_LABEL1_LABEL2_LABEL3_..._LABELn=value .... Префикс SERVERD_ играет роль идентификатора «пространства имен» конфигурационных переменных окружения идеального сервера.

Конфигурационные файлы

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

Формат

Конфигурационные файлы идеального сервера имеют текстовый (utf-8) вид отражают иерархию конфигурационных параметров при помощи естественной (для современных ОС) иерархии дерева каталоговetcnet,tcb,procfs,sysfs.



Параметры c единственными значениями представлены файлами, содержимое которых и является значением параметра.
Пареметры с множественными значениями представленны каталогами, содержимое файлов которых (просмотриваемых в лексографическом порядке их имен) является значениями параметра.
Подстановки значений одних параметров в качестве значения(-й) других параметров реализуются при помощи символических ссылок на файлы (каталоги).
Вычисляемые значения параметров реализуются при помощи исполняемых файлов (содержимое стандартного потока вывода при выполнении которых и являются вычисленым значением параметра) или именнованных каналов (результат чтения которых и является вычисленым значением параметра).

Приемущества
  1. Все есть файл.
  2. Простота и естественность реализации и использования.
  3. Кэширование в оперативной памяти дискового кэша (ядра ОС).
  4. Производительность операций поиска нужного конфигурационного параметра, равная производительности используемой файловой системы (зачастую построенных на основе адекватных структур данных – деревьев и т.д., управляемых ядром ОС).
  5. Возможность делигирования полномочий управления подмножествами конфигурационных параметрам отдельным пользователям или группам пользователей (контроль подобных полномочий ядром ОС).
  6. Облегчает реализацию контроля и управления версиями конфигураций (штатными системами RCS/CVS/...).
Недостатки

1. Из-за присущей текстовым файлам избыточности, такие файлы конфигурации неоптимально используют дисковое пространство (правда, замечу, в большинстве случаев это неактуально из-за небольших размеров файлов конфигурации и постоянно снижающейся стоимости хранения).
2. Формат удобный для восприятия человеком (текстовый файл) неудобен для «восприятия» машиной. В этом случае возможны нерабочие файлы конфигурации из-за опечаток, синтаксических ошибок, неверного порядка следовании параметров, а также случается (правда редко), что некоторые последовательности символов понятные человеку интерпретируются машиной непредсказуемым образом.
3. Вытекает из п.2. Для применения конфигурации текстовый файл транслируется в вид удобный для восприятия машиной и в случае больших файлов преобразование занимает относительно продолжительное время, что в некоторых случаях нежелательно.

Размещение

Общисистемные конфигурационные файлы /etc/serverd.d/*
Пользовательские конфигурационные файлы ~/.serverd.d/*

Программный интерфейс (API) управления конфигурацией

Программный интерфейс управления конфигурационными параметрами идеального сервера реализуется в виде библиотеки libserverdconfig.so языка C (с последующими привязками к другим языкам программирования) и предоставляет возможность запроса и установки активных и сохраненных значений конфигурационных параметров идеального сервера при помощи своих иерархических идентификаторов label1.label2.label3....labeln)

struct cfg_parameter {
  char* name;
  char* value;
}

struct cfg_configuration {
  /* Не имеет значения для API */
}

enum cfg_types { ACTIVE, SAVED };

struct parameter* cfg_getparameterbyname(char *name, int type);
int cfg_setparameterbyname(char *name, struct cfg_parameter int type);

struct configuration* cfg_open(int type);
struct parameter* cfg_getnextparameter(struct cfg_configuration*);
int cfg_close(struct cfg_configuration*);

Утилиты управления конфигурацией

Утилиты управления конфигурацией предназначены для избавленияiptables администратора от необходимости изменять сохраненные значения конфигурационных параметров напрямую в конфигурационных файлах (но не исключают эту возможность).
Активные и сохраненные значения конфигурационных параметров идеального сервера могут быть запрошены, установлены или сохранены (при помощи своих иерархических идентификаторов label1.label2.label3....labeln) утилитойaptconfig,sysctl
serverd-config [-с <configroot>] save|get|set [active|saved] [label1.label2.label3....labeln[[+|-]=[value|$label1.label2.label3....labeln]]
через сокет /tmp/.serverd/config или сокет tcp/host:config-port и из/в конфигурационных(-ые) файлов(-ы) соответственно.


Пример сеанса управления конфигурацией идеального сервера

Управление версиями конфигураций

TODO:


Управление профилями конфигураций

TODO:

Документирование назначения конфигурационных параметров

TODO:
см. literate programming


sysctl sysctl(8)
mib SNMP MIB
mysql MySQL
mysqld mysqld
etcnet /etc/net
tcb /etc/tcb
procfs /proc (procfs)
sysfs /sys (sysfs)
mount mount(8): опции монтирования
aptconfig apt-config(8)
iptables service iptables save


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]

Почему-то мне кажется, что всё это уже было ;)
GConf,Elektra.
Стоит ли идти по-этому пути самому? Может быть тогда лучше задействовать существующие аналоги?


--
Stanislav Ievlev.

-- corenet-node6.iph.ras.ru (2005-12-19 17:24:23)

Для меня главный вопрос, который возникает при прочтении этой страницы — а _почему_ идеальный сервер должен выглядеть именно так. Какие задачи при этом решаются?

-- KirillMaslinsky? (2005-12-19 17:50:52)
>Stanislav Ievlev

Это было еще и в оффтопике :)
Однако все реализации вместо упрощения жизни (пользователям, сисадминам..) ее необосновано усложнили, пытаясь все централизовать и унифицировать (сделать зеленым и квадратным), на основе ультрамодных XML (упрятав небольшое количество полезной информации, в большом количестве относительно бесполезной структурной) и всяческих там индексированых *DB для пущей производительности (это при одноразовом-то чтении значений конфигурационных параметров)...

-- DimitryKetov (2005-12-19 20:56:37)
>Kirill Maslinsky

Идеальный сервер для меня – это понятие не маркетингово-амбициозное (самый лучший), а скорее научно-абстрактное (недостижимый) – как идеальный импульс, идеальный газ, материальная точка :)...
Задачи идеального сервера (как не странно) состоят в (каком угодно) обслуживании пользователей.
Свойства идеального сервера позволяют (пользователям – использовать, сисадминам – настраивать) предметеую сторону вопроса, не отвлекаясь на побочные эффекты конкретной формы (новый сверхсупермногообещающий формат коняигурационных файлов, пуристская сверхунификация или сверхцентрализация хранения настроек и т.п.)

-- DimitryKetov (2005-12-19 21:40:36)

По мне-так просто хранение в другом формате – это «те же яйца только в профиль» ;)
В любом случае данный путь унификации это либо:
1. дубль уже имеющихся конфигов с вытекающими проблемами синхронизации
2. требование переписывания всех существующих программ (что собственно и предлагает Elektra).


Одно дело etcnet – полностью замкнутая подсистема которая всё хранит так как ей удобнее – другое дело привязывать всё это к существующим сервисам.


--
Stanislav Ievlev.

-- corenet-node6.iph.ras.ru (2005-12-20 16:31:44)
>Stanislav Ievlev

Яйца тоже бывают разными... Красная икра это тоже яйца ;) (терпение, спокойствие – сейчас они появятся!)


Это не унификация, это упрощение дабы начинающие (да и просто ценящие свое время) пользователи (да и сисадмины) занимались делами, а не очередным изучением очередных суперконфигов.
(http://wiki.sisyphus.ru/admin/etcnet/#internals)

... /etc/net остаётся системой конфигурации сети в Linux, то есть должна позволить вам сконфигурировать вашу сеть без трюков и особого напряжения...

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

-- DimitryKetov (2005-12-20 21:57:13)

Немного конструктива:
* ветка для хранения конфигов может быть физически какой-нить легкой сжимающей ФС, и даже в памяти не займет много места (а заодно и контроль целостности) и времени (благо читается нечасто — при запуске и по команде обновления);
* нечто подобное в конфигах djb, или я ошибаюсь?

-- EvgenyAnanyev (2006-05-04 14:25:56)