TxKxZxWx's blog

AWS SAA、Javaの学習

AWS SAA取得に向けて 18日目 「VPCの概要①-3」 セクション6:VPC

セクション6:VPC
-----------------------------------------------------------

 

セクション6概要(続き)

 

 

 

 

VPCにサブネットを設定

一般的にVPCにCIDR/16を設定し、サブネットに/24の設定が推奨されている。

 

 

 

VPC外部接続

パブリックサブネットからインターネットに接続するにはインターネットゲートウェイが必要。

 

プライベートサブネットからインターネットに接続するにはNATゲートウェイがパブリックサブネットに必要。

 

VPCの外側にあるリソースとの通信にはパブリックのAWSネットワークかエンドポイントを利用する。

 

 

 

インターネット経路を設定

ルートテーブルとCIDRアドレスでルーティングを設定する。

 

  • ルートテーブルでパケットの行き先を設定。
  • VPC作成時にデフォルトで1つルートテーブルを作成。
  • VPC内はCIDRアドレスでルーティング。

 

 

 

VPCトラフィック設定

トラフィック設定はセキュリティグループまたはネットワークACLを利用する。

 

セキュリティグループ設定

  • ステートフル : 戻りトラフィックの設定はできるが、インバウンドのみ設定すれば戻りは自動で対応される。
  • サーバー単位で適用。
  • 許可のみをIn/outで指定。
  • デフォルトでは同じセキュリティグループ内通信のみ許可。
  • 必要な通信は許可設定が必要。
  • 全てのルールを適用。

ネットワークACLs設定

  • ステートレス : 戻りトラフィックも許可設定が必要。
  • サブネット単位で適用。
  • 許可と拒否をIn/outで指定。
  • デフォルトでは全ての送信元IPを許可。
  • 番号の順序通りに適用。

 

 

 

VPC設計ポイント

 

  • 設計時には将来の拡張も見据えたアドレッシングや他ネットワークとの接続性も考慮する。

  • CIDR(IPアドレス)は既存のVPC、社内のDCやオフィスと被らないアドレス帯を設定し、組織構成やシステム構成の将来像も考えながら前もって計画する。

  • VPC構成は自社業務に合せたVPC単体ではなくVPC全体の関係性も視野に入れる。

  • 組織とシステム境界からVPCをどのように分割するか将来構成も考慮して検討する。

  • 複数AZを利用して可用性の高いシステムを構築。

  • サブネットは大きいサブネットを使い、パブリック/プライベートサブネットへのリソースの配置をインターネットアクセス可否から検討する。

  • セキュリティグループを使ってリソース間のトラフィックを適切に制御する。

  • 実装や運用を補助するツールも有効利用し、VPC Flow Logsを使ってモニタリングできるようにする。

AWS SAA取得に向けて 17日目 「VPCの概要①-2」 セクション6:VPC

セクション6:VPC
-----------------------------------------------------------

 

 セクション6概要(続き)

 

 

 

CIDR (Classless Inter Domain Routing)

 

サブネットマスクの値を設定し、同じネットワークとして扱うIP アドレスの個数を調整できるIPアドレスの設定方法。

 

【表記方法】
196.51.100.XXX/16

サブネット → 左から16 桁目までが同じネットワーク範囲と指定。

 

 

左16桁分が利用できないようにロックされて変更不可となる。

【表記方法】
10.0.0.255/16

00001010 → ロック

00000000 → ロック

 

 

 

ロックされていない16 桁分のビットの間が有効な IPアドレスとして活用できる。

【表記方法】

10.0.0.255/16

.0/16 の前に00000000や11111111などを入れることが出来る。

 

【最小値】
10.0.0.0
【最大値】
10.0.255.255

 

 

 

CIDR


IPアドレスの範囲は今後の拡張も踏まえて十分な余裕がありつつ、多すぎないレンジを指定する。

 

10.0.0.255/16
推奨レンジ(65,534 アドレス)

 

 

