uploader-bot/docs/MY_NETWORK_README.md

422 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MY Network v2.0 - Distributed Content Protocol
## 🌐 Обзор
MY Network - это распределенная система для управления и синхронизации контента между нодами. Протокол обеспечивает:
- **P2P сеть** для обмена данными между нодами
- **Автоматическую синхронизацию** контента
- **Load balancing** на основе метрик нагрузки
- **Веб-интерфейс мониторинга** в хакерском стиле
- **Совместимость** с существующей инфраструктурой
## 🚀 Быстрый запуск
### Минимальный запуск для тестирования:
```bash
# 1. Установить зависимости
pip install -r requirements_new.txt
# 2. Запустить минимальный сервер
python start_my_network.py
```
Откройте http://localhost:8000/api/my/monitor/ для мониторинга.
### Запуск с существующей системой:
```bash
# 1. Использовать совместимые файлы
cp docker-compose.compatible.yml docker-compose.yml
cp .env.compatible .env
# 2. Запустить через Docker
docker-compose up -d
# 3. MY Network автоматически интегрируется
```
## 🏗️ Продакшен развертывание
### Автоматическое развертывание:
```bash
# Сохранить переменные окружения
export DOMAIN="your-domain.com"
export EMAIL="admin@your-domain.com"
# Запустить скрипт развертывания (требует root)
sudo bash deploy_my_network.sh
```
Скрипт автоматически установит:
- ✅ Nginx с SSL (Let's Encrypt)
- ✅ Docker и Docker Compose
- ✅ Firewall и безопасность
- ✅ Systemd сервисы
- ✅ Мониторинг и health checks
### Ручное развертывание:
```bash
# 1. Создать production .env
cp .env.example .env.production
# Отредактировать настройки
# 2. Запустить продакшен контейнеры
docker-compose -f docker-compose.prod.yml up -d
# 3. Настроить nginx
sudo cp nginx.conf /etc/nginx/sites-available/my-network
sudo ln -s /etc/nginx/sites-available/my-network /etc/nginx/sites-enabled/
sudo systemctl restart nginx
```
## 📊 Мониторинг и управление
### Веб-интерфейс:
- **Основной мониторинг**: http://your-domain/api/my/monitor/
- **ASCII статус**: http://your-domain/api/my/monitor/ascii
- **API документация**: http://your-domain/api/docs
### API эндпоинты:
#### Информация о ноде:
```bash
# Статус ноды
curl http://localhost:8000/api/my/node/info
# Подключенные пиры
curl http://localhost:8000/api/my/node/peers
# Статус синхронизации
curl http://localhost:8000/api/my/sync/status
```
#### Управление пирами:
```bash
# Подключиться к пиру
curl -X POST http://localhost:8000/api/my/node/peers/connect \
-H "Content-Type: application/json" \
-d '{"address": "http://peer-node:8001"}'
# Отключиться от пира
curl -X DELETE http://localhost:8000/api/my/node/peers/PEER_ID
```
#### Синхронизация:
```bash
# Запустить синхронизацию
curl -X POST http://localhost:8000/api/my/sync/start
# Реплицировать контент
curl -X POST http://localhost:8000/api/my/content/HASH/replicate \
-H "Content-Type: application/json" \
-d '{"target_nodes": ["node1", "node2"]}'
```
### Системные команды:
```bash
# Управление сервисом
sudo systemctl start my-network
sudo systemctl stop my-network
sudo systemctl restart my-network
sudo systemctl status my-network
# Просмотр логов
sudo journalctl -u my-network -f
tail -f /var/log/my-network/app.log
# Проверка здоровья
/opt/my-network/health_check.sh
# Docker команды
docker-compose logs -f my-network-app
docker-compose ps
```
## 🔧 Конфигурация
### Основные настройки (.env):
```env
# MY Network Configuration
MY_NETWORK_ENABLED=True
MY_NETWORK_NODE_ID=unique-node-id
MY_NETWORK_P2P_PORT=8001
MY_NETWORK_API_PORT=8000
# Bootstrap ноды (JSON массив)
MY_NETWORK_BOOTSTRAP_NODES=["http://bootstrap1:8001", "http://bootstrap2:8001"]
# Настройки синхронизации
SYNC_MAX_CONCURRENT=5
SYNC_TIMEOUT=300
SYNC_RETRY_ATTEMPTS=3
# Настройки пиров
PEER_HEALTH_CHECK_INTERVAL=60
PEER_CONNECTION_TIMEOUT=30
MAX_PEER_CONNECTIONS=50
```
### Bootstrap конфигурация (bootstrap.json):
```json
{
"version": "2.0",
"network_id": "my-network-main",
"bootstrap_nodes": [
{
"node_id": "bootstrap-1",
"address": "https://bootstrap1.my-network.com:8001",
"public_key": "...",
"trusted": true
}
],
"consensus": {
"algorithm": "raft",
"election_timeout": 5000,
"heartbeat_interval": 1000
}
}
```
## 🌍 Архитектура сети
### Компоненты:
1. **Node Service** - основной сервис ноды
2. **Peer Manager** - управление подключениями
3. **Sync Manager** - синхронизация контента
4. **Bootstrap Manager** - управление bootstrap конфигурацией
### Протокол взаимодействия:
```
Нода A Нода B
| |
|--- Handshake ---------> |
|<-- Auth Response ------- |
| |
|--- Content List ------> |
|<-- Missing Content ---- |
| |
|--- File Transfer -----> |
|<-- Confirmation ------- |
```
### Состояния контента:
- **Local** - только на текущей ноде
- **Syncing** - в процессе синхронизации
- **Replicated** - скопирован на другие ноды
- **Verified** - проверена целостность
## 🔒 Безопасность
### Встроенные механизмы:
- **TLS шифрование** для всех соединений
- **Проверка хешей** для целостности файлов
- **Аутентификация пиров** через public key
- **Rate limiting** для предотвращения DDoS
- **Firewall правила** для ограничения доступа
### Рекомендации:
```bash
# Настроить firewall
sudo ufw allow 8000:8010/tcp
sudo ufw allow 8000:8010/udp
# Включить fail2ban
sudo systemctl enable fail2ban
# Регулярные бэкапы
0 2 * * * /opt/my-network/backup.sh
```
## 📈 Мониторинг и алерты
### Метрики:
- **Количество подключенных пиров**
- **Статус синхронизации**
- **Использование ресурсов**
- **Время отклика**
- **Ошибки сети**
### Health checks:
```bash
# HTTP health check
curl -f http://localhost:8000/health
# MY Network specific
curl -f http://localhost:8000/api/my/health
# Detailed status
curl http://localhost:8000/api/my/network/stats
```
### Prometheus интеграция:
```yaml
# prometheus.yml
scrape_configs:
- job_name: 'my-network'
static_configs:
- targets: ['localhost:9090']
metrics_path: '/metrics'
```
## 🐛 Устранение неисправностей
### Частые проблемы:
#### 1. Нода не подключается к пирам:
```bash
# Проверить сетевые соединения
netstat -tulpn | grep 8001
# Проверить firewall
sudo ufw status
# Проверить логи
tail -f /var/log/my-network/app.log
```
#### 2. Синхронизация не работает:
```bash
# Проверить статус синхронизации
curl http://localhost:8000/api/my/sync/status
# Перезапустить синхронизацию
curl -X POST http://localhost:8000/api/my/sync/start
# Проверить доступность целевых нод
curl http://target-node:8001/api/my/health
```
#### 3. Высокое использование ресурсов:
```bash
# Проверить использование CPU/памяти
docker stats my-network-app
# Ограничить ресурсы
docker update --memory=2g --cpus=2 my-network-app
# Настроить параметры синхронизации
echo "SYNC_MAX_CONCURRENT=2" >> .env
```
### Диагностические команды:
```bash
# Проверить все компоненты
curl http://localhost:8000/api/my/health | jq
# Список активных соединений
curl http://localhost:8000/api/my/node/peers | jq
# Статистика сети
curl http://localhost:8000/api/my/network/stats | jq
# ASCII статус (для консоли)
curl http://localhost:8000/api/my/monitor/ascii
```
## 🔄 Обновление системы
### Обновление без downtime:
```bash
# 1. Подготовить новую версию
git pull origin main
# 2. Собрать новый образ
docker-compose build my-network-app
# 3. Rolling update
docker-compose up -d --no-deps my-network-app
# 4. Проверить статус
curl http://localhost:8000/health
```
### Миграция данных:
```bash
# Экспорт данных
docker exec my-network-db mysqldump -u root -p mymusic > backup.sql
# Миграция схемы (если нужно)
docker exec my-network-app python -m alembic upgrade head
# Импорт данных
docker exec -i my-network-db mysql -u root -p mymusic < backup.sql
```
## 📚 Дополнительная документация
- **MY_ARCHITECTURE.md** - детальная архитектура системы
- **MY_PROTOCOL.md** - спецификация протокола
- **MY_NODE_SPEC.md** - технические характеристики нод
- **MY_MONITORING.md** - руководство по мониторингу
## 🤝 Вклад в проект
### Структура проекта:
```
my-uploader-bot/
├── app/
│ ├── core/
│ │ └── my_network/ # MY Network компоненты
│ │ ├── node_service.py
│ │ ├── peer_manager.py
│ │ ├── sync_manager.py
│ │ └── bootstrap_manager.py
│ ├── api/
│ │ └── routes/ # API маршруты
│ │ ├── my_network_routes.py
│ │ └── my_monitoring.py
│ └── templates/ # Web интерфейс
│ └── my_network_monitor.html
├── bootstrap.json # Bootstrap конфигурация
├── start_my_network.py # Быстрый запуск
└── deploy_my_network.sh # Продакшен деплой
```
### Development workflow:
```bash
# 1. Создать ветку для фичи
git checkout -b feature/my-feature
# 2. Разработка с hot reload
python start_my_network.py --debug
# 3. Тестирование
pytest tests/test_my_network.py
# 4. Создать pull request
git push origin feature/my-feature
```
## 📞 Поддержка
Если у вас возникли вопросы или проблемы:
1. Проверьте [Troubleshooting](#-устранение-неисправностей)
2. Посмотрите логи: `tail -f /var/log/my-network/app.log`
3. Проверьте health check: `curl http://localhost:8000/api/my/health`
4. Создайте issue с подробным описанием проблемы
---
**MY Network v2.0** - Distributed Content Protocol
*Decentralized content distribution made simple*