[JAVA] Vom Aufbau einer AWS-Cloud-Umgebung bis zur Bereitstellung einer Spring Boot-App (für Anfänger)

Als Anwendungstechniker hatte ich in meiner täglichen Arbeit nicht viel Erfahrung mit Infrastrukturdesign, aber ich war beeindruckt, dass ich problemlos eine Infrastrukturinfrastruktur aufbauen konnte, obwohl ich über AWS fast keine Kenntnisse über Infrastruktur habe. Dieses Mal werde ich für dieselben Anfänger wie mich das Verfahren vom Erstellen der AWS-Cloud-Umgebung bis zur Bereitstellung der Spring Boot-App erläutern.

Umgebungskonfigurationsdiagramm

Für die AWS-Konfiguration übernehmen wir eine redundante Konfiguration unter Verwendung von zwei Verfügbarkeitszonen (AZ) in der Region Tokio. EC2-Instanzen werden in den beiden AZs verteilt, und der Zugriff wird über ALB (Load Balancer) verteilt. Darüber hinaus wird die RDS-Instanz in Multi-AZ so konfiguriert, dass sie wie in EC2 in zwei AZs verteilt wird.

Erstelle zuerst eine VPC!

Jeder Instanz in AWS muss eine IP-Adresse zugewiesen und ordnungsgemäß weitergeleitet werden, damit sie die Instanzen in AWS vom externen Netzwerk aus erreichen kann. Der Dienst, der ein solches virtuelles Netzwerk bereitstellt, heißt Amazon Virtual Private Cloud (VPC).

Informationen zur VPC-Konfiguration

Obwohl dies üblich ist, streben wir eine VPC-Umgebung an, die dem tatsächlichen Kampf nahe kommt. Diese VPC besteht aus zwei Typen: ** öffentliches Subnetz ** für die Internetkommunikation und ** privates Subnetz **, das für das Internet gesperrt ist. Wenden Sie jeweils unterschiedliche Sicherheitsgruppen an, um den Zugriff auf die beiden Arten von Subnetzen zu steuern. Der AP-Server basiert auf dem öffentlichen Subnetz und der DB-Server auf dem privaten Subnetz. VPC構成詳細.jpg

VPC-Erstellung

Nach der Registrierung eines neuen AWS-Kontos wurde bereits die Standard-VPC-Umgebung erstellt. Dieses Mal werden wir jedoch die folgende VPC von Grund auf neu erstellen, ohne sie zu verwenden. vpc構成図.jpg

    1. Klicken Sie auf AWS Management Console VPC ⇒ Wählen Sie VPC aus dem Menü auf der linken Seite ⇒ Klicken Sie auf die Schaltfläche Create VPC.
  1. Geben Sie auf dem Bildschirm zur VPC-Erstellung einen geeigneten Namen ein und geben Sie den IP-Adressbereich in das Feld CIDR-Block ein. (Geben Sie diesmal "10.0.0.0/16" ein.)
    1. Klicken Sie auf die Schaltfläche "Ja, erstellen". VPC作成.jpg

Subnetz erstellen

Erstellen Sie ein Subnetz innerhalb der obigen VPC. Ein Subnetz kann nicht über mehrere AZs hinweg erstellt werden. Geben Sie daher beim Erstellen unbedingt ein AZ an. Erstellen Sie für die Lastverteilung und Redundanz zwei Subnetze für den AP-Server und zwei für den DB-Server. subnet構成.jpg

    1. Wählen Sie "Subnetz" aus dem Menü auf der linken Seite. ⇒ Klicken Sie auf die Schaltfläche "Unterabschnitt erstellen".
  1. Geben Sie auf dem Bildschirm zur Subnetzerstellung einen geeigneten Namen ein, wählen Sie die oben erstellte VPC aus und geben Sie den CIDR-Block ein. (Subnetz1 ist "10.0.0.0/24".) subnet1作成.jpg
    1. Gehen Sie wie oben beschrieben vor, um Subnet2, Subnet3 und Subnet4 zu erstellen.
Subnet AZ IPv4-CIDR-Block
public-subnet1 ap-northeast-1a 10.0.0.0/24
public-subnet2 ap-northeast-1c 10.0.1.0/24
private-subnet1 ap-northeast-1a 10.0.2.0/24
private-subnet2 ap-northeast-1c 10.0.3.0/24