VPCは /16 ~ /28 の CIDR 範囲を使用できる。

/16 ~ /28

 

 

既に利用されているなどして設定できないアドレスもある(/24 の例)

 

ホストアドレス → 用途

.0 → ネットワークアドレス

.1 → VPCルータ

.2 → Amazonが提供するDNS サービス

.3 → AWSで予約されているアドレス

.255 → ブロードキャストアドレス

 

 

サブネット

 

サブネットはCIDR範囲で分割したネットワークセグメント。

 

パブリックサブネット

10.0 .1 .0 /24

トラフィックがインターネットゲートウェイにルーティングされるサブネット。


プライベートサブネット

10.0 .2 .0 /24

⇒インターネットゲートウェイへのルートがないサブネット。


 

サブネットはVPC内に複数設置でき、プライベートとパブリックに分かれる。

 

VPCあたりのサブネット作成上限数はデフォルト200個。

 

 

 

サブネットはインターネットアクセス範囲を定義するために利用する。

 

パブリックサブネット

⇒インターネットと接続が必要なリソースを揃える。


プライベートサブネット

⇒インターネットから隔離することでセキュリティを高める。

 

 

 

CIDRの付与

VPCとサブネットにはCIDR(IPアドレス範囲)が付与され識別される。

AWS SAA取得に向けて 16日目 「VPCの概要①」 セクション6:VPC

セクション6:VPC
-----------------------------------------------------------

 

 セクション6概要

 

Image from Gyazo

 

 

 

VPCの概要:

VPCの基本的な仕組みや機能について。

 

 

Virtual Private Cloud(VPC)

VPCとはVirtual Private Cloud(VPC)の略。
AWS内にクラウドで作った仮想的なネットワークを構築するサービス。

 

  • 任意のIPアドレス範囲の選択して仮想ネットワークを構築。
    (範囲の仕方によってサブネットや様々なものを作成できる。)
  • サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーキング環境を完全に制御可能。
  • 必要に応じてクラウド内外のネットワーク同士を接続することも可能。
  • 複数の接続オプションが利用可能。
    ⚪︎ インターネット経由
    ⚪︎ VPN/専用線(Direct Connect) 

 

単一のVPCを構築すると単一AZの範囲に設定される。

 

同一リージョン内ではVPCは複数のAZにリソースを含めること が可能。

 

 

 

サブネットとVPC

VPCとサブネットの組合せでネットワーク空間を構築するVPCはサブネットとのセットが必須。

 

 

 

VPC設定手順 

 

  1. CIDR方式でアドレスレンジを選択
  2. AZのサブネットを選択
  3. インターネット経路を選択
  4. VPCへのトラフィック許可の設定 

 

 

 

 IPアドレス

IPアドレスは3桁(0~255)×4つの組合せで、各桁が8つのバ イナリ値の集合を表す。

 

 

 

 

 

 

 

 

 

 

 

 

 

AWS SAA取得に向けて 15日目 「EC2のまとめ」 セクション5:EC2

セクション5:EC2
-----------------------------------------------------------

 

 まとめ

 

 

  • 「EC2の概要」
    EC2の基本的な機能や仕組みについて理解していく。

  • 「EC2でWEBサーバーを 立ち上げる (ハンズオン)」
    EC2インスタンスを立ち上げた上でWEBサーバーとして起動し、WEBサイトを表示させる。

  • 「Elastic IPの設定 (ハンズオン)」
    EC2インスタンスIPアドレスを固定する方法を実践する。

  • Bashコマンドによる設定 (ハンズオン)」
    Bashシェルスクリプトを利用したEC2インスタンスの起動時の自動設定を実践する。

  • 「EBSの概要」
    EBSの基本的な機能や仕組みについて理解する。

  • 「AMIとSnapshotの活用 (ハンズオン)」
    AMIとSnapshotを利用したEC2インスタンスの複製・復元方法を実践する。

 

 

 


