Compare commits
1 Commits
dunaev-oi-
...
dunaev-oi-
| Author | SHA1 | Date | |
|---|---|---|---|
| aa55fa96a1 |
23
tasks/dunaev-oi/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Отчет по лабораторной работе №7
|
||||
|
||||
Выполнил студент гр. ИСЭбд-41 Дунаев О.И.
|
||||
|
||||
## Задачи
|
||||
|
||||
Написать небольшое эссе (буквально несколько абзацев) своими словами. А помогут Вам в этом вопросы из списка:
|
||||
1. Какие алгоритмы и методы используются для балансировки нагрузки?
|
||||
2. Какие открытые технологии существуют для балансировки нагрузки?
|
||||
3. Как осуществляется балансировка нагрузки на базах данных?
|
||||
4. Реверс-прокси как один из элементов балансировки нагрузки.
|
||||
|
||||
## Эссе
|
||||
|
||||
Балансировка нагрузки – это важный процесс в сфере информационных технологий, который позволяет равномерно распределять нагрузку между компьютерами, серверами или другими ресурсами для обеспечения оптимальной производительности системы. В данном эссе я рассмотрю несколько вопросов, связанных с алгоритмами и методами балансировки нагрузки, открытыми технологиями, а также балансировкой нагрузки на базах данных и использованием реверс-прокси.
|
||||
|
||||
Первый вопрос касается алгоритмов и методов, используемых для балансировки нагрузки. Существует несколько подходов, таких как раунд-робин, весовая нагрузка, наименьшее количество соединений и IP хэширование. Раунд-робин распределяет запросы по всем доступным серверам одинаковым образом. Весовая нагрузка позволяет приоритезировать определенные серверы и передавать им больше запросов. Наименьшее количество соединений выбирает сервер с наименьшим количеством активных соединений. IP хэширование использует IP-адрес клиента для определения сервера, который будет обрабатывать его запросы.
|
||||
|
||||
Второй вопрос касается открытых технологий для балансировки нагрузки. Среди них можно выделить HAProxy, NGINX, Apache HTTP Server и AWS Elastic Load Balancer. HAProxy является высокопроизводительным реверс-прокси, который поддерживает различные алгоритмы балансировки нагрузки. NGINX также является реверс-прокси и обладает возможностями балансировки нагрузки. Apache HTTP Server предоставляет модуль mod_proxy_balancer для балансировки нагрузки. AWS Elastic Load Balancer предоставляет гибкую и масштабируемую балансировку нагрузки в облачной среде.
|
||||
|
||||
Третий вопрос касается балансировки нагрузки на базах данных. Для балансировки нагрузки на базах данных используются различные методы, такие как горизонтальное шардирование, репликация и кэширование. Горизонтальное шардирование разделяет данные на несколько фрагментов и распределяет их по разным серверам. Репликация создает копии базы данных на разных серверах для обработки запросов. Кэширование позволяет хранить результаты часто используемых запросов для улучшения производительности.
|
||||
|
||||
Реверс-прокси является важным элементом балансировки нагрузки. Он работает на стороне сервера и перенаправляет запросы с клиента на разные серверы в зависимости от текущей нагрузки. Реверс-прокси предоставляет централизованную точку контроля над серверами, обеспечивает отказоустойчивость и улучшает производительность системы.
|
||||
@@ -1,139 +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`:
|
||||

|
||||
|
||||
Переходим на http://localhost:222:
|
||||

|
||||
|
||||
Регистрируемся и автоматически входим в учетную запись:
|
||||

|
||||
|
||||
## Разворачивание сервиса 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`:
|
||||

|
||||
|
||||
Открываем Docker Desktop и проверяем, что контейнер сервера БД и Wordpress созданы и запущены:
|
||||

|
||||
|
||||
|
||||
## Разворачивание сервиса 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`:
|
||||

|
||||
|
||||
Переходим на http://localhost:8080:
|
||||

|
||||
|
||||
Регистрируемся и проверяем, что все работает:
|
||||

|
||||
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 153 KiB |