1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-sia-task

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
DEPLOY.md 19 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 22:52 30bef04

Микросервисная платформа задач распределения инсталляция и развертывание руководство

Руководство по развертыванию контейнеров

I. Инициализация MySQL

  1. Установка и конфигурация MySQL см. официальную документацию MySQL

  2. 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-скрипты, как показано на следующем рисунке:

     ![](docs/images/install-build-task.jpg)

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

     ![](docs/images/install-build-config.jpg)

   - **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). Входная страница имеет следующий вид:

![](docs/images/install-gantry-login.jpg)* Для входа введите имя пользователя/роль пользователя (на открытых проектах нет ограничений на вход, поэтому любое значение имени пользователя/роли будет допустимым). При использовании системы управления задачами вы можете реализовать контроль доступа в соответствии с вашими требованиями.
* Контроль прав доступа осуществляется по ролям (названию группы проектов). Программы, использующие систему управления задачами, должны иметь префикс названием роли (например, если роль называется "abc", то название программы должно начинаться с "abc"). Название задачи также должно содержать префикс названием роли.
* Выберите опцию "являюсь администратором" при входе, чтобы войти как администратор. Администратор может просматривать все задачи всех ролей и вручную создавать новые роли (эта возможность доступна только администраторам).
* Пользователи могут видеть только те задачи, к которым они имеют доступ согласно своим ролям. Один пользователь может принадлежать к нескольким ролям.Меню управления задачами микросервисов представлено на следующем рисунке:

![](docs/images/install-gantry.jpg)

На этой странице можно выполнять различные действия с функциями управления задачами SIA-TASK.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-sia-task.git
git@api.gitlife.ru:oschina-mirror/mirrors-sia-task.git
oschina-mirror
mirrors-sia-task
mirrors-sia-task
master