このセクションではEC2とEBSを使っていくストレージの概要を理解し、ハンズオンを実施した。

 

EC2ではwebサーバーを実際に立ち上げて、webサイトを表示させた。

さらに、Elastic IPという固定IPアドレスを設定する方法も学んだ。

 

EBSではAMI(amazon machine image)とsnapshotの両方を使用して複製を作ったり、リストアをした。

実際にEC2を管理する時はsnapshotをとるやり方をしっかり耐障害対応などを設定し、それをまわして管理することが必要になってくる。

また、AMIイメージをとることによって実際にサーバーを立ち上げるのを容易にしていく。

これらをいかに使い効率的、可用性や耐障害性を強める対応を考える必要がある。

 

AWS SAA取得に向けて 14日目 「AMIとSnapshotの活用(ハンズオン)その2」 セクション5:EC2

セクション5:EC2

-----------------------------------------------------------

「AMIとSnapshotの活用(ハンズオン)その2」

 

 

「EBSをコピーするスナップショットを作成する。」

 

左バーの中のボリュームをクリック

Image from Gyazo

 

 →どれが対象としたいボリュームなのかわからないが、アタッチ済み情報をクリックするとアタッチされているものがわかる。(今回は前回作ったweb-1aのボリュームサイズに対してスナップショットを作っていく。)

Image from Gyazo

 

該当ボリュームを選択し、アクション→スナップショットの作成。

Image from Gyazo

 

説明を入力しスナップショットの作成。(今回はわかりやすくsnapshot from web-1a) 

Image from Gyazo

 

スナップショット作成完了。

Image from Gyazo

 

 スナップショットに行くと「snapshot from web-1a」が作成されたことがわかる。

Image from Gyazo

  

このスナップショットを使って新しいボリュームを作り復元をしていく。

 まだデータが反映されていないインスタンス「web-1b」は停止しておく。

Image from Gyazo

 

元々あったボリュームを停止(デタッチ)していく。

アタッチ済み情報の「/dev/xvda」をコピーしておく。

 アクション→ボリュームのデタッチ。

Image from Gyazo

 

デタッチが終了したらスナップショットに行き、アクション→ボリュームの作成。

Image from Gyazo

 

ボリュームタイプなどはそのままでボリュームの作成。 

Image from Gyazo

 

ボリュームに行くと復元できたことがわかる。

新しくデタッチしたいインスタンスに新しいものとしてアタッチしていくことでデータが反映されたボリュームを使用することができる。

Image from Gyazo

 

復元した方を選択し、アクション→ボリュームのアタッチ。 

Image from Gyazo

 

 インスタンスは「web1-b」を選び、デバイスを先ほどコピーした「/dev/xvda」に変更してアタッチ。

Image from Gyazo

 

アタッチが完了したらインスタンスを再起動(再開)。

先ほどの「/dev/xvda」が変更されていないとエラーが出てしまう。 

Image from Gyazo

 

 

ターミナルで実際に反映されているか見ていく。

web1-bのIPアドレスで接続。

ssh ec2-user@54.65.138.128 -i (秘密鍵).pem

 

→ 権限を移動。

sudo su - 

 

→フォルダ確認。

cd /var/www/html

 

→lsをして現在のフォルダを確認するとindex.htmlがあり反映されていることがわかった。

 

→サービスを立ち上げて実際に確認する。

service httpd start

 

→ブラウザ上でIPアドレスを入力すると「Hello World」が表示され反映されたことがわかる。

これでリストアがうまくいった。

AWS SAA取得に向けて 13日目 「AMIとSnapshotの活用(ハンズオン)」 セクション5:EC2

セクション5:EC2

-----------------------------------------------------------

「AMIとSnapshotの活用(ハンズオン)」

 

 

 

実施する内容:

  1. AMIを作成して、新しいインスタンスに反映する。
  2. インスタンスのAMI反映状況を確認する。
  3. Snapshotを作成して、EBSを複製する。
  4. EBSの複製結果を確認する。

 

 

