Руководство по развертыванию контейнеров
Установка и конфигурация MySQL см. официальную документацию MySQL
SQL-скрипт инициализации базы данных для микросервисной платформы задач распределения
-- ----------------------------
-- База данных skyworld_task
-- ----------------------------
CREATE DATABASE IF NOT EXISTS `skyworld_task`;
``````sql
USE skyworld_task;
-- ----------------------------
-- Структура таблицы для skyworld_basic_job
-- job метаданные вводятся вручную
-- ----------------------------
CREATE TABLE IF NOT EXISTS skyworld_basic_job (
`job_id` INT(11) NOT NULL AUTO_INCREMENT,
`job_key` VARCHAR(255) NOT NULL COMMENT 'Уникальный ключ ID',
`job_group` VARCHAR(100) NOT NULL COMMENT 'Имя группы: имя + группа образуют уникальный ключ',
`job_trigger_type` VARCHAR(25) DEFAULT NULL COMMENT 'Тип триггера',
`job_trigger_value` VARCHAR(128) DEFAULT NULL COMMENT 'Значение типа триггера',
`job_description` VARCHAR(250) DEFAULT NULL COMMENT 'Описание задачи',
`job_alarm_email` VARCHAR(100) DEFAULT NULL COMMENT 'Электронная почта для предупреждений задачи',
`job_create_time` DATETIME NOT NULL,
`job_update_time` DATETIME NOT NULL,
`job_plan` VARCHAR(255) DEFAULT NULL COMMENT 'Добавление уровня связывания задачи',
`job_parent_key` VARCHAR(255) DEFAULT NULL COMMENT 'Уникальный ключ родительской задачи',
PRIMARY KEY (`job_id`),
UNIQUE INDEX `job_key_UNIQUE` (`job_key`),
UNIQUE INDEX `job_id_UNIQUE` (`job_id`)
) ENGINE=InnoDB AUTO_INCREMENT=620 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Структура таблицы для skyworld_basic_task
-- task метаданные автоматически получены/введены вручную
-- ----------------------------
CREATE TABLE IF NOT EXISTS skyworld_basic_task (
`task_id` INT AUTO_INCREMENT,
`task_key` VARCHAR(255) NOT NULL COMMENT 'Уникальный ключ - используется для поиска (AppName + HttpPath)',
`task_group_name` VARCHAR(255) NOT NULL COMMENT 'Название группы задач',
`task_app_name` VARCHAR(255) NOT NULL COMMENT 'Имя приложения',
`task_app_http_path` VARCHAR(255) NOT NULL COMMENT 'Путь запроса задачи',
`task_app_ip_port` VARCHAR(255) NULL COMMENT 'IP:порт экземпляра приложения',
`param_count` INT(2) DEFAULT 1 NULL COMMENT 'Существует ли входной параметр: 0 - нет, 1 - есть',
`task_description` VARCHAR(255) NULL COMMENT 'Описание задачи'
);
``````sql
task_source VARCHAR(45) NULL COMMENT 'Источник задачи. TASK_SOURCE_UI — введен вручную, TASK_SOURCE_ZK — автоматически получен',
create_time DATETIME NOT NULL,
update_time DATETIME NULL,
CONSTRAINT task_id_UNIQUE UNIQUE (task_id),
CONSTRAINT task_key_UNIQUE UNIQUE (task_key)
) CHARSET=utf8;
ALTER TABLE skyworld_basic_task
ADD PRIMARY KEY (task_id);
```-- ----------------------------
-- Структура таблицы для skyworld_job_log
-- Журнал выполнения задач, расписание журнала
-- ----------------------------
CREATE TABLE IF NOT EXISTS skyworld_job_log (
`job_log_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Основной ключ ID AUTO_INCREMENT',
`job_id` INT(11) DEFAULT NULL,
`job_trigger_code` VARCHAR(45) DEFAULT NULL COMMENT 'Код триггера - состояние выполнения',
`job_trigger_msg` VARCHAR(2048) DEFAULT NULL COMMENT 'Сообщение триггера - журнал',
`job_trigger_time` DATETIME DEFAULT NULL COMMENT 'Время триггера',
`job_handle_code` VARCHAR(45) DEFAULT NULL COMMENT 'Код обработки - состояние',
`job_handle_msg` VARCHAR(2048) DEFAULT NULL COMMENT 'Сообщение обработки - журнал',
`job_handle_time` DATETIME DEFAULT NULL COMMENT 'Время обработки',
`job_handle_finished_time` DATETIME DEFAULT NULL COMMENT 'Время завершения обработки',
`create_time` DATETIME DEFAULT NULL,
`trace_id` VARCHAR(64) DEFAULT NULL,
`job_group` VARCHAR(255) DEFAULT NULL,
`job_key` VARCHAR(255) NOT NULL DEFAULT 'test_job_test',
PRIMARY KEY (`job_log_id`),
KEY `trace_id_index` (`trace_id`),
KEY `job_key_index` (`job_key`),
KEY `create_time_handle_code_group_index` (`create_time`, `job_handle_code`, `job_group`)
) ENGINE=InnoDB AUTO_INCREMENT=25803002 DEFAULT CHARSET=utf8;-- ----------------------------
-- Структура таблицы для skyworld_portal_stat
-- sia-task статистика, мониторинг использования
-- @Deprecated
-- ----------------------------
CREATE TABLE IF NOT EXISTS skyworld_portal_stat (
`portal_statistics_id` INT AUTO_INCREMENT PRIMARY KEY,
`scheduler` VARCHAR(2048) NOT NULL COMMENT 'IP:PORT шедулера',
`job_call_count` INT NOT NULL COMMENT 'Количество вызовов JOB',
`task_call_count` INT NOT NULL COMMENT 'Количество вызовов задачи',
`job_exception_count` INT NOT NULL COMMENT 'Количество ошибок JOB',
`job_finished_count` INT NOT NULL COMMENT 'Количество завершенных JOB',
`task_exception_count` INT NOT NULL COMMENT 'Количество ошибок задачи',
`task_finished_count` INT NOT NULL COMMENT 'Количество завершенных задач',
`last_time` DATETIME NOT NULL COMMENT 'Последнее время статистики',
`create_time` DATETIME NOT NULL
) CHARACTER SET utf8;-- ----------------------------
-- Структура таблицы для skyworld_task_log
-- task-log журнал задач, task расписание задач
-- ----------------------------
CREATE TABLE IF NOT EXISTS skyworld_task_log (
`task_log_id` INT(11) NOT NULL AUTO_INCREMENT,
`job_log_id` INT(11) DEFAULT NULL COMMENT 'идентификатор журнала задачи',
`job_key` VARCHAR(255) DEFAULT NULL,
`task_key` VARCHAR(255) NOT NULL COMMENT 'task_id',
`task_msg` VARCHAR(2048) DEFAULT NULL COMMENT 'Сообщение состояния, например: ошибка, SUCCESS и т.д.',
`task_status` VARCHAR(45) DEFAULT NULL COMMENT 'Статус: ready, running, finished, exception',
`task_handle_time` DATETIME DEFAULT NULL,
`task_finished_time` DATETIME DEFAULT NULL,
`create_time` DATETIME DEFAULT NULL,
`trace_id` VARCHAR(64) DEFAULT NULL,
PRIMARY KEY (`task_log_id`),
KEY `trace_id_index` (`trace_id`),
KEY `create_time_task_status_task_key_job_key_index` (`create_time`, `task_status`, `task_key`, `job_key`)
) ENGINE = InnoDB AUTO_INCREMENT = 52369829 DEFAULT CHARSET = utf8;-- ----------------------------
-- Структура таблицы для task_mapping_job
-- компоновка отношений job-task, таблица связей задач
-- ----------------------------
CREATE TABLE IF NOT EXISTS task_mapping_job (
`task_map_job_id` INT(11) NOT NULL AUTO_INCREMENT,
`job_id` INT(11) NOT NULL,
`job_key` VARCHAR(255) NOT NULL,
`job_group` VARCHAR(255) NOT NULL,
`task_id` INT(11) NOT NULL,
`task_key` VARCHAR(255) NOT NULL,
`pre_task_key` VARCHAR(255) DEFAULT NULL COMMENT 'Передовая задача',
`input_type` VARCHAR(255) NOT NULL DEFAULT 'from_ui' COMMENT '{from_ui, from_task}',
`input_value` VARCHAR(255) DEFAULT NULL COMMENT 'Значение входных данных',
`route_strategy` VARCHAR(45) DEFAULT 'ROUTE_TYPE_RANDOM' COMMENT 'Стратегия маршрутизации {ROUTE_TYPE_FIRST, ROUTE_TYPE_RANDOM, ROUTE_TYPE_LAST, ROUTE_TYPE_ROUND}',
`failover` VARCHAR(45) DEFAULT NULL COMMENT 'Политика восстановления после ошибки',
`fix_ip` VARCHAR(45) DEFAULT NULL COMMENT 'Фиксированый IP адрес',
`update_time` DATETIME DEFAULT NULL COMMENT 'Дата последнего обновления',
`create_time` DATETIME NOT NULL COMMENT 'Дата создания',
`read_timeout` INT(11) DEFAULT NULL COMMENT 'Время ожидания ответа от API',
PRIMARY KEY (`task_map_job_id`),
UNIQUE KEY `uni_ind_job_task_id` (`job_key`, `job_group`, `task_key`)
) ENGINE = InnoDB AUTO_INCREMENT = 1610 DEFAULT CHARSET = utf8;## 2. Установка ZooKeeper
---
Установку и конфигурацию ZooKeeper можно найти в официальной документации. Минимальное количество узлов должно составлять три.
> Например: A.B.C.2:2181, A.B.C.3:2181, A.B.C.4:2181.
## 3. Развертывание фронтенда платформы задачной микросервисной архитектуры
---
Платформа задачной микросервисной архитектуры использует подход с разделением фронтенда и бэкенда. Код фронта находится в директории sia-task-admin-display.### Подготовка окружения
1. Установка Node.js => [https://nodejs.org/en/download/](https://nodejs.org/en/download/)
2. Подготовка Nginx
### Сборка проекта фронта
Перейдите в локальный проект и выполните следующие команды для сборки кода фронта в директории ~/sia-task/sia-task-admin-display:
- npm install или cnpm install (рекомендуется) cnpm установка: npm install -g cnpm --registry=https://registry.npm.taobao.org
- npm run build
> 1. После завершения сборки будет создан каталог `dist` в текущей директории. Расположите этот каталог `dist` в директории `app` машины, где установлен Nginx.</br>
> 2. Измените адрес сервиса компоновочного центра в конфигурации фронта: `site.map.js` в директории `dist/static` на машине с Nginx (в формате `ip:port`). В зависимости от требований проекта, измените его самостоятельно (параметр `CESHI_API_HOST` указывает на адрес сервиса компоновочного центра).</br>
### Развертывание проекта фронта
1. Настройте прокси в Nginx, откройте файл `nginx.conf` в директории Nginx и добавьте следующую конфигурацию прокси:
server { listen 8080; # порт прослушивания фронта server_name localhost; location / { root app/dist; # директория хранения пакета фронта index index.html index.htm; try_files $uri $uri/ @router; } location @router { rewrite ^.*$ /index.html last; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
## 4. Развертывание центров компоновки задач и управления расписанием
---
### 4.1 Требования к окружению
**Система:** 64-битная ОС, Linux/Mac/Windows
**IDE:** рекомендуется IntelliJ IDEA или Eclipse
**JDK:** JDK 1.8+
Для получения пакета с исходным кодом из проекта SIA-TASK выполните команду `mvn` в директории `sia-task-build-component`.
1. В директории `~/sia-task/sia-task-build-component` выполните следующую команду для сборки: `mvn clean install`.
2. После успешной сборки, в директории `~/sia-task/sia-task-build-component` будет создан каталог `target`, содержащий `.zip` архив, который является установочным пакетом проекта.
3. Откройте директорию с установочным пакетом, распакуйте его и получите директорию `task`, которая состоит из четырёх поддиректорий:
- **bin:** содержит JAR-файлы проектов `sia-task-admin` и `sia-task-scheduler`, а также различные shell-скрипты, как показано на следующем рисунке:

- **config:** содержит конфигурационные файлы проектов `sia-task-admin` и `sia-task-scheduler`, как показано на следующем рисунке:

- **logs:** содержит логи
- **thirdparty:** содержит сторонние библиотеки
### 4.2 Изменение конфигурационных файлов
```nginx
сервер {
слушать 80;
имя_узла localhost;
местоположение / {
прокси_передача http://*.*.*.*:10615; // адрес сервиса компоновочного центра
добавить_заголовок 'Access-Control-Allow-Origin' 'http://*.*.*.*:8080';
добавить_заголовок 'Access-Control-Allow-Credentials' 'истинно';
}
}
```
```nginx
сервер {
слушать 80;
имя_узла localhost;
местоположение / {
прокси_передача http://*.*.*.*:10615; // адрес сервиса компоновочного центра
добавить_заголовок 'Access-Control-Allow-Origin' 'http://*.*.*.*:8080';
добавить_заголовок 'Access-Control-Allow-Credentials' 'true';
}
}
```
```markdown
### 4.3 Настройка сервера Nginx
```nginx
сервер {
слушать 80;
имя_узла localhost;
местоположение / {
прокси_передача http://*.*.*.*:10615; // адрес сервиса компоновочного центра
добавить_заголовок 'Access-Control-Allow-Origin' 'http://*.*.*.*:8080';
добавить_заголовок 'Access-Control-Allow-Credentials' 'истинно';
}
}
```
```nginx
сервер {
слушать 80;
имя_узла localhost;
местоположение / {
прокси_передача http://*.*.*.*:10615; // адрес сервиса компоновочного центра
добавить_заголовок 'Access-Control-Allow-Origin' 'http://*.*.*.*:8080';
добавить_заголовок 'Access-Control-Allow-Credentials' 'true';
}
}
```
```markdown
### 4.4 Изменение конфигурационных файлов
``` Измените конфигурационные файлы `task_config_open.yml` в проекте `sia-task-config` внутри папки `config` и файл `task_scheduler_open.yml` в проекте `sia-task-scheduler`, заменив адреса Zookeeper и MySQL на свои.
4. Запустите проект `sia-task-admin`
> sh start_task_admin_open.sh
5. Запустите проект `sia-task-scheduler`
> sh start_task_scheduler_open.sh
6. Доступ к проекту
Доступ к платформе управления задачами SIA-TASK осуществляется через входной URL (адрес страницы входа, который является адресом сервиса центра компоновки, настроенного в frontend, например http://IP-адрес_машины_где_установлен_frontend:8080). Входная страница имеет следующий вид:
* Для входа введите имя пользователя/роль пользователя (на открытых проектах нет ограничений на вход, поэтому любое значение имени пользователя/роли будет допустимым). При использовании системы управления задачами вы можете реализовать контроль доступа в соответствии с вашими требованиями.
* Контроль прав доступа осуществляется по ролям (названию группы проектов). Программы, использующие систему управления задачами, должны иметь префикс названием роли (например, если роль называется "abc", то название программы должно начинаться с "abc"). Название задачи также должно содержать префикс названием роли.
* Выберите опцию "являюсь администратором" при входе, чтобы войти как администратор. Администратор может просматривать все задачи всех ролей и вручную создавать новые роли (эта возможность доступна только администраторам).
* Пользователи могут видеть только те задачи, к которым они имеют доступ согласно своим ролям. Один пользователь может принадлежать к нескольким ролям.Меню управления задачами микросервисов представлено на следующем рисунке:

На этой странице можно выполнять различные действия с функциями управления задачами SIA-TASK.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )