かすたあどくりいむ定食

育児、プラモ、音楽(バンド)が趣味なエンジニア(かもしれない)ブログです。

AWSで始めるインフラ構築入門読んで手を動かしてる5

これまで

hellhellmymy.hatenablog.com

9章 画像の保存先を用意しよう

S3

Amazon S3(Sinmple Storage Service) はストレージマネージドサービスです。 画像等のボリュームが大きいデータを置きます。

S3は恐ろしいことに耐久性99.999999999%が達成できるように設計されているとのこと。

計算上は1000万ファイルを10000年壊れずに保存できるとのことで、自分は死んで孫や、その孫達までデータを残すことができる恐ろしい設計です。

  • S3はVPCの外に設置
  • アクセス権限はIAMのロールで適用

  • S3内にバケット作成

  • ロール作成して
  • ロールをEC2に適用する

実際に動作確認

ファイルをS3にアップロード

[ec2-user@ip-10-x-xx-xxx ~]$ aws s3 cp test.txt s3://asw-intro-sample-upload
upload: ./test.txt to s3://asw-intro-sample-upload/test.txt      

無事にAWSコンソール上でもファイルが確認できました。

Webサーバー何使ってるのか調べる方法

Webサーバー何が動いとるねん

ってことです。 仕事上、自分が全然見たことも聞いたこともない案件のサーバーを見ることになった時に、Apacheなのかnginxなのか確認をとりたかったってだけです。

確認するコマンド

コマンド

$ sudo /usr/sbin/lsof -Pn -i tcp:80

apacheの場合

$ sudo /usr/sbin/lsof -Pn -i tcp:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   12222 apache    4u  IPv6  44444      0t0  TCP *:80 (LISTEN)

nginxの場合

$ sudo /usr/sbin/lsof -Pn -i tcp:80
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx   25775 nginx   10u  IPv4 444444444      0t0  TCP *:80 (LISTEN)

tcpプロトコルの80番で何が動いているかを確認しています。

TCP/IPに弱いのでここも勉強します。 とりあえず確認方法はわかりました。

参照

atmarkit.itmedia.co.jp

AWSで始めるインフラ構築入門読んで手を動かしてる4

最近何か毎日やれてるすごい!

これまで

hellhellmymy.hatenablog.com

8章 データベースサーバーを用意しよう

DBサーバー作成の流れは下記の順で作成

  1. パラメータグループ
  2. オプショングループ
  3. サブネットグループ
  4. データベース
パラメータグループ

Mysqlが用意するデータベース設定を行うための領域

DBの性能改善、使用状況の把握、機能追加等ができる

Mysql8.0で作成

オプショングループ

同じくMysql8.0で作成

サブネットグループ

基本的にプライベートサブネットを追加して、パブリックなサブネットはサブネットグループに追加しない

DB作成

デフォルトの設定値、グループやVPCは作ったものに設定してあげる 作成を押してからが、かなり長い10分

動作確認

ssh でwebサーバに接続し下記実行

sudo yum -y install mysql

さらにエンドポイントを叩きます。

下記を実行

[ec2-user@ip-10-x-xx-xxx ~]$ mysqladmin ping -u admin -p -h sample-db.xxxxxxxl.ap-northeast-1.rds.amazonaws.com -p
Enter password: 
mysqld is alive

無事接続できた!

引き続き頑張ります!

AWSで始めるインフラ構築入門読んで手を動かしてる3

今回自分にしては、アウトプット更新頻度が高いのは、やっぱり手を動かす作業は一気に片付けないと飲み込みが悪いと感じたからです。 間が大きく開くと思い出しコストがかかります。

前回までのあらすじ

hellhellmymy.hatenablog.com

hellhellmymy.hatenablog.com

7章ロードバランサーを用意しよう

ロードバランサって何?

ジョジョの奇妙な冒険の「ロードローラーだ!」というセリフを思い出しました。

ロードバランサって名前からあるようにバランスをとってくれる、道を慣らしてくれるみたいなイメージです。

ユーザーが増えると、1台のサーバーではリクエストをさばけなくなることがあり、そんな時のためにWebサーバを複数用意して性能を上げるスケールアウトという方法があります。 ロードバランサの役割としては、リクエスト分散、SSL処理、不正リクエスト対策の仕組みが用意されてあります。

AWSで用意されてるロードバランサー

Elastic Load Blancing (ELB)
  • ApplicationLoadBlancer (ALB) HTTP、HTTPSによるアクセス分散に最適化されたロードバランサ
  • Network Load Blancer 基本的な分散処理機能しか持たない、リアルタイムゲームやチャットで使用
  • Claccic Load Balancer 古いロードバランサー既存のAWSを使用するパターンのような特殊なケースでない限り通常は使用しない
実際に設定してPytonでHTTPサーバ起動

下記を実行。 1回こけてバージョン確認してモジュール名が違ってた。

[ec2-user@ip-10-x-xx-xxx ~]$ python -m SimpleHTTPServer 3000
実際にロードバランサに記載されてるDNS名をブラウザに入力するとhello worldが!

f:id:vioage:20211012200414p:plain

ここまでで7章は完了。

ちなみに今年発売された本だけど、AmazonさんのUI変更により、本書の内容と実際のAWSコンソールUIが大きく違った、、、、 しっかり内容確認しながら進めたら無事できました。

今後も頑張ります。

