37 Commits

Author SHA1 Message Date
sailor 7c2e6b6ecc add docs and config in container, refactor dockerfile and pipline
Docker Build and Push / need-build (push) Successful in 3s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Successful in 17s
Docker Build and Push / deploy (push) Has been skipped
Reviewed-on: #16
2026-07-11 17:58:19 +03:00
trustdev_admin f8a3fc4cd3 add docs and config in container, refactor dockerfile and pipline 2026-07-11 17:57:58 +03:00
sailor 9b5aec1c96 Merge pull request 'fix job more' (#11) from builder-local into main
Docker Build and Push / need-build (push) Successful in 3s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Has been skipped
Docker Build and Push / deploy (push) Successful in 18s
Reviewed-on: #11
2026-07-10 22:33:48 +03:00
trustdev_admin 8eae5f1a10 fix job more 2026-07-10 22:33:35 +03:00
sailor 1cfe24037c fix deploy again
Docker Build and Push / need-build (push) Successful in 3s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Has been skipped
Docker Build and Push / deploy (push) Has been skipped
Reviewed-on: #10
2026-07-10 22:28:10 +03:00
trustdev_admin 8c8ea75d69 fix deploy again 2026-07-10 22:27:53 +03:00
sailor 958dcab3fa Merge pull request 'test deploy' (#9) from builder-local into main
Docker Build and Push / need-build (push) Successful in 3s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Has been skipped
Docker Build and Push / deploy (push) Has been skipped
Reviewed-on: #9
2026-07-10 22:23:13 +03:00
trustdev_admin 797ad67b90 test deploy 2026-07-10 22:22:53 +03:00
sailor 5f2ba688e9 fix need deploy
Docker Build and Push / need-build (push) Successful in 3s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Has been skipped
Docker Build and Push / deploy (push) Has been skipped
Reviewed-on: #8
2026-07-10 22:18:36 +03:00
trustdev_admin 9dcf1f829b fix need deploy 2026-07-10 22:18:19 +03:00
sailor 5d64ae8732 ci and schemas
Docker Build and Push / need-build (push) Successful in 4s
Docker Build and Push / need-deploy (push) Successful in 3s
Docker Build and Push / build (push) Successful in 13s
Docker Build and Push / deploy (push) Has been skipped
Reviewed-on: #7
2026-07-10 22:17:01 +03:00
trustdev_admin 2b2daa5117 add sudo 2026-07-10 22:12:19 +03:00
trustdev_admin cf1b161794 add plantuml schemas 2026-07-10 22:10:23 +03:00
trustdev_admin baf27b42bb add ci checker from need build and deploy 2026-07-10 22:10:06 +03:00
trustdev_admin 6627a62853 add ci depoy satge 2026-07-10 21:47:25 +03:00
sailor 348a9bbe73 add compose and add ci filter
Docker Build and Push / check-changes (push) Successful in 16s
Docker Build and Push / build (push) Has been skipped
Reviewed-on: #6
2026-07-10 12:44:50 +03:00
trustdev_admin 20a1c062e3 ci 2026-07-10 12:43:43 +03:00
trustdev_admin 7bef51f350 add compose and add ci filter 2026-07-10 12:42:00 +03:00
sailor a912d08482 Merge pull request 'add compose and fix dockerfile' (#5) from builder-local into main
Docker Build and Push / build (push) Successful in 18s
Reviewed-on: #5
2026-07-09 20:33:59 +03:00
trustdev_admin 4255c00ba0 add compose and fix dockerfile 2026-07-09 20:33:26 +03:00
sailor 3d8de18123 Merge pull request 'refactor ci' (#4) from builder-local into main
Docker Build and Push / build (push) Successful in 14s
Reviewed-on: #4
2026-07-09 20:21:13 +03:00
trustdev_admin 26203c617d refactor ci 2026-07-09 20:20:25 +03:00
sailor 5daef4f2d5 Merge pull request 'add local registry' (#3) from builder-local into main
Docker Build and Push / build (push) Successful in 1m37s
Reviewed-on: #3
2026-07-09 14:45:51 +03:00
trustdev_admin 49a5c19f6c add local registry 2026-07-09 14:45:32 +03:00
sailor 6668f65528 fix registru from build
Docker Build and Push / build (push) Failing after 8m13s
Reviewed-on: #2
2026-07-09 14:24:47 +03:00
trustdev_admin 4e205e0eae fix registru from build 2026-07-09 14:24:08 +03:00
sailor ebd04134bf new ci
Docker Build and Push / build (push) Failing after 9m34s
Reviewed-on: #1
2026-07-09 13:58:58 +03:00
trustdev_admin 89815ffe55 new ci 2026-07-09 13:44:56 +03:00
trustdev_admin 011287ba4f push
ci / deploy (push) Successful in 2m38s
2026-07-09 13:14:44 +03:00
trustdev_admin ef784f00d8 Merge pull request #5 from SailorUpiter/refactor
add composes and docker registry
2026-07-09 10:18:29 +03:00
trustdev_admin 37e0a4c2c2 add composes and docker registry 2026-07-09 08:28:51 +03:00
trustdev_admin 9863bfdf7d Merge pull request #4 from SailorUpiter/refactor
remove trash
2026-07-08 17:58:41 +03:00
trustdev_admin 3c53e9a159 remove trash 2026-07-08 17:53:45 +03:00
trustdev_admin 3806c5c2cc Merge pull request #3 from SailorUpiter/refactor
Refactor
2026-05-21 07:23:38 +03:00
trustdev_admin 28d97db7fc gitea runners and mini refactor 2026-05-20 07:54:37 +03:00
trustdev_admin 54a0fbfb8c add new files and refactor 2026-05-19 22:54:33 +03:00
trustdev_admin 32c4d7b23c add copy button 2026-05-13 07:44:14 +03:00
69 changed files with 642 additions and 488 deletions
+89
View File
@@ -0,0 +1,89 @@
name: Docker Build and Push # Имя CI джобы
on: # Выполняется если производится push в ветку main
push:
branches: [ main ]
env: # Переменные окружения
REGISTRY: gitea.trastinfo.ru
IMAGE_NAME: sailor/mkdocs
PLATFORMS: linux/amd64,linux/arm64
jobs: # Список выполняемых джоб
need-build: # джоба проверки изменений в зависимостях. Если requirements.txt был изменен, то будет выполнена сборка и пуш образа
runs-on: ubuntu-latest
outputs:
src_changed: ${{ steps.need-build.outputs.src }}
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: need-build
with:
filters: |
src:
- 'requirements.txt'
- 'dockerfile'
need-deploy: # джоба проверки изменений в файлах. При изменении пулит новые файлы и перезапускает контейнер
runs-on: ubuntu-latest
outputs:
src_changed: ${{ steps.need-deploy.outputs.src }}
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: need-deploy
with:
filters: |
src:
- 'docs/*'
- 'mkdocs.yml'
build: # джоба сборки и пуша образа. Выполняется если проверка изменений показала что requirements.txt был изменен
needs: need-build
if: needs.need-build.outputs.src_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Login to Gitea Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Checkout code
uses: actions/checkout@v4
with:
ref: main
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push multi-arch image
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy:
runs-on: ubuntu-latest
needs: need-deploy
if: needs.need-deploy.outputs.src_changed == 'true'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Deploy over SSH
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.KEY }}
script: |
sudo docker run -p 8000:8000 gitea.trastinfo.ru/sailor/mkdocs:latest
-29
View File
@@ -1,29 +0,0 @@
name: ci
on:
push:
branches:
- master
- main
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: pip install -r requirements.txt
- run: mkdocs gh-deploy --force
+1
View File
@@ -1,2 +1,3 @@
.venv .venv
docs/copypaste docs/copypaste
docs/Заметки/vault/root-token.md
+6
View File
@@ -0,0 +1,6 @@
services:
mkdocks:
image: gitea.trastinfo.ru/sailor/mkdocs:latest
restart: always
ports:
- "8000:8000"
+20
View File
@@ -0,0 +1,20 @@
FROM gitea.trastinfo.ru/sailor/pyhton:0.1
WORKDIR /home/ubadmin/mkdocks
COPY ./requirements.txt .
RUN apk add --update --no-cache --virtual .build-deps gcc musl-dev &&\
apk add --no-cache git ca-certificates curl &&\
pip install --no-cache-dir --requirement ./requirements.txt &&\
apk del .build-deps &&\
rm ./requirements.txt
WORKDIR /mkdocs
COPY mkdocs.yml /mkdocs/mkdocs.yml
COPY docs/* /mkdocs/docs/
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
+2
View File
@@ -0,0 +1,2 @@
Стартовая страница
1
+24
View File
@@ -0,0 +1,24 @@
services:
dashy:
# The image to pull + version. Can use `ghcr.io/lissy93/dashy` instead
image: lissy93/dashy:latest
# Optional container name
container_name: dashy
# Port to serve on (keep container port (second one) as 8080)
ports:
- 8080:8080
# Mount a directory containing your conf.yml and any other assets
volumes:
- ./user-data:/app/user-data
# Add any env vars for server here, if needed
environment:
- NODE_ENV=production
# Auto-start the container on boot
restart: unless-stopped
# Healthcheck to determine when container healthy
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck.js']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 30s
+41
View File
@@ -0,0 +1,41 @@
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.26.4
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: docker.io/library/mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
+40
View File
@@ -0,0 +1,40 @@
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.26.4
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: docker.io/library/postgres:14
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- ./postgres:/var/lib/postgresql/data
+9
View File
@@ -0,0 +1,9 @@
services:
mkdocks:
image: gitea.trastinfo.ru/sailor/mkdocs:latest
restart: always
volumes:
- ./mkdocs.yml:/mkdocs/mkdocs.yml
- ./docs:/mkdocs/docs
ports:
- "8000:8000"
+10
View File
@@ -0,0 +1,10 @@
services:
nexterm:
image: germannewsmaker/nexterm:latest
container_name: nexterm
network_mode: host
restart: always
environment:
- ENCRYPTION_KEY=02bdb65a028c37b2628c3727f3821530a629c40c25843b5268ceeb79a2c4033e
volumes:
- ./nexterm-data:/app/data
-17
View File
@@ -1,17 +0,0 @@
# Welcome to MkDocs
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
## Commands
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs -h` - Print help message and exit.
## Project layout
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.
-33
View File
@@ -1,33 +0,0 @@
# Проект по построению инфраструктуры для хостинга платформ мониторинга
## Задачи
### Железо
- Расположение серверов
- Охлаждение
- Прокладка кабелей
- Питание
- Запас мощности
### ОС
- Установка ОС
- Базовая настройка доступов
- Управление и оркестрация
### Сеть
- Прокладка
- Настройка оборудования
- Настройка магистралей
### Документирование
- Учета железа
- Учет ОС и конфигураций
- Карты сети
- Физическая схема
- L3 схема
- Схема подключений
- Vlan схема
- Таблица адресации
- Overcloud
### Мониторинг
- Доступность
- Оповещения
- Учет потребления ресурсов
+27
View File
@@ -0,0 +1,27 @@
@startuml
!theme bluegray
title Схема доступа к Vm через Proxy
node "Proxy" as proxy
node "Master-1" as m1
node "Master-2" as m2
node "Master-3" as m3
node "Worker-1" as w1
node "Worker-2" as w2
node "Worker-3" as w3
node "Docker" as d1
proxy -down-> m1
proxy -down-> m2
proxy -down-> m3
proxy -down-> w1
proxy -down-> w2
proxy -down-> w3
proxy -down-> d1
@enduml
+38
View File
@@ -0,0 +1,38 @@
@startuml
!theme bluegray
title Схема Кластера Кубера
node "Proxy" as proxy
node "Мастер-ноды" {
[Master-1]
[Master-2]
[Master-3]
}
node "Воркер-ноды" {
[Worker-1]
[Worker-2]
[Worker-3]
}
proxy --> [Master-1]
proxy --> [Master-2]
proxy --> [Master-3]
[Master-1] --> [Worker-1]
[Master-1] --> [Worker-2]
[Master-1] --> [Worker-3]
[Master-2] --> [Worker-1]
[Master-2] --> [Worker-2]
[Master-2] --> [Worker-3]
[Master-3] --> [Worker-1]
[Master-3] --> [Worker-2]
[Master-3] --> [Worker-3]
@enduml
-2
View File
@@ -1,2 +0,0 @@
#Homelab
Для своей лабы нужен сервак, и внешний адрес через который я смогу подключать внешние сервисы.
-8
View File
@@ -1,8 +0,0 @@
#openstack
Заметки по поводу запуска Openstack
Для запуска использовать 2U Oracle и харды для Ceph
Пересобрать рейды. Установить контроллер в режим JBOD или вообще убрать его и подключить бекплейн к материнке.
Подключить сетевые карты на 10Гб\с к серверам
Накатываем 22 убунту на все сервера.
Для подключения используем 10 Гбс на Цеф и 1 гбс на остальное. Так же можно прокинуть внешний ip для тестов облака.
Ставим коллу и деплоим
+18
View File
@@ -0,0 +1,18 @@
---
pageInfo:
title: Home Lab
sections: # An array of sections
- name: Github
items: # An array of items
- title: GitHub
description: Source code and documentation on GitHub
icon: fab fa-github
url: https://github.com/SailorUpiter/mkdocs
- name: Services
items:
- title: DNS
icon: favicon
url: http://192.168.1.2/
- title: Gitea
icon: https://icon-icons.com/ru/icon/gitea/146173
url: http://192.168.130.3:3000/
@@ -0,0 +1,2 @@
# Заметки по докеру
1) Для того что бы compose перечитал файл конфигурации нужно сделать стоп, а потом старт. Рестар не перечитывает конфигурацию
@@ -0,0 +1,29 @@
# Альтернативный registry
Есть 2 ситуации когда нужен альтернативный реджистри докера:
1) требуется качать свое приложение из своего регистри
2) Докерхаб не доступен\ограничено кол-во скачиваний\санкции
Для решение этих проблем мы можем в конфиг файле докера указать альтернативный регистри. Данная инструкция для обычной установки докера. Если докер рутлесс, то команды будут иными
- Открываем или создаем, если нет, файл по пути
```
nano /etc/docker/daemon.json
```
- Редактируем или вставляем в свежий файл конфиг. В данном случае используется зеркало таймвеба. Ниже будет список альтернативныйх зеркал
```
{
"registry-mirrors" : [ "https://dockerhub.timeweb.cloud" ]
}
```
- Перезапускаем демон докера
```
systemctl reload docker
```
# Список альтернативных зеркал
Адрес реестра Компания-владелец
https://mirror.gcr.io Google
https://public.ecr.aws Amazon
https://dockerhub.timeweb.cloud Timeweb Cloud
https://dh-mirror.gitverse.ru GitVerse (СберБанк)
https://dockerhub1.beget.com Beget
https://quay.io Red Hat
https://registry.access.redhat.com Red Hat
https://registry.redhat.io Red Hat
+6 -6
View File
@@ -78,20 +78,20 @@ git --version
``` ```
adduser \ adduser \
--system \ --system \
--shell /bin/bash \ --shell /bin/false \
--gecos 'Git Version Control' \ --gecos 'Git Version Control' \
--group \ --group \
--disabled-password \ --disabled-password \
--home /home/git \ --home /home/git \
git gitea
``` ```
1) Создадим необходимые для работы директории и выдадим созданному юзеру права на них. Права 770 на директорию /etc/gitea выдаются только для первоначальной настройки. 1) Создадим необходимые для работы директории и выдадим созданному юзеру права на них. Права 770 на директорию /etc/gitea выдаются только для первоначальной настройки.
``` ```
mkdir -p /var/lib/gitea/{custom,data,log} mkdir -p /mnt/data/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/ chown -R gitea:gitea /mnt/data/gitea/
chmod -R 750 /var/lib/gitea/ chmod -R 750 /mnt/data/gitea/
mkdir /etc/gitea mkdir /etc/gitea
chown root:git /etc/gitea chown root:gitea /etc/gitea
chmod 770 /etc/gitea chmod 770 /etc/gitea
``` ```
1) Создадим системный юнит для запуска gitea как сервиса systemd. Создадим файл юнита по пути /etc/systemd/system/gitea.service 1) Создадим системный юнит для запуска gitea как сервиса systemd. Создадим файл юнита по пути /etc/systemd/system/gitea.service
+24
View File
@@ -0,0 +1,24 @@
# Registry and local push
Gitea позволяет хранить свои образы контейнеров. Это позволяет не прибегать к dockerhub и не ставить еще и отдельную хранилку образов. Эта функция включена по умолчанию в новых версиях.
Для того что бы запушить образ требуется авторизоваться в регистри. Для этого нам требуется сгенерить токен доступа для регистри.
Что бы сгенерить токен переходим в настройки нашей Учетки (не репозитория) https://gitea.trastinfo.ru/user/settings/applications
Далее нажимаем создать новый токен. Пишем имя токена и выбираем доступа для токена. Для пайплайна нам требуется доступ к чтению repository и чтение\запись к package (Это как раз и есть registry)
Логинимся в gita
```
docker login gitea.trastinfo.ru --username sailor --password 5968ad45678afc6dc2f41b2ff389ca10fc982170
```
gitea.trastinfo.ru - Наша gitea
--username sailor - Юзер под которым логинемся
--password 5968ad45678afc6dc2f41b2ff389ca10fc982170 вместо пароля ставим токен, который мы сгенерили
Собираем образ. Есть две особенности на которые надо обратить внимание:
- Именование образов
- слеш (/) при указании тега
Именование образов имеет формат {registry}/{owner}/{image}:{tag}
```
docker build -t gitea.trastinfo.ru/sailor/sailor-doc:0.01 -f dockerfile
```
После билда пушим образ
```
docker push gitea.trastinfo.ru/sailor/sailor-doc:0.01
```
@@ -0,0 +1,30 @@
log:
level: info
runner:
file: .runner
capacity: 1
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels: ["ubuntu-latest:docker://gitea/runner-images:ubuntu-latest", "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04"]
cache:
enabled: true
dir: ""
host: "192.168.1.3"
port: 8088
external_server: ""
container:
network: ""
privileged: false
options:
workdir_parent:
valid_volumes: []
docker_host: ""
force_pull: false
host:
workdir_parent:
@@ -0,0 +1,15 @@
services:
runner-1:
image: gitea/act_runner:nightly
restart: always
environment:
- CONFIG_FILE=/config.yaml
- GITEA_INSTANCE_URL=http://192.168.1.3:3000/
- GITEA_RUNNER_REGISTRATION_TOKEN=token
volumes:
- ./runner1/config.yaml:/config.yaml
- ./runner1/data:/data
- ./runner1/cache:/root/.cache
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "8088:8088"
@@ -0,0 +1,41 @@
# Gitea Runner
# Включение Actions
Для установки и добавления раннера нужны включенные действия. Если они не включены по умолчанию, то включаем их в конфиге самой gitea
```
nano /etc/gitea/app.ini
[actions] ENABLED=true
```
# Где взять токен
Нужно зайти в репозиторий -> Настройки -> Действия -> Раннеры -> Создать новый раннер
## Установка docker
Раннер запускается в контейнере и запускает задачи тоже в контейнере, так что нам нужен докер.
```
curl -fsSL https://get.docker.com | sh -
```
В нужно папке создадим папку для раннеров и перейдем в нее. Если нужнго будет запускать несколько раннеров, то мы просто создадим папку со следующим номером.
```
mkdir -p gitea_runners/runner1
mkdir runner-1 && cd runner-1
```
Создадим конфиг ранера. Описание всех настроке конфига в оф документации https://gitea.com/gitea/runner/src/branch/main/internal/pkg/config/config.example.yaml
```
nano config.yaml
```
Вернемся в общую для ранеров директорию и создадим там compose файл для запуска. В этом файле мы можем описывать сразу все раннеры
```
cd ..
nano docker-compose.yaml
```
После всех настроек запускаем и ждем лога о том, что раннер зарегистрирован
```
docker compose up -d
docker logs gitea_runners-runner-1-1 -f
```
## Тест
Для теста создадим в репозитории директорию и конфиг для работы с раннером
```
mkdir -p ./.gitea/workflow/test.yaml
```
Далее запушим любое изменение и посмотрим в репозитории во вкладе действия выполнение. Первое выполнение может быть долгим, так как раннер скачивает контейнер для запуска кода.
@@ -0,0 +1,17 @@
name: Test Workflow
on:
push:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Print environment variables
run: |
echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
echo "GITHUB_SHA: $GITHUB_SHA"
echo "GITHUB_REF: $GITHUB_REF"
echo "GITHUB_ACTOR: $GITHUB_ACTOR"
echo "PATH: $PATH"
+3
View File
@@ -0,0 +1,3 @@
# Заметки по синтаксису Markdown
## Зачеркнуть
Что бы сделать зачеркнутый текст поместите его в ~~ТЕКСТ~~
+42
View File
@@ -0,0 +1,42 @@
# NPM
Краткая инструкция как поднять и настроить NPM
Ссылки
Гайд с оф сайта https://nginxproxymanager.com/guide/
Гитхаб https://github.com/NginxProxyManager/nginx-proxy-manager
Для начала заходим на сервак и ставим докер.
```
curl https://get.docker.com | sh -
```
Далее создаем директорию под NPM. Директорию лучше не называть npm, что бы не путать с пакетным менджером
```
mkdir proxy && cd proxy
```
Создаем compose.yaml
```
nano compose.yaml
```
И записываем туда конфиг для композа
```
services:
app:
image: 'jc21/nginx-proxy-manager:2.15.1' #Можно посмотреть севужую версию на https://github.com/NginxProxyManager/nginx-proxy-manager
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
ports:
- '80:80'
- '81:81' #Порт веб панели администратора, лучше поменять на свой
- '443:443'
volumes: #Директории для сертов и данных, создадутся в рабочем каталоге
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
```
Разрешаем трафик по этим портам
```
sudo iptables -A INPUT -p tcp -i eth0 --dport 80,443,81 -j ACCEPT
```
Поднимаем контейнер композом
```
docker compose up -d
```
Заходим в вебку админа по ip-server:81 и настраиваем учетку и тд.
+11
View File
@@ -0,0 +1,11 @@
storage "file" { # Указываем что храним секреты в файле, а не БД
path = "/mnt/vault/data" # Путь до файла с данным
}
listener "tcp" { # Указываем какой сервер слушаем
address = "0.0.0.0:8200"
# tls_cert_file = "/etc/vault/vault-cert.pem"
# tls_key_file = "/etc/vault/vault-key.pem"
tls_disable = 1 # Отключение https://
}
ui = true # Включить UI
disable_mlock = true
+37
View File
@@ -0,0 +1,37 @@
# Инструкция по установке Vault
Система ubuntu 22.04
Vault 2.0.0
## Скачивание
Компания Hashicorp запретила скачивать свои продукты из России. Пользуемся ВПН или скачиваем с зеркала яндекса
```
VAULT_VERSION="2.0.0"
wget https://hashicorp-releases.yandexcloud.net/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip
```
## Установка
Установим архиватор, что бы распаковать бинарник
```
sudo apt-get install -y unzip
```
Распакуем и перенесем бинарник в папку с бинарниками
```
unzip vault_${VAULT_VERSION}_linux_amd64.zip
sudo mv vault /usr/local/bin/
```
Проверим что работает
```
vault --version
```
Далее нужно создать системного юзера и директории для конфигов и данных
```
adduser \
--system \
--shell /bin/false \
--gecos 'Vault user' \
--group \
--disabled-password \
--no-create-home \
vault
```
```
sudo nano /etc/vault/vault.hcl
```
+29
View File
@@ -0,0 +1,29 @@
[Unit]
Description="HashiCorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/vault/config.hcl
[Service]
User=vault
Group=vault
ProtectSystem=full
ProtectHome=read-only
PrivateTmp=yes
PrivateDevices=yes
SecureBits=keep-caps
AmbientCapabilities=CAP_IPC_LOCK
NoNewPrivileges=yes
ExecStart=/usr/local/bin/vault server -config=/etc/vault/config.hcl
ExecReload=/bin/kill --signal HUP
KillMode=process
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
TimeoutStopSec=30
StartLimitBurst=3
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
@@ -0,0 +1 @@
Для того что бы использовать vault
@@ -1,10 +0,0 @@
Данная нейросеть развернута локально на машине ООО Трастинфо.
Нейросеть помнит контекст во время диалога
Она не понимает местонахождение меня.
Старается дать развернутый ответ.
При большом объеме информации заметны фризы и подвисания
На задачи математических вычислений она начинает выводить код python и отвечает на английском языке при вопросе на русском, но вычисление сделаны верно. Проверено на очень простом уравнении
После решения уравнения нейросеть в чате начала отображать выполнение кода и повторять ответ на английском языке на старый вопрос пока не скажешь прекратить
Пишет простые функции на питоне и может их выполнить
Воспринимает ли текст с ошибками?
Текст с ошибками воспринимает плохо, но воспринимает и осознает контекст сообщения
@@ -1,6 +1,6 @@
#notes #comand #linux #docker #notes #comand #linux #docker
``` ```
curl -fsSL https://get.docker.com | sh - curl https://get.docker.com | sh -
``` ```
@@ -1,2 +0,0 @@
#cloud-init #notes #automation #мысли
Подумать что мы можем делать с клауд инитом
-2
View File
@@ -1,2 +0,0 @@
#docker #notes #мысли
Для автоматизации установки докера на хост скопировать скрипт установки с сайта докера, залить в локальную репу и разливать его с ансибл хоста, после клауд инита.
@@ -1,3 +0,0 @@
#мысли
Определить бы какие сервера будут стетлесс а как стейтфулл
Тогда можно будет раскидать инфру, на плейбуки и создать репы для бекапов
@@ -1,16 +0,0 @@
#automation #notes #мысли
План настройки автоматизации при деплое сервисов.
Инструменты для использования OpenTofu + Ansible
Что мы настраиваем терраформом
1. Параметры ВМ (CPU, Ram, disk, ip, dns)
2. Креды (логин, пароль, ssh)
3. Первичная настройка (hostname, iptables?, fail2ban, ssh, time)
4. Docker?
В принципе делаем копию официальной репы софта?
Вид к которому я пришел
- Деплоим вм на хост через тераформ
- При деплое выполняются первичные настройки
- Передаем параметры в инвентарь ансибла
- Ансибл запускает плейбуки для настройки
- В настройку входят: система, мониторинг, бекап файлов.
-
@@ -1,15 +0,0 @@
#notes #backup #мысли
Примерные мысли такие. Для рекавери нам нужна вм, дата и конфиги.
Как сервер бекапов используем urbackup. С его помощью мы бекапим файлы из ВМок которые мы можем быстро востановить в случае чего, что бы уменьшить оверхед бекапа. На каждую ВМ создаем рекавери план. В основном мы имеем 3 вида файлов:
1) БД
2) Статика
3) Конфиги
На каждую ВМ делаем свою репу с бекапами. Хотелось бы все делать рестиком быстро и просто с дедупом, но сложно в управлении и не совмещаем образы ВМ и файлы. Можно написать автоматизацию для хапер ви через снапшоты, но очень много подводных. Это прям надо целый инструмент писать.
Для урбекапа надо проверить ограничения по скорости и мультипоток.
Настроить репы для файлов. Так же настроить репы для хранения тофу файлов.
Подумать над автоматической раскаткой приложения. Очень много автоматизации, долго писать тяжело поддерживать.
Примерная блок схема
Разверстка ВМ --> Добавление провижинига в репозиторий --> Определение директорий и файлов для бекапа --> Организация бекап-репы -- > Автоматизация бекапа
Схема говно надо переделать.
Добавить интеграцию бекапов в автоматизацию.
Надо сделать регистри контейнеров для наших систем.
@@ -1,5 +0,0 @@
#мысли
Маркировка осуществляется для:
* Сетевых кабелей (медных и оптических)
* Кабелей питания
@@ -1,15 +0,0 @@
#notes #мысли
Что требуется для онбординга новичка в команде?
Какая документация нужна для онбординга?
Попробуем сформировать базовую подготовку
Задачи на онбординг:
1) Знакомство с командой. Оформление пропусков (задача начальства)
2) Ознакомление с документами по ТБ, ОТ и остальными
3) Заведение учетных записей.
4) Первичный инструктаж
5) Острова обучения
6) Сдача предварительного среза знаний
7) Сдача экзамена.
* [ ] Составить список учетных записей которые нужно дать сотруднику.
* [ ] Определить входящую в инструктаж информацию
* [ ] Сформировать острова обучения
@@ -1,2 +0,0 @@
#мысли #notes
Нетбокс будет являться эталонным хостом для систем. НА основе его сделаем документацию и отработаем алгоритм развертывания. Так же эталонными хостами будут сервисные хосты (мониторинг, логи, бекап.)
@@ -1,12 +0,0 @@
Здравствуйте. Для организации высокопроизводительного хранилища базы данных мониторинга электропотребления PDU требуется закупить SSD диски и SFP модули. Высокопроизводительное хранилище требуется так как текущее хранилище не справляется с возросшей нагрузкой, что в дальнейшем может привести к потере данных.
Для организации отказоустойчивости требуется что бы каждый сервер в количестве 8 штук был оснащен SSD дисками. Минимальное количество дисков 2-шт на сервер.
Таким образом требуется 16 дисков  SSD Samsung PM1643a <MZILT1T9HBJR> или аналогичных.
Для организации высокоскоростного подключения к хранилищу базы данных системы мониторинга PDU требуется SFP модули.  Для обеспечения отказоустойчивости, совместимости  и взаимозаменяемости серверов требуется закупить:
24 модуля SFP ASF-10G-T 10Gteck или аналогичные
16 модулей SFP Lenovo AFBR-709SMZ-ib8, ARISTA XVR-00001-02, Huawei LTF8501-BC+ 02310MNW или аналогичных
@@ -1,4 +0,0 @@
Надо портов 15 + 2 аплинка
Адресов надо штук 50-100
Стойка 2.5 метра. Между стойками 3 метра. лоток пол метра с каждой стойки.
Итого 2.5 +1 +3 = 6.5 метров
@@ -1,25 +0,0 @@
Идея такая - сделать скрипт который будет создавать рейд, потом запускать тесты и записывать результаты в файл. После рейд удаляется и создается с другим страйпом. После всех тестов создается рейд с включенным кешем. и аналогично запускаются тесты
Тестирование будет осуществляться в два этапа без кеша и с кешем. Для каждого страйпа будет проверятся нагрузка в (1,4) потока, блоками (4,8,64,4096) К, с глубиной очереди (1,8,32,64,128).
Размер файла неизвестен. Тестирование настроено на время. Время тестирование 10 сек каждый конфиг.
Элементы программы:
Статические данные:
- Список страйпов для рейд контроллера, список потоков, список очереди, размер блока. +
Функции ОС:
- Функция создания рейда +
- Функция создания ФС +
- Функция монтирования +
- Функция отмонтирования +
- Функция удаления ФС +
- Функция удаления рейда +
- Функция включения кеша
Тестирование:
- Функция генерации конфиг файлов +
- Функция перебора конфигов
- Функция тестирования и записи в файл результатов
- Парсинг файлов и вывод только нужных данных в таблицу
Реализация на питоне. Запускаем большой цикл с вложенным циклом.
Выполнение выглядит так:
Генерим конфиги -> Начали цикл создаем RAID 0 из 1-ого диска со страйпом 8 -> создаем ФС -> Монтируем ФС -> Начало цикла тестирования -> Начало цикла парсинга -> Завршение парсинга - > Завершение цикла тестирования -> Отмонтируем диск -> Удаляем ФС -> Удаляем рейд 0 со страйпом 8 -> Завершаем Цикл тестирования.
@@ -1,11 +0,0 @@
Что требуется для сдачи юнита стойки в аренду
1) Стойка 1U + розетка
2) Питание + резерв -> проблема управления питанием и мониторинга его потребления (Сколько максимальный объем питания на 1 БП? На 1 сервер?)
3) Охлаждение
4) IP Адреса -> Проблема подключения и портов (сколько ip адресов? Сколько портов подключения? Какой гарантированный канал? Порт IPMI дается ли? какой у него канал? )
5) Контроль доступа ?
6) Суммарный трафик?
7) Топология сети?
8) Автоматизация?
9) Биллинг?
@@ -1,5 +0,0 @@
#мысли
Ну какую то сверх очевидную базу я знаю.
Темы которые следует поизучать подробнее это ВПН, маршрутизация, БГП
БГП вообще 10 раз читал ниче не понял
С впном пока надо повременить и отрисовать архитектуру
@@ -1,81 +0,0 @@
#note #network #sfp
У нас все оборудование цисковсвкое. Кароточки тоже хуй пойми какие.
Посчитаем сколько всего надо:
6 серверов RJ45 (2 порта) 24
2 сервера SFP+ (2 порта) 8
1 СХД SFP+ (4 порта) 8
Подключение идет с 2-х сторон
Итого:
24 RJ4 Пример ASF-10G-T 10Gteck
16 SFP+
Пересчет
6 серверов RJ45 по 2 порта = 12 штук
5 серверов SFP+ по 2 порта =20 штук
1 схд 4 портов rj45 = 4 штуки (4 было в комплекте они уже есть)
Запас? 4 RJ45
Итого
16 RJ45
24 SFP+
Чисто теоретически заведутся все СФП. Практически а хуй его знает.
Точно рабочие
ASF-10G-T 10Gteck
Lenovo AFBR-709SMZ-ib8
ARISTA XVR-00001-02
Huawei LTF8501-BC+ 02310MNW
Текст письма
Здравствуйте. Для организации высокоскоростного подключения к хранилищу базы данных системы мониторинга PDU требуется SFP модули. Для обеспечения отказоустойчивости и совместимости серверов требуется закупить:
24 модуля SFP ASF-10G-T 10Gteck или аналогичные
16 модулей SFP Lenovo AFBR-709SMZ-ib8, ARISTA XVR-00001-02, Huawei LTF8501-BC+ 02310MNW или аналогичных
Отчет о своместимости SFP
HPE 10GB SR SFP+ 455885-001
SN 7CR909N16K
Ядро сети Работает
HP NIC Работает
Eonstore DS1012 Работает
Lenovo AFBR-709SMZ-ib8
pn\sn 46c3448   Y050UC0C6FD0
 (Хпшеная в ленову работает)
Ядро сети (Работает)
from core    to  HP DL360G9 SFP+ card  Работает
Eonstore DS1012 Работает
HP NIC (работает)
ARISTA XVR-00001-02
Sn XAP1114T3654
Ленова в аристу работает
Ариста в Хп работает
Ядро сети (Работает)
HP NIC (работает)
Eonstore DS1012 Работает
Huawei LTF8501-BC+ 02310MNW
Sn J265A000290
Ядро сети (Работает)
Хуавей в аристу работает
Хуавей в ленову +
Хуавей в ХП +
HP NIC (работает)
Eonstore DS1012 Работает
Оптические трансиверы
СХД 8 Шт
Сервера HP 8 Шт
Сервера оракл 12 Шт
Rj45 трансиверы 16 ШТ
Карточки куда идет
деллы BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
ХП rj54 Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
SFP+ карточки HP NC550SFP Dual Port 10Gbe Server adapter
Лезвие ядра сети Cisco C6800-32P10G
@@ -1,144 +0,0 @@
конфиг
[fiotest]
rw=write
name=fiotest
blocksize=8k
filename=/mnt/pve/test/write
size=1g
ioengine=libaio
iodepth=128
numjobs=1
runtime=60
direct=1
Результат
fiotest: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.28
Starting 1 process
fiotest: Laying out IO file (1 file / 1024MiB)
^Cbs: 1 (f=1): [W(1)][33.3%][w=1001KiB/s][w=250 IOPS][eta 00m:40s]
fio: terminating on signal 2
fiotest: (groupid=0, jobs=1): err= 0: pid=2515: Sat May 3 00:11:44 2025
write: IOPS=306, BW=1227KiB/s (1257kB/s)(24.2MiB/20224msec); 0 zone resets
slat (nsec): min=9129, max=61388, avg=11072.73, stdev=2469.71
clat (usec): min=1575, max=237505, avg=3247.15, stdev=5187.99
lat (usec): min=1585, max=237546, avg=3258.36, stdev=5188.33
clat percentiles (usec):
| 1.00th=[ 1745], 5.00th=[ 1909], 10.00th=[ 2008], 20.00th=[ 2180],
| 30.00th=[ 2311], 40.00th=[ 2442], 50.00th=[ 2573], 60.00th=[ 2737],
| 70.00th=[ 2966], 80.00th=[ 3294], 90.00th=[ 4228], 95.00th=[ 5866],
| 99.00th=[ 11994], 99.50th=[ 16319], 99.90th=[ 90702], 99.95th=[103285],
| 99.99th=[238027]
bw ( KiB/s): min= 672, max= 1888, per=99.49%, avg=1221.60, stdev=244.70, samples=40
iops : min= 168, max= 472, avg=305.40, stdev=61.18, samples=40
lat (msec) : 2=9.88%, 4=78.65%, 10=9.69%, 20=1.50%, 50=0.10%
lat (msec) : 100=0.11%, 250=0.08%
cpu : usr=0.17%, sys=0.29%, ctx=6206, majf=0, minf=12
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,6205,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=1227KiB/s (1257kB/s), 1227KiB/s-1227KiB/s (1257kB/s-1257kB/s), io=24.2MiB (25.4MB), run=20224-20224msec
Disk stats (read/write):
dm-0: ios=54/8018, merge=0/0, ticks=636/27836, in_queue=28472, util=97.85%, aggrios=54/7434, aggrmerge=0/861, aggrticks=638/24232, aggrin_queue=24906, aggrutil=97.59%
sda: ios=54/7434, merge=0/861, ticks=638/24232, in_queue=24906, util=97.59%
Конфиг
[fiotest]
rw=write
name=fiotest
blocksize=8k
filename=/mnt/pve/test/write
size=1g
ioengine=libaio
iodepth=32
numjobs=1
runtime=60
direct=1
Результат
fiotest: (g=0): rw=write, bs=(R) 8192B-8192B, (W) 8192B-8192B, (T) 8192B-8192B, ioengine=libaio, iodepth=32
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [W(1)][100.0%][w=11.0MiB/s][w=1409 IOPS][eta 00m:00s]
fiotest: (groupid=0, jobs=1): err= 0: pid=3588: Sat May 3 00:16:19 2025
write: IOPS=1530, BW=12.0MiB/s (12.5MB/s)(718MiB/60022msec); 0 zone resets
slat (usec): min=3, max=141739, avg=94.73, stdev=1480.44
clat (msec): min=2, max=262, avg=20.81, stdev=14.28
lat (msec): min=2, max=262, avg=20.91, stdev=14.27
clat percentiles (msec):
| 1.00th=[ 4], 5.00th=[ 8], 10.00th=[ 12], 20.00th=[ 14],
| 30.00th=[ 16], 40.00th=[ 17], 50.00th=[ 18], 60.00th=[ 20],
| 70.00th=[ 23], 80.00th=[ 26], 90.00th=[ 33], 95.00th=[ 40],
| 99.00th=[ 69], 99.50th=[ 95], 99.90th=[ 203], 99.95th=[ 226],
| 99.99th=[ 247]
bw ( KiB/s): min= 5584, max=17216, per=99.85%, avg=12226.15, stdev=2529.45, samples=119
iops : min= 698, max= 2152, avg=1528.27, stdev=316.18, samples=119
lat (msec) : 4=1.24%, 10=6.83%, 20=52.96%, 50=36.68%, 100=1.86%
lat (msec) : 250=0.43%, 500=0.01%
cpu : usr=0.48%, sys=1.47%, ctx=68734, majf=0, minf=10
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
issued rwts: total=0,91862,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=32
Run status group 0 (all jobs):
WRITE: bw=12.0MiB/s (12.5MB/s), 12.0MiB/s-12.0MiB/s (12.5MB/s-12.5MB/s), io=718MiB (753MB), run=60022-60022msec
Disk stats (read/write):
dm-0: ios=126/98119, merge=0/0, ticks=3940/1857428, in_queue=1861368, util=99.31%, aggrios=126/96396, aggrmerge=0/2709, aggrticks=3928/1803591, aggrin_queue=1807713, aggrutil=99.23%
sda: ios=126/96396, merge=0/2709, ticks=3928/1803591, in_queue=1807713, util=99.23%
конфиг
[fiotest]
rw=write
name=fiotest
blocksize=8k
filename=/mnt/pve/test/write
size=1g
ioengine=libaio
iodepth=1
numjobs=1
runtime=60
direct=1
Результат
fiotest: (g=0): rw=write, bs=(R) 8192B-8192B, (W) 8192B-8192B, (T) 8192B-8192B, ioengine=libaio, iodepth=1
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [W(1)][100.0%][w=1632KiB/s][w=204 IOPS][eta 00m:00s]
fiotest: (groupid=0, jobs=1): err= 0: pid=3616: Sat May 3 00:18:47 2025
write: IOPS=282, BW=2258KiB/s (2312kB/s)(132MiB/60002msec); 0 zone resets
slat (usec): min=6, max=42146, avg=91.13, stdev=759.96
clat (usec): min=1609, max=285038, avg=3450.64, stdev=5465.66
lat (usec): min=1617, max=285046, avg=3541.91, stdev=5565.78
clat percentiles (usec):
| 1.00th=[ 1778], 5.00th=[ 1909], 10.00th=[ 2008], 20.00th=[ 2147],
| 30.00th=[ 2278], 40.00th=[ 2409], 50.00th=[ 2573], 60.00th=[ 2802],
| 70.00th=[ 3130], 80.00th=[ 3916], 90.00th=[ 5407], 95.00th=[ 6980],
| 99.00th=[ 11338], 99.50th=[ 16581], 99.90th=[ 83362], 99.95th=[124257],
| 99.99th=[238027]
bw ( KiB/s): min= 656, max= 3552, per=100.00%, avg=2266.08, stdev=760.91, samples=119
iops : min= 82, max= 444, avg=283.26, stdev=95.11, samples=119
lat (msec) : 2=9.96%, 4=70.89%, 10=17.68%, 20=1.12%, 50=0.21%
lat (msec) : 100=0.08%, 250=0.06%, 500=0.01%
cpu : usr=0.12%, sys=0.26%, ctx=17491, majf=0, minf=12
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,16936,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=2258KiB/s (2312kB/s), 2258KiB/s-2258KiB/s (2312kB/s-2312kB/s), io=132MiB (139MB), run=60002-60002msec
Disk stats (read/write):
dm-0: ios=220/23472, merge=0/0, ticks=2652/93376, in_queue=96028, util=97.68%, aggrios=220/21785, aggrmerge=0/2623, aggrticks=2622/79363, aggrin_queue=82138, aggrutil=97.58%
sda: ios=220/21785, merge=0/2623, ticks=2622/79363, in_queue=82138, util=97.58%
@@ -1 +0,0 @@
Замеры производительности дисков DC600M Enterprise. Диски подключены в сервер HP DL360 G9 в рейд контроллер P440ar и собраны в одиночный RAID 0 без включения кеша контроллера.
@@ -1,20 +0,0 @@
#note #storage #disk
Для базы данных нам требуется быстрые диски. Не столько важна пропускная способность сколько IO диска. Так как мы часто выполняем и чтение и запись маленьким блоком.
Обязательное условие это Энтерпрайз диски для ДЦ так как содержат конденсаторы.
Мы можем установить не более 4-х дисков на сервер (sas) и 8-и дисков (sata), так как упремся в пропускную способность интерфейса, а кеши медленные. Можно купить переходник для NVME дисков, но есть подводные на количество линий и возможности бифуркации PCI-e слота. Чисто теоретически можно заказать U.2 HBA модуль для линий 16x на 4 диска и протянуть кабеля до бекплейна, а потом приколхозить их. Тогда мы упираемся в производительность сети. Джае 10ГБ\с канал не покроет мощность NVME дисков
Желаемый диск 2Тб
SSD Samsung PM1643a <MZILT1T9HBJR>
Возможный бомж вариант 2Тб
SSD Samsung PM897 <MZ7L31T9HBNA-00A07>
Альтернативный вендор 2Тб
SSD Intel D3-S4620 <SSDSC2KG019TZ01>
Текст письма
Здравствуйте. В связи с проблемами производительности хранилища для базы данных мониторинга электропотребления PDU, требуется закупить SSD диски
Здравствуйте. Для организации высокопроизводительного хранилища базы данных мониторинга электропотребления PDU требуется закупить SSD диски. Высокопроизводительное хранилище требуется так как текущее хранилище не справляется с возросшей нагрузкой.
Для организации отказоустойчивости требуется что бы каждый сервер в количестве 8 штук был оснащен SSD дисками. Минимальное количество дисков 2-шт на сервер.
Таким образом требуется 16 дисков SSD Samsung PM1643a <MZILT1T9HBJR> или аналогичных.
-1
View File
@@ -1 +0,0 @@
Тест -> Поменять местами жилы на флюке -> F2
-14
View File
@@ -1,14 +0,0 @@
#dock
Маркировка - это нанесение на кабель или устройство отличительного знака, который поможет опознать его.
Маркировка применяется для однотипных вещей например сетевых кабелей или серверов, так как в ЦОДе этого добра навалом. Для инженера требуется уметь читать и наносить маркировку.
Маркировка существует двух видов:
Порты маркируем в соответствии со стандартом ОТКУДА Стойка Юнит Порт - КУДА Стойка Юнит Порт
Для блейд серверов и маршрутизаторов добавляется обозначение B (Bay) оно же лезвие. Номер лезвия указывается на корзине и на маркировке
Порты считаем слева направо сверху вниз если не указаны специальные обозначения
3 5 7
1 2 4 6 8
Если специальные обозначение есть (тип LAN1 или ETH1) то ориентируемся по ним
Порты IPMI (ilo, iDRAC, Irmc) не считаем и указываем их как менеджмент порты отдельно
+27
View File
@@ -0,0 +1,27 @@
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sailor-mkdocs # Имя вашего развертывания
spec:
replicas: 2 # Желаемое количество запущенных экземпляров (подов)
selector:
matchLabels:
app: sailor-mkdocs # Как Deployment будет находить свои поды
template:
metadata:
labels:
app: sailor-mkdocs # Метка, которая будет присвоена подам
spec:
containers:
- name: mkdocs
image: gitea.trastinfo.ru/sailor/mkdocs:5d64ae8732c674d0e6d5132a0e8c7db1c4acc790 # ПУТЬ К ВАШЕМУ ОБРАЗУ!
ports:
- containerPort: 8000 # Порт, который слушает ваше приложение внутри контейнера
resources: # Рекомендуется указывать для планирования ресурсов
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "250m"
+2 -3
View File
@@ -18,11 +18,10 @@ theme:
icon: icon:
repo: fontawesome/brands/github repo: fontawesome/brands/github
features: features:
- content.code.copy
- navigation.instant - navigation.instant
- navigation.instant.progress - navigation.instant.progress
- navigation.sections - navigation.sections
# - navigation.tabs
# - navigation.tabs.sticky
- navigation.path - navigation.path
- navigation.top - navigation.top
- navigation.prune - navigation.prune
@@ -34,7 +33,7 @@ extra:
provider: google provider: google
property: G-WJRFTNJP0B property: G-WJRFTNJP0B
site_author: g.ryzhov site_author: g.ryzhov
copyright: Trustinfo.ru, 2025 copyright: Sailor.lab, 2026
markdown_extensions: markdown_extensions:
- admonition - admonition
- pymdownx.details - pymdownx.details