AWS構築 プライベートDBサーバー 忘備録

まずサブネットを作成

プライベートなものを作成する アベイラビリティゾーンはそろえる。

ルートテーブルの作成

10.0.0.0/16でで作成 VPC内にしか行かないよという設定。 作成してからサブネットに割り当てる。

セキュリティーグループ

どうやらこれは、EC2インスタンスに関連付けられているものらしい。

これによりDBサーバーへのアクセスをセキュリティーグループから絞り込むことができる。 セキュリティーグループの設定されている、インスタンスを指定できるということ セキュリティーグループの名前は変更できない。
- プライベートなDBサーバーに接続する、インスタンスを指定できるし、セキュリティーグループも指定できる

  • EC2インスタンス作成時に、セキュリティーグループを作成する。

f:id:happy_teeth_ago:20190103172652p:plain

EC2インスタンス作成時にWEBサーバーのセキュリティーグループを指定

sshとmysqlのポートだけ設定 そこからしかアクセスできないということ。

f:id:happy_teeth_ago:20190103172514p:plain

NATゲートウエイの設定

NATゲートウェイの設定をするときには、サブネットのIDが必要。
WEBサーバーに作成 する 先にコピペしておく。

NATをプロキシのようにして利用してDBサーバーにインストールしていく。

NATは外に出ていくので固定IPが必要。 ErasticIPを設定する。

インストール後、削除するので問題ない。

今度はプライベートサブネット(DB)のルーティングを変更する。 プライベートサブネットは、内部IPしか接続できない。 また、外へは、NATを通じて出ていくように設定する f:id:happy_teeth_ago:20190103182755p:plain

DBサーバーへWEBサーバーを経由して接続

コマンド
まず秘密鍵をローカルPCからWEBサーバーへコピー
パーミッションは400にしておく

もちろんWEBサーバーで ssh-keygenして、公開鍵をDBサーバーにおいても良い。

scp -i hogehoge.pem hogehoge.pem ec2-user@[WEBサーバーのIPアドレス]:/home/ec2-user

//==
//初めのhogehoge.pem はWEBのpemファイル その次はDBサーバーのpemファイル   :ファイルの場所(WEBサーバー)

WEBサーバへ接続

ssh -i hogehoge.pem ec2-user@[WEBサーバーのIPアドレス]

DBサーバへ接続

ssh -i hogehoge.pem ec2-user@[WEBサーバーのIPアドレス]

しかしこれでは、プライベートなDBサーバーを構築できない。

そこでNATゲートウエイを作成

NATゲートウエイはWEBサーバーのサブネットに作成する。 サブネットIDをコピーしておく。 外に出ていくので、elasticIPが必要 ルーティングテーブル プライベートサブネットのルートテーブルを選択する。 プライベートの0.0.0.0はNATゲートウエイにルーティングされている必要がある。

DBサーバーから

$ sudo yum update

を実行する mySQLのインストール

$ sudo yum install mysql-server

//自動起動on
$sudo chkconfig mysqld on

//起動
$sudo service mysqld start

パスワード設定
$ mysqladmin -u root password エンターキー

WEBサーバーからリモートでも接続できる設定

mysql> grant all privileges on *.* to root@"%" identified by 'パスワード' with grant option;

//上記が5.7から利用できなくなっている可能性あり。
その場合
//user作成 @IPは接続元のWEBサーバーで良いと思う。
create user "user名"@IPアドレス identified by "パスワード";

//権限設定
grant all on foo_db.* to "user名"@IPアドレス identified by "パスワード";


今度はログアウトして

exit


WEBサーバーからつなげてみる。

//==ipはDBサーバーのip
mysql -h 10.0.40.20 -u root -p

//パスワード入力欄が表示される
>mysql と表示されたら成功

後は各言語でプログラムの中で、DBサーバーの変更を設定していく

Rails database.ymlの設定

host: DBサーバーのIPアドレス


もうNATはいらないので削除しておく。

NATの削除とともに、EC2の Erastic IPも削除しておかないと課金されるので

削除 もう削除してしまった後の画像、すみません。 f:id:happy_teeth_ago:20190103190627p:plain

DBサーバーのルートテーブルのNATゲートウエイも削除しておくこと!