LoginSignup
2
4

More than 3 years have passed since last update.

AWS_WEB3層環境構築②

Last updated at Posted at 2021-01-17

前回の記事
https://qiita.com/shinichi_yoshioka/items/7226b9ebaad06c569c80
image.png
前回の続きをやっていく。
APサーバとDBサーバはプライベートサブネットに構築する。
プライベートサブネット配置のEC2インスタンス作成にあたって、
"パブリックIP自動割り当てを無効"にしたが
TomcatやMySQLをインストールするのに一時的にインターネットに繋ぎたい。
そもそもプライベートサブネット配置のEC2インスタンスにssh接続できなくて詰んでいる。
対処法を調べたところ、3通りぐらい把握した。
①ElasticIP(EIP)を割り当て+サブネットのルートテーブルにInternet-GWへのルーティング追加
 →これは実質パブリックサブネットと変わらない。
②前回構築したWEBサーバを踏み台としてアクセスする。
 →SSH接続はできるが、TomcatやMySQLをインストールするのにWEBサーバから移動するのが面倒。
③NATゲートウェイをパブリックサブネットに配置する。
 →これが一番良いやり方。

ちなみにNATゲートウェイの料金は、東京リージョンで1hあたり0.062USDらしい。
https://aws.amazon.com/jp/vpc/pricing/
施行錯誤の環境構築で時間がかかると思ったので、今回は①を選んだ。
(2台目のDBサーバを構築する際は、NATゲートウェイを使おうと思う)
EIPはAWSアドレスプールから払い出される固定のパブリックIPのこと。
セキュリティグループも一時的に開けないとダメだ。
構築が落ち着いたら、封鎖するので許してほしい。

◆EIPの作成とアタッチ
サービス[VPC]のElasticIPから[Elastic IPアドレスの割り当て]から、
AmazonのIPv4アドレスプールから割り当てを行う。
EIP1.PNG
割り当てられたアドレスをクリックすると、EC2インスタンスに関連付けできる。
EIP2.PNG
ちなみにEIPはEC2インスタンスにアタッチ中は課金されないが、
EIPの払い出しだけしていてEC2にアタッチされていないと課金されるらしい。
EIP3.PNG
ここでは、APサーバとDBサーバそれぞれにEIPを割り当てる。
こんな感じ。
EIP4.PNG
とりあえず、各EC2インスタンスにSSH接続できることは確認した。
AP/DBサーバの構築後処理は以下。
①ルートテーブルからインターネットゲートウェイを削除し、最低限に絞る
②セキュリティグループを必要なプロトコルのみに絞る

◆Nginxのインストール
対象:WEBサーバ

sudo su -
yum update -y
yum install nginx -y

ここでエラーが。
nginx1.PNG
どうやら、AmazonLinuxはインストール方法が違うらしい。
以下コマンドでインストールが開始されたことを確認した。

amazon-linux-extras install nginx1 -y

新しくサービスをインストールしたときの3点セット

systemctl enable nginx.service ・・・サービスの自動起動の有効化(再起動後もサービスを起動する)
systemctl start nginx.service ・・・サービスの起動
systemctl status nginx.service ・・・サービスのステータス確認

nginx2.PNG
ステータスがactive(running)になっていることを確認した。
nginx3.PNG
ブラウザに以下のように入力し、Nginxのテストページが表示されることを確認した。

http://WEBサーバのパブリックIPアドレス

◆Tomcatのインストール
対象:APサーバ
同様にtomcatのインストールと起動をする。

sudo su -
yum update -y
yum install tomcat -y
systemctl enable tomcat.service
systemctl start tomcat.service
systemctl status tomcat.service

tomcat1.PNG
tomcatのサービスは正常に動いているが、Web App Containerとしての正常性確認のやり方が不明。
JDBCドライバーをインストール後に再度、正常性を確認することにした。
過去に自宅VirtualBoxにTomcatを入れて正常性確認をしたが、これはApache Tomcat(WEBサーバ)であって
上記のWeb App Containerとは違う認識。
tomcat2.PNG

◆MySQLのインストール
対象:DBサーバ
同様にMySQLをインストールする。

sudo su -
yum update -y
yum install mysql -y

MySQL1.PNG
Mysqlをインストールしようとしたら、MariaDBが入ったのだが・・・。
他のEC2インスタンスを確認したところ、Amazon Linuxにはデフォルトでmariadb-libs-5.5.68-1.amzn2.x86_64が入っていて
MySQL互換のMariaDBをインストールしてしまった。
MySQLとMariaDBで競合をおこさないようにアンインストールしておく。

yum remove mariadb-libs -y
rpm -qa | grep -i maria

何も表示されないことを確認した。

次にMySQLをyumでインストールするため、MySQL公式のリポジトリを追加した。

yum localinstall http\://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm -y

MySQL2.PNG

yum info mysql-community-server ・・・MySQLのyumリポジトリ追加を確認
yum -y install mysql-community-server ・・・mysqldのインストール
mysqld --version

にてMySQLのインストールを確認。
MySQL4.PNG

他のサービスと同様にmysqld.serviceが正常に動いていることを確認した。

systemctl enable mysqld.service
systemctl start mysqld.service
systemctl status mysqld.service

MySQL5.PNG
MySQLのrootユーザの初期パスワードは、/var/log/mysqld.logに記載されている。

cat /var/log/mysqld.log | grep temporary

一時的なパスワードなので、rootユーザにログイン後に任意のパスワードに変える。

mysql -u root -p

コロンの後ろの白塗り部分に一時パスワードが記載されているので、rootユーザにログイン。

set password for root@localhost=password('ここに新しいパスワード');

MySQL6.PNG
Query OKと出れば変更完了だが、初期のパスワードポリシーが結構厳しめで
パスワードは大文字・小文字・数字・記号とかにしないとはじかれると思う。
パスワード変更後はいったんMySQLから抜けて、新パスワードでログインできることを確認した。
MySQL7.PNG

長くなってしまったので、第2回はここまで。
久々に有意義な休日を過ごせたと思う。(いつもはゲームして、YouTube見て、見てるうちに寝ちゃって1日終わる)
次回は、APサーバにMySQLドライバーを入れて、WEBサーバとAPサーバとDBサーバを連携したい。
イメージでは、WEBサーバのnginx.confにリバースプロキシの設定を入れて、
Tomcatのserver.xmlにDBサーバのアドレスを記載すれば
連携できるのではないかと思っている。
正直ここから先は何もわかっていないので、次回の記事は結構先になりそうだ。

つづく
https://qiita.com/shinichi_yoshioka/items/5253fd442376c6f222b2

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4