「AMIとSnapshotを使って複製を作っていく。」

EC2→インスタンス

→該当のインスタンスが稼働中の場合は停止する。

(イメージを作るには停止するのが推奨されている。しかし実際に運用している場合には停止できない場合もあり稼働中でもできるためなるべく停止する。)

→AMIのイメージを作るためにアクション→イメージ→イメージの作成

 

Image from Gyazo

 

→イメージ名、イメージの説明を入力してイメージの作成。

Image from Gyazo

 

→左にあるAMIに行くと作成されていることが確認できる。

 

AMIの作成が終了したら起動する。

インスタンスの作成からAMIを選択することもできるが、今回はAMIの起動ボタンから実施。

Image from Gyazo

 

→無料利用枠のt2.microを選択し次のステップ。

Image from Gyazo

 

→モニタリングや終了保護の有効化が選択できる。

終了保護の有効化とはインスタンスを削除するときの権限を標準でアクションに表示させない機能。

アクション画面からインスタンスの停止ができなくなる。

誤って削除されてしまうと大きな影響があるためすぐにクリックできないようにする。

実際にアプリケーションを作る際にはミスを少なくするためにも有効化した方が良い。

Image from Gyazo

 

→ストレージの追加はそのままで次のステップ。

→キーと値を入力しタグを作成。

Image from Gyazo

 

→「セキュリティグループの設定」HTTPとHTTPSを追加。

Image from Gyazo

 

→キーペアを選択しインスタンスの作成。

Image from Gyazo

 

インスタンスが作成されたらターミナルで確認していく。

Image from Gyazo

 

作成したIPアドレスで入り、「sudo su -」で移動、「yum list installed | grep httpd」でインストールされたパッケージを確認。

アパッチのhttpdのサーバーがインストールされていることがわかる。

先ほどAMIでインストール済みのインスタンスのイメージを作ったので、それを反映したAMIでインスタンスを起動したのでアパッチが既にインストールされた状態で新しいインスタンスを起動させることができた。

つまり、既にOSのセッティングを予め済ませて、それを複製したい場合はAMIを使って新しいインスタンスを作ることによって効率的にサーバーを立てることができる。

 

Java学習 22日目 「文字列や配列もオブジェクトになっている 」

Java入門編7: クラスを理解しよう

 

 

06:文字列や配列もオブジェクトになっている

 

 

プログラミング言語Javaは文字列や配列がオブジェクトになっている。

 

public class Main {

  public static void main(String args) {

    String text = new String("1234");

    System.out.println(text); //1234を表示

    System.out.println(text.length()); //textメソッドの文字数カウント

 

    int numbers = new int[4];

    for (int item : numbers) {

      System.out.print(item + ", ");

    }

    System.out.println("");

    System.out.println(numbers.length);

  }

}

 

 

 

Javaでは文字列や配列はオブジェクトになっている。

文字列はStringクラスのオブジェクト。

 

・今までは↓のように記述していた。

    String text = "hello world";

    System.out.println(text);

 

 

・以下のように他のオブジェクトを作るときと同じように記述も出来る。

    String text = new String("1234");

    System.out.println(text);

 

 

・文字列はオブジェクトなのでメソッドを呼び出すことが出来る。

例えばlengthメソッドでは文字数を調べることが出来る。

    System.out.println(text.length());

 

 

・配列もnewを使って生成することが出来る。

    int[] numbers = new int[4];

    for (int item : numbers) {

      System.out.print(item + ", ");

    }

 

要素が4個の整数の配列を作ってループで出力できる。

newで配列オブジェクトを作っている。

 

 

「length()とlength」

 

文字列.length()は文字列の文字数を返し、配列.lengthは配列の要素の数を返す。

 

 

文字列や配列のデータはどれもオブジェクトになっており、メソッドを呼び出して処理することが出来る。

Javaでは、int, doubleはオブジェクトではない。