Unterabschnittslistenbildschirm nach Abschluss subnetList.jpg

Erstellen eines Internet-Gateways (IGW) und einer Routentabelle

Das ** Internet Gateway (IGW) ** ist, wie der Name schon sagt, das Gateway zum Internet und wird für die Kommunikation zwischen der VPC und dem externen Netzwerk installiert. Ob das oben erstellte Subnetz ein öffentliches oder ein privates Subnetz ist, wird durch die auf dieses Subnetz angewendete ** Routentabelle ** bestimmt. Ziel: Das Subnetz, auf das die Routentabelle mit IGW als Ziel von 0.0.0.0/0 angewendet wird, ist das öffentliche Subnetz. Andererseits ist das Subnetz, auf das die Routentabelle (Standardeinstellung) ohne IGW als Ziel des Ziels: 0.0.0.0/0 angewendet wird, ein privates Subnetz. igw&rtb.jpg

    1. Wählen Sie "Internet Gateway" aus dem Menü auf der linken Seite. ⇒ Klicken Sie auf die Schaltfläche "Internet Gateway erstellen".
  1. Geben Sie einen geeigneten Namen ein und klicken Sie auf die Schaltfläche "Ja, erstellen". igw.jpg
    1. Klicken Sie auf die Schaltfläche "An VPC anhängen", um eine Verbindung mit der VPC herzustellen. igw attache.jpg
  2. Wählen Sie im Menü links die Option "Routentabelle". ⇒ Klicken Sie auf die Schaltfläche "Routentabelle erstellen".
  3. Um eine Routentabelle für Subnetz1 zu erstellen, das ein öffentliches Subnetz ist, geben Sie einen geeigneten Namen ein, verknüpfen Sie ihn mit der VPC und klicken Sie auf die Schaltfläche "Ja, erstellen". rtb1.jpg
  4. Gehen Sie wie oben beschrieben vor, um public-rtb2 zu erstellen. Dieses Mal verwenden wir anstelle einer Routentabelle für das private Subnetz die Standardroutentabelle.
  5. Registrieren Sie das IGW als Ziel des Standard-Gateways (Ziel 0.0.0.0/0) in der Routentabelle für das öffentliche Subnetz. route.jpg Die Routeninformationen "10.0.0.0/16 local" in der Routentabelle können mit den Standardeinstellungen nicht geändert oder gelöscht werden. Diese Standardeinstellung bedeutet, dass die Kommunikation innerhalb der VPC nicht über die Routentabelle gesteuert werden kann. Dies bedeutet, dass die Kommunikation zwischen Subnetzen innerhalb derselben VPC möglich ist.

Erstellen einer Sicherheitsgruppe

Eine Sicherheitsgruppe ist eine Firewall für jede Instanz in AWS, die den eingehenden (eingehenden) und ausgehenden (ausgehenden) Zugriff steuern kann. Auf jede Instanz muss mindestens eine Sicherheitsgruppe angewendet werden. VPC構成詳細.jpg

    1. Wählen Sie "Sicherheitsgruppe" aus dem Menü auf der linken Seite. ⇒ Klicken Sie auf die Schaltfläche "Sicherheitsgruppe erstellen".
  1. Um eine Sicherheitsgruppe für den AP-Server zu erstellen, geben Sie einen geeigneten Namen ein, verknüpfen Sie ihn mit der VPC und klicken Sie auf die Schaltfläche "Ja, erstellen". sg作成.jpg
    1. Führen Sie die gleichen Schritte wie oben aus, um eine Sicherheitsgruppe für Ihren DB-Server zu erstellen. private sg.jpg
  2. Erstellen Sie eingehende und ausgehende Regeln für jede Sicherheitsgruppe. Standardmäßig ist eingehende Nachrichten nicht zulässig, sodass kein Zugriff von irgendwoher akzeptiert wird. Auf der anderen Seite gibt es für ausgehende Nachrichten Regeln, die standardmäßig den Zugriff auf alle Ziele / Portnummern ermöglichen. Lassen Sie den SSH-Port 22 und den Web-App-Port 8085 in der AP Server-Sicherheitsgruppe für den externen Zugriff geöffnet. public inbound.jpg Andererseits hält die Sicherheitsgruppe für den DB-Server den Aurora-Port 3306 offen, um nur den DB-Zugriff vom AP-Server zuzulassen. private sg rule.jpg

