AWS構築 プライベートDBサーバー 忘備録
まずサブネットを作成
プライベートなものを作成する アベイラビリティゾーンはそろえる。
ルートテーブルの作成
10.0.0.0/16でで作成 VPC内にしか行かないよという設定。 作成してからサブネットに割り当てる。
セキュリティーグループ
どうやらこれは、EC2インスタンスに関連付けられているものらしい。
これによりDBサーバーへのアクセスをセキュリティーグループから絞り込むことができる。
セキュリティーグループの設定されている、インスタンスを指定できるということ
セキュリティーグループの名前は変更できない。
- プライベートなDBサーバーに接続する、インスタンスを指定できるし、セキュリティーグループも指定できる
- EC2インスタンス作成時に、セキュリティーグループを作成する。
EC2インスタンス作成時にWEBサーバーのセキュリティーグループを指定
sshとmysqlのポートだけ設定 そこからしかアクセスできないということ。
NATゲートウエイの設定
NATゲートウェイの設定をするときには、サブネットのIDが必要。
WEBサーバーに作成 する
先にコピペしておく。
NATをプロキシのようにして利用してDBサーバーにインストールしていく。
NATは外に出ていくので固定IPが必要。 ErasticIPを設定する。
インストール後、削除するので問題ない。
今度はプライベートサブネット(DB)のルーティングを変更する。 プライベートサブネットは、内部IPしか接続できない。 また、外へは、NATを通じて出ていくように設定する
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も削除しておかないと課金されるので
削除 もう削除してしまった後の画像、すみません。
DBサーバーのルートテーブルのNATゲートウエイも削除しておくこと!