AWSで始めるインフラ構築入門読んで手を動かしてる2

前回の続き

hellhellmymy.hatenablog.com

前回は5章まで実施。5章がめっちゃハマった。。。。。

6章 Webサーバーを用意しよう

webサーバ構築後の多段SSHでめちゃくちゃ詰まる。 めっちゃハマった。

セキュリティグループの反映されるVPCネットワークが踏み台とwebサーバで違っていたのが原因。そこにたどり着くまでに問題切り分けでめちゃくちゃググりまくった。。。。

ping飛ばしたり、権限系調べたりした。

セキュリティグループ調べるとこまでは良かったけど、VPCネットワークをしっかり調べてなかったのが原因。 同じグループ名がデフォルトで2つあったからそこで間違えてたっぽい。。。。

.ssh/configの記述は

Host bastion
  Hostname xxxxxxxxx
  User ec2-user
  IdentityFile ~/.ssh/xxxx.pem

Host web01
  Hostname xxxxxxxx
  User ec2-user
  IdentityFile ~/.ssh/xxxx.pem
  ProxyCommand ssh bastion -W %h:%p

Host web02
  Hostname xxxxxxxxxx
  User ec2-user
  IdentityFile ~/.ssh/xxxx.pem
  ProxyCommand ssh bastion -W %h:%p

これを設定するだけで ssh bastionコマンドで踏み台(bastion)にssh ssh web01コマンドでbastionを介してwebサーバに多段sshができるようになった。

まだまだ頑張ります。 今回もハマったおかげで勉強になりました。

AWSで始めるインフラ構築入門読んで手を動かしてる1

どうも

AWSの本読んで実際にインフラ構築しはじめたのでメモ記事です。

こちらの本です。

全部で15章あります。

1章 AWSを始めよう

こちらではAWSとはなんぞやということについてザックリ説明してありました。ザックリしすぎてるので、全然意味不明な人は下記で紹介してる本を読んでおいてください。

hellhellmymy.hatenablog.com

hellhellmymy.hatenablog.com

2章 AWSアカウントを作ろう

ここから実際に手を動かします。クレカの準備をしてアカウント作成です。 サインイン、サインアウト、ダッシュボードの説明等です。

3章安全に作業するための準備

2章でルートユーザーしか作ってないので、個々のIAMユーザー作成やAWSベストプラクティスをもとに適切な設定をしていきます。 ルートユーザーのMFA有効化等。

4章 仮想ネットワークを作ろう

ここめちゃボリュームある。

VPC(仮想ネットワーク)を作っていきます。 VPC作成→

サブネット→4つ作成

インターネットゲートウェイ作成→アタッチ

publicなゲートウェイにNATゲートウェイを作成 (NATはネットワークアドレス変換)

ルートテーブル作成→ルート編集→ゲートウェイサブネットの関連付け

セキュリティグループの作成→踏み台サーバとロードバランサーに必要

ネットワーク関連の知識が必要になった。本のおかげで何となくやってることは分かる。要復習。

踏み台サーバーを用意しよう

外部から各リソースにアクセスする際に踏み台サーバーを通してからしかアクセスできないようにする。 踏み台サーバーは通過点なのでスペックは低くても問題ない。

キーペアの作成→踏み台サーバーの用意EC2インスタンスで作成→SSH接続確認

MacからのSSH接続確認時に下記エラー発生。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/xxx/.ssh/xxx.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/xxx/.ssh/xxx.pem": bad permissions
ec-2user@13.231.52.20: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

ググりつつも権限変更するが解決せずでしたが。 EC2インスタンス再度作り直したらイケた。。。。 詳細な原因が分からず悔しいですね。

最初に作ったインスタンスは終了しました。終了させると数日後に削除されるそうです。

とりあえず5章まで実施しました。 VPC作成がかなりボリューミーでEC2のSSH接続がエラってはまりました。

もっと頑張ります。

続く

なるほどデザインを読んでみた

こんにちわ

今回はこちらを読んでみました。

なるほどデザイン

知人がおすすめしてたという理由で読んでみました。 画面設計とかもやるので、デザイン的な知見も少しはあった方がいいかと思いました。 やっぱ表画面ってお客様が一番気にする部分なので、そこでの内容に関わると思います。

デザインのポイント

  • 視覚の解像度を上げる
  • 神は細部に宿る
  • 見た目で考える

上記の3つがポイントなのですが、内容的には虫眼鏡で見るように解像度を上げて細部へのこだわりや、意味も考えてデザインを考えることが必要でした。 世の中の何となく見ているホームページのたった一文字のフォント、大きさ、行間、等の「そんなところまでこだわるんかい!!」とツッコミたくなるところまで検討して突き詰めなければなりません。 デザインは個人の好み等にも左右されやすく何が正解というのもないので、本当に深い世界だなと思いました。 沼ですね。

色でも、配色であえて目立つ色にしてファーストビューで目に入るようにしたりする工夫、

例えばトイレマークの男は青、女は赤でイメージをつけて間違えないようなデザインになってることとかは「なるほど」と思ってしまいました。

本当、こんなところまで気を使ってなく、デザインとはこういうものなのかということが分かりました。

フロントエンジニアやwebデザイナー等を目指す人にはおすすめです。 また、普通にweb開発に携わる人はそういう視点や考え方があるよってことくらいは頭にあった方がいいと思いました。

でわ、また