Damit ist der Aufbau der VPC abgeschlossen.

Erstellen Sie eine RDS-Instanz

RDS ist ein relationaler Datenbankmanagerdienst. Die folgenden 6 Arten von Datenbankmodulen können mit RDS ausgewählt werden. ・ Amazon Aurora ・ MySQL ・ MariaDB ・ PostgreSQL -Orakel · MS SQL Server Dieses Mal werden wir Aurora DB bauen. Aurora ist AWS 'proprietäre relationale DB-Engine, die mit MySQL kompatibel ist und eine bis zu 5- und 3-fache PostgreSQL-Durchsatzleistung von MySQL bieten soll. RDS.jpg

Erstellen einer Subnetzgruppe

Als Voraussetzung für die Erstellung einer DB-Instanz müssen Sie eine DB-Subnetzgruppe innerhalb der VPC angeben. Eine DB-Subnetzgruppe benötigt Subnetze in mindestens zwei Verfügbarkeitszonen innerhalb einer bestimmten Region. Sie müssen eine DB-Subnetzgruppe auswählen, wenn Sie eine DB-Instanz auf Ihrer VPC erstellen. Amazon RDS verwendet seine DB-Subnetzgruppe und die bevorzugte Verfügbarkeitszone, um das Subnetz und die IP-Adressen in diesem Subnetz auszuwählen, die der DB-Instanz zugeordnet werden sollen.

    1. Klicken Sie auf AWS Management Console RDS ⇒ Wählen Sie Subnet Group aus dem Menü auf der linken Seite ⇒ Klicken Sie auf die Schaltfläche Create Submarine Group.
  1. Geben Sie den Namen usw. entsprechend ein, fügen Sie zwei DB-Subnetze hinzu (privates Subnetz1, privates Subnetz2) und klicken Sie auf die Schaltfläche "Erstellen". db subnet group1.jpg

Erstellen einer DB-Instanz

    1. Wählen Sie "Instanz" aus dem Menü auf der linken Seite. ⇒ Drücken Sie die Taste "Start DB Instance".
  1. Wählen Sie im Motorauswahlbildschirm Amazon Aurora aus. db1.jpg
    1. Geben Sie im Bildschirm "DB-Details" die DB-Instanzklasse usw. an und klicken Sie auf die Schaltfläche "Nächster Schritt".
  1. Geben Sie die VPC, die DB-Subnetzgruppe, die bevorzugte AZ und die Sicherheitsgruppe an. db3.jpg
  2. Sie können bestätigen, dass die DB-Instanz nach Abschluss der Einstellung erstellt wird. db4.jpg

Erstellen Sie eine EC2-Instanz

Endlich bin ich bei EC2 angekommen. Amazon Elastic Compute Cloud (EC2) ist ein virtueller Server in AWS. Dieses Mal werden wir zwei Instanzen für die Lastverteilung erstellen. EC2.jpg

Erstellen einer EC2-Instanz

    1. Klicken Sie auf AWS Management Console EC2 ⇒ Wählen Sie Instance aus dem Menü auf der linken Seite ⇒ Klicken Sie auf die Schaltfläche Create Instance.
  1. Wählen Sie Amazon Linux als Instanztyp aus. ec21.jpg
    1. Wählen Sie im Auswahlbildschirm für den Instanztyp den Typ für die freie Schicht aus. ec22.jpg
  2. Geben Sie die VPC und das Subnetz im Bildschirm mit den erweiterten Einstellungen an. ec23.jpg
  3. Speicher hinzufügen. ec24.jpg
  4. Geben Sie die Sicherheitsgruppe für den AP-Server an. ec25.jpg
  5. Laden Sie abschließend das Schlüsselpaar herunter, um sich bei EC2 anzumelden, und klicken Sie auf die Schaltfläche "Instanz erstellen", um die Instanzerstellung abzuschließen. ec26.jpg

ELASTIC IP-Zuordnung

