Дизайн, розгортання та діагностика: всебічний хмарний проєкт з Flask та MySQL.

pic

У цьому завданні ми розгортаємо додатки MySQL та Flask в AWS, створюємо приватні та публічні підмережі, а також EC2 для MySQL у приватній підмережі та сервер Flask у публічній підмережі. Потім намагаємося підключити обидва сервери.

Створення VPC

назва VPC FlaskApp-Vpc.

pic

Створення підмереж

  1. Публічна підмережа

назва публічної підмережі public subnet-flask app

IP діапазон 10.0.2.0/24

  1. Приватна підмережа

назва приватної підмережі private subnet-MySql

IP діапазон 10.0.1.0/24

pic

Налаштування NAT Gateway

  • Розгорніть NAT Gateway в публічній підмережі.
  • NAT Gateway дозволяє вихідний трафік з приватної підмережі без відкриття її для Інтернету.
  • Ассоціюйте NAT Gateway з маршрутизатором приватної підмережі, щоб дозволити доступ до Інтернету безпечно.

pic

Налаштування маршрутизації

  • Публічна підмережа маршрутизує трафік до Інтернету через Internet Gateway.
  • Підмережа маршрутизує вихідний трафік через NAT Gateway.
  • Додаток Flask зв'язується з MySQL за допомогою приватної IP-адреси.
Перейдіть до Route Tables > Виберіть таблицю маршруту публічної підмережі.
Додайте маршрут:
Мета: 0.0.0.0/0.
Мета: Internet Gateway.

Крок 6: Запуск EC2 екземплярів (Інстанс бази даних MySQL):

Запустіть EC2 інстанс у приватній підмережі.
Виберіть AMI з попередньо встановленим MySQL або налаштуйте MySQL вручну.
Використовуйте Security Group для дозволу вхідного трафіку лише від приватної IP Flask додатка.

Крок 7: Налаштування Flask і MySQL

Налаштування MySQL:

  • Підключіться до інстансу MySQL через SSH.
  • Створіть базу даних і користувача для Flask додатка:
CREATE DATABASE myapp;
CREATE USER 'flaskuser'@'192.168.1.%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myapp.* TO 'flaskuser'@'192.168.1.%';
FLUSH PRIVILEGES;

Налаштування Flask:

  • Підключіться до інстансу Flask через SSH.
  • Напишіть Flask додаток для підключення до MySQL за допомогою його приватної IP:
import mysql.connector
from flask import Flask
app = Flask(__name__)@app.route('/')
def index():
    try:
        conn = mysql.connector.connect(
            host="192.168.1.2",
            user="flaskuser",
            password="password",
            database="myapp"
        )
        return "Connected to the database!"
    except mysql.connector.Error as err:
        return f"Error connecting to database: {err}"
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Крок 8: Налаштування Security Groups

  • Для інстансу MySQL: Дозволити вхідний трафік на порт 3306 від приватного IP Flask інстансу.
  • Для інстансу Flask: Дозволити вхідний трафік на порт 5000 від будь-якої публічної IP.

Крок 9: Перевірка з'єднання

  • Ping та Telnet: З інстансу Flask протестуйте підключення до приватної IP MySQL: bash
ping 192.168.1.2
telnet 192.168.1.2 3306

Дякую....

Перекладено з: Design, Deploy, and Diagnose: A Comprehensive Cloud Project with Flask and MySQL.

Leave a Reply

Your email address will not be published. Required fields are marked *