1 Commits

Author SHA1 Message Date
8c4bcc03c7 commit11 2023-12-18 18:37:41 +04:00
12 changed files with 31 additions and 149 deletions

View File

@@ -1,149 +0,0 @@
# Отчёт по лабораторной работе №1
Выполнил: студент гр. ИСЭбд-41, Мельников К.Ю.
## Разворачивание сервиса Gitea
Содержимое файла `docker-compose.yml` в папке Gitea:
```yaml
version: "3"
networks:
gitea:
external: false
# Контейнер Gitea
services: # Описание служб
server:
image: gitea/gitea:1.20.4 # Образ gitea
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: 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
```
Далее в командной строке разворачиваем сервис командой `docker-compose up -d`:
![](scrins/1.png)
Открываем Docker Desktop и проверяем, что контейнер сервера БД и Gitea созданы и запущены:
![](scrins/2.png)
Переходим на http://localhost:222:
![](scrins/3.png)
Регистрируемся и автоматически входим в учетную запись:
![](scrins/4.png)
![](scrins/5.png)
## Разворачивание сервиса Wordpress
Также в файл `docker-compose.yml` в папке Wordpress прописываем следующий код:
```yaml
version: '3.1'
services:
# Контейнер Wordpress
wordpress:
image: wordpress # Образ
restart: always # Параметр перезапуска
ports: # На каком порте запускаем
- 7071:80
environment: # Настройки БД WordPress для подключения
WORDPRESS_DB_HOST: database # Имя хоста БД MySQL
WORDPRESS_DB_USER: user # Имя пользователя БД
WORDPRESS_DB_PASSWORD: password # Пароль пользователя БД
WORDPRESS_DB_NAME: name_database # Имя БД
volumes: # Каталог хранения файлов WordPress
- wordpress:/var/www/html
# Контейнер MySQL
database:
image: mysql:5.7 # Образ и его версия
restart: always # Параметр перезапуска
environment: # Настройки БД для подключения
MYSQL_DATABASE: name_database
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: '12345'
volumes: # Каталог хранения данных БД
- database:/var/lib/mysql
volumes:
wordpress:
database:
```
Далее в командной строке разворачиваем сервис командой `docker-compose up -d`:
![](scrins/6.png)
Открываем Docker Desktop и проверяем, что контейнер сервера БД и Wordpress созданы и запущены
Устанавливаем Wordpress и проверяем, что все работает:
![](scrins/7.png)
![](scrins/8.png)
## Разворачивание сервиса Redmine
Также в файл `docker-compose.yml` в папке Redmine прописываем код:
```yaml
version: '3.1'
services:
# Контейнер Redmine
redmine:
image: redmine # Образ контейнера
restart: always
ports: # На какой порт запускать
- 8080:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: example
REDMINE_SECRET_KEY_BASE: supersecretkey
# Контейнер БД MySQL
db:
image: mysql:5.7 # Образ БД и ее версия
restart: always
environment: # Название и пароль админа БД
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: redmine
```
Далее в командной строке разворачиваем сервис командой `docker-compose up -d`:
Открываем Docker Desktop и проверяем, что контейнер сервера БД и Redmine созданы и запущены:
![](scrins/10.png)
Переходим на http://localhost:8080:
![](scrins/9.png)
Регистрируемся и проверяем, что все работает:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -0,0 +1,31 @@
# Отчет по лабораторной работе №7
Выполнил студент гр. ИСЭбд-41 Мельников К.Ю.
## Задачи
Написать небольшое эссе (буквально несколько абзацев) своими словами. А помогут Вам в этом вопросы из списка:
1. Какие алгоритмы и методы используются для балансировки нагрузки?
2. Какие открытые технологии существуют для балансировки нагрузки?
3. Как осуществляется балансировка нагрузки на базах данных?
4. Реверс-прокси как один из элементов балансировки нагрузки.
## Эссе
1. Алгоритмы и методы балансировки нагрузки:
- Раунд-робин: запросы распределяются поочередно между серверами. Этот метод прост в реализации, но не всегда эффективен, так как не учитывает актуальную нагрузку серверов.
- Взвешенный раунд-робин: каждому серверу присваивается вес в соответствии с его производительностью. Запросы распределяются пропорционально весам серверов.
- IP-хэширование: определенный хеш-алгоритм применяется к IP-адресу клиента, и на основе полученного значения запрос направляется к соответствующему серверу. Это позволяет соблюдать сессионную устойчивость, так как один и тот же IP всегда будет направляться на один сервер.
- Адаптивный балансировщик нагрузки: этот алгоритм учитывает актуальную нагрузку серверов и распределяет запросы исходя из их производительности. Он автоматически адаптируется к изменениям в нагрузке.
2. Открытые технологии для балансировки нагрузки:
- Nginx: это популярный веб-сервер и обратный прокси, который может использоваться для балансировки нагрузки между серверами. Он также обладает другими полезными функциями, такими как кеширование и SSL-терминация.
- HAProxy: это высокопроизводительный обратный прокси и балансировщик нагрузки, который распространяется в виде открытого программного обеспечения. Он предоставляет гибкие настройки и эффективно распределяет запросы.
- Apache HTTP Server: этот сервер сочетает в себе функциональности веб-сервера и обратного прокси. Он поддерживает различные методы балансировки нагрузки, такие как раунд-робин и IP-хэширование.
3. Балансировка нагрузки на базах данных может быть достигнута различными методами. Один из подходов - это использование мастер-слейв репликации, где один сервер является мастером, который принимает записи, а другие серверы являются его слейвами и дублируют данные. Другой метод - это шардинг, при котором данные разбиваются на несколько фрагментов и хранятся на разных серверах. Также существуют специализированные инструменты, такие как ProxySQL, которые предоставляют балансировку нагрузки для баз данных.
4. Реверс-прокси является одним из основных элементов балансировки нагрузки. Он действует как посредник между клиентом и сервером, принимая запросы от клиента и перенаправляя их на множество серверов. Реверс-прокси позволяет распределить нагрузку между серверами, управлять соединениями и обеспечивать дополнительные функции, такие как кэширование и SSL-терминация.
Балансировка нагрузки является неотъемлемой частью современных IT-решений, обеспечивая стабильность, производительность и масштабируемость систем. Это лишь некоторые аспекты и методы балансировки нагрузки, и выбор конкретных подходов зависит от требований и особенностей каждого проекта.