Die ELASTIC IP-Zuweisung ist erforderlich, um den oben genannten EC2-Instanzen eine statische öffentliche IP-Adresse zuzuweisen.

    1. Wählen Sie im Menü links "ELASTIC IP". ⇒ Klicken Sie auf die Schaltfläche "Neue Adresse zuweisen". eip1.jpg
  1. Mit einer EC2-Instanz verknüpfen. eip2.jpg

Initialisierung der EC2-Umgebung

Geben Sie die obige ELASTIC IP mit einem SSH-Client wie Tera Term ein, um auf die EC2-Instanz zuzugreifen. ec27.jpg Melden Sie sich mit dem zuvor heruntergeladenen Schlüssel mit dem Benutzer "ec2-user" an. ec28.jpg

tera term.jpg

Wenn Sie sich erfolgreich anmelden können, nehmen Sie die Grundeinstellungen für EC2 vor.

#Update auf die neueste Software
$ sudo yum update -y
#Änderung des Hostnamens
$ sudo hostname ec2-1-cinpo1
$ sudo vim /etc/sysconfig/network
HOSTNAME=ec2-cinpo1;
#Hostdatei bearbeitet und von AWS ausgegeben<Private IP>schreiben.
$ echo "17X.XX.X.X30 ec2-cinpo1" |sudo tee -a /etc/hosts
#Bestätigung des Hostnamens
$ hostname -f
#Zeitzonenänderung
# /etc/sysconfig/Uhr bearbeiten
$ echo -e 'ZONE="Asia/Tokyo"\nUTC=false' | sudo tee /etc/sysconfig/clock
#Zeitzonendatei ändern
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
#Überprüfen Sie das Ergebnis
$ date
#Java 8-Installation
$ sudo yum install java-1.8.0-openjdk.x86_64
#Java 8 Auswahl
$ sudo alternatives --config java
#Überprüfen Sie das Ergebnis
$ java -version

Baue einen zweiten EC2.

Führen Sie die gleichen Schritte wie oben aus, um eine zweite EC2-Instanz zu erstellen.

Datenportierung in die Aurora-Umgebung

#Installieren Sie den MySQL-Client, um eine Verbindung zum Aurora-Server herzustellen.
$ sudo yum install mysql
#Stellen Sie eine Verbindung zum Aurora-Server her, um eine neue Datenbank oder Portdaten zu erstellen.
$ mysql -h <Endpunkt der RDS-Instanz> -u username -p
$ create database sampleDB

...Folgendes wird weggelassen...

mysql.jpg

Bereitstellen der Spring Boot-App

    1. Verwenden Sie die SSH-SCP-Übertragung von Tera Term, um die Spring Boot-App lokal auf die beiden oben genannten EC2-Instanzen hochzuladen.
  1. Starten Sie nach Abschluss die Spring Boot-App wie zuvor.
$ java -jar XXXXXXXX.jar

boot.jpg

    1. Versuchen Sie zu diesem Zeitpunkt, auf ELASTIC IP: 8085 zuzugreifen, und Sie sollten den App-Bildschirm sehen.

Erstellen eines Load Balancers

Wenden Sie abschließend einen Load Balancer (Application Load Balancer [ALB]) an, um einen Lastausgleich für den AP-Server zu erzielen. ALB.jpg

Aufbau einer Zielgruppe

Als Voraussetzung für die Anwendung von ALB müssen Sie die EC2-Instanz als Ziel in der Zielgruppe registrieren. ALB fungiert als ein einziges Ziel für Clients und verteilt eingehenden Datenverkehr an registrierte Ziele.

    1. Klicken Sie auf AWS Management Console EC2 ⇒ Wählen Sie Zielgruppe aus dem Menü auf der linken Seite ⇒ Klicken Sie auf die Schaltfläche Zielgruppe erstellen. ALB1.jpg
  1. Registrieren Sie das Ziel in der ausgewählten Zielgruppe auf dem Zielgruppenlistenbildschirm. ALB2.jpg
    1. Registrieren Sie die EC2-Instanz als Ziel in der Zielgruppe. ALB3.jpg

Gebäude ALB

    1. Wählen Sie "Load Balancer" aus dem Menü auf der linken Seite. ⇒ Klicken Sie auf die Schaltfläche "Create Load Balancer" und wählen Sie "Application Load Balancer". ALB4.jpg
  1. Geben Sie den Namen entsprechend an und geben Sie den Listener, das Subnetz usw. an. ALB5.jpg
    1. Geben Sie die Sicherheitsgruppe an. ALB6.jpg
  2. Geben Sie die zuvor erstellte Zielgruppe an. ALB7.jpg
  3. Es wird gerade erstellt und ist in ein oder zwei Minuten verfügbar. ALB8.jpg

Funktionsprüfung

Dies umfasst alles vom Erstellen der AWS-Umgebung bis zur Bereitstellung der App. http://<ALBのDNS名>:ポート/にアクセスすれば、アプリ画面が表示されたら完成です。 final1.jpg

Recommended Posts

Vom Aufbau einer AWS-Cloud-Umgebung bis zur Bereitstellung einer Spring Boot-App (für Anfänger)
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
Vom Erstellen eines Spring Boot-Projekts bis zum Ausführen einer Anwendung mit VS Code
So schreiben Sie einen Komponententest für Spring Boot 2
Laden Sie ein externes Glas aus dem Spring Boot-Fettglas
Versuchen Sie Spring Boot von 0 bis 100.
Erforderliche Schritte zum Ausgeben von asynchronen Spring Boot-Ereignissen
Einführung von Spring Boot2, einem Java-Framework für die Webentwicklung (für Anfänger)
So erstellen Sie mit SPRING INITIALIZR einen Hinadan für ein Spring Boot-Projekt
Erstellen Sie eine App mit Spring Boot 2
02. Ich habe eine API erstellt, um eine Verbindung von Spring Boot zu MySQL (My Batis) herzustellen.
Erstellen Sie eine App mit Spring Boot
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Erstellen Sie eine Spring Boot-Webanwendung, die IBM Cloudant verwendet, und stellen Sie sie in Cloud Foundry bereit
Anzeigen der in Spring Boot eingegebenen Zeichen im Browser und Referenzlinks [Einführung in Spring Boot / Für Anfänger]
Erstellen einer SAP-Systemverbindungsumgebung mit JCo zu einem PC, den selbst Anfänger von Java ausführen können
Schritte zum Erstellen einer einfachen Kamel-App mit Apache Camel Spring Boot-Startern
[Docker] Erstellen einer Umgebung für Hugo
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
[Spring Boot] So rufen Sie Eigenschaften dynamisch aus einer in einer URL enthaltenen Zeichenfolge ab
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen
Bucheinführung: Spring Boot Empfohlenes Nachschlagewerk für Anfänger!
Erstellen Sie mit Spring Boot eine einfache Such-App
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Einführung in Spring Boot + In-Memory Data Grid
Erstellen Sie eine Laravel-Umgebung auf einer AWS-Instanz
[Rails] Erstellen einer Umgebung für die Entwicklung von Webanwendungen
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen Sie eine Web-App, die genau zum Lernen geeignet ist [Spring Boot + Thymeleaf + PostgreSQL]
[Für Anfänger] Bis zum Erstellen einer Webanwendungsentwicklungsumgebung mit Java unter Mac OS
<Punktinstallation> Was tun, wenn Sie aufgrund eines Fehlers beim Erstellen einer Entwicklungsumgebung für das Rails-Lernen nicht fortfahren können?
Pläne zur Unterstützung von JDK 11 für Eclipse und Spring Boot
Memo zum Erstellen einer Servlet-Umgebung auf EC2 von AWS
So stellen Sie Spring Boot Dependency Injection (DI) ein
So verwenden Sie ein Array für den TreeMap-Schlüssel
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
Customizer für Platform Transaction Manager aus Spring Boot 1.5 hinzugefügt
Push-Übermittlung von der Spring-Anwendung an Firebase Cloud Messaging
Spring Boot Häufig für Anfänger (@ComponentScan)
[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf
Anfänger in der App-Entwicklung haben versucht, eine Android-Rechner-App zu erstellen
Booten nach Umgebung mit Spring Boot of Maven
Neuer Mitarbeiter hat versucht, mit Spring Security eine Authentifizierungs- / Autorisierungsfunktion von Grund auf neu zu erstellen