【sendmail】mailqの処理の備忘録
メールシステムの運用を行うと、メールキューが溜まったり、またそれらをメンテナンスしたりと
比較的に、メールキューに近いところでシステム管理業務をすることが多いので、その備忘録。
なお、下記はsendmailをベースとした内容を前提としている。
目次
- 目次
- メールキューとは
- メールキューの再送間隔とかキューの保持期間とか。
- キューに保存されるファイル
- qfファイル
- dfファイル
- mailqの表示
- mailqの削除
- 実行中のmailq
- mailqから、キューIDのみ抽出する。
- 参考文献
メールキューとは
sendmailは、メールメッセージをすぐに配信することができなければ、 後で配信するためにそのメールメッセージを一時的に保存される。
この一時的に保存される場所のことが「キュー」と呼ばれる。
メールキューの再送間隔とかキューの保持期間とか。
確か、キューに保存されるとsendmailには以下のデフォルトが適用されると思ったが、定かでない。
- 再送間隔:1時間
- キュー内の保持最大期間:5日(当該期間を超過すると削除だったはず
※今度、しっかり調べる・・
キューに保存されるファイル
キューに保存されるメールメッセージは、2つに分類される
- qfファイル:メッセージヘッダ(キュー制御ファイル)
- dfファイル:メッセージ本文
qfファイル
メッセージヘッダ(キュー制御ファイル)を制御するqfファイルは 下記のような内容を保持している。
- メッセージの配信。(発信アドレスと受信者アドレス)
- メッセージの処理順序
- メッセージの期限切れによる削除
- メッセージの説明
実際には、下記のような内容となる。(※補足説明のために追加)
[root@mx-ns mqueue]# cat qfu7S5iNCP018797 V8(※バージョン) T1472363064(※キューに生成された日時) K1472364785(※最後に処理された時間) N2(※施行した回数) P210451(※優先度) I253/2/131555 MDeferred: mx1.mail.yahoo.co.jp.: No route to host(※キューに入った原因) Fbs $_localhost [127.0.0.1] $rESMTP $smx-ns.simalab.com ${daemon_flags} ${if_addr}127.0.0.1 S<ment@mx-ns.simalab.com> MDeferred: mx1.mail.yahoo.co.jp.: No route to host rRFC822; test@yahoo.co.jp RPFD:<test@yahoo.co.jp> H?P?Return-Path: <g>※以降はメールヘッダ情報 H??Received: from mx-ns.simalab.com (localhost [127.0.0.1]) by mx-ns.simalab.com (8.14.4/8.14.4) with ESMTP id u7S5iNCP018797 for <test@yahoo.co.jp>; Sun, 28 Aug 2016 14:44:24 +0900 H??Received: (from ment@localhost) by mx-ns.simalab.com (8.14.4/8.14.4/Submit) id u7S5iN7L018796 for test@yahoo.co.jp; Sun, 28 Aug 2016 14:44:23 +0900 H??From: ment@mx-ns.simalab.com H??Message-Id: <201608280544.u7S5iN7L018796@mx-ns.simalab.com> H??Date: Sun, 28 Aug 2016 14:44:23 +0900 H??To: test@yahoo.co.jp H??Subject: test H??User-Agent: Heirloom mailx 12.4 7/29/08 H??MIME-Version: 1.0 H??Content-Type: text/plain; charset=us-ascii H??Content-Transfer-Encoding: 7bit . [root@mx-ns mqueue]#
dfファイル
メール本文は、dfファイルとして、保存される。 たとえば、「test」というメール本文となるメールのdfファイルは 下記の通りとなる。
[root@mx-ns mqueue]# cat dfu7S5iNCP018797 test [root@mx-ns mqueue]#
mailqの表示
実際にメールキューを表示する場合は、「mailq」コマンドを実施する。
[root@mx-ns mqueue]# mailq /var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S5iNCP018797 5 Sun Aug 28 14:44 <ment@mx-ns.simalab.com> (Deferred: mx1.mail.yahoo.co.jp.: No route to host) <test@yahoo.co.jp> Total requests: 1 [root@mx-ns mqueue]#
mailqの削除
メールキューを削除する場合は、通常は/var/spool/mqueue/のディレクトリ上で、 下記のとおり、実行する。
rm -f [dq]f[キューID]
キューIDを「u81EtjjS018075」を削除したい場合、下記のとおり実施し、 qfファイルとdfファイルを一緒に実行する。
※[dq]の後のfを忘れずに付ける。
[root@mx-ns mqueue]# cd /var/spool/mqueue/ [root@mx-ns mqueue]# rm -f [dq]fu81EtjjS018075
実行中のmailq
mailqを確認したとき、メッセージIDの右側にアスタリスク(*)があるメールキューは そのメッセージがロックされていることを示す。
[root@mx-ns ~]# mailq /var/spool/mqueue (2 requests) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S7aDBu020301* 2 Sun Aug 28 16:36 <ment@mx-ns.simalab.com> <test@yahoo.co.jp> [root@mx-ns ~]#
ロックされているファイルを先述の削除方法で、実行した場合、
うまく削除できない場合がある。
その場合は、当該プロセスを強制的に削除してから、削除する。
ファイルをロックしているプロセスを確認する。
[root@mx-ns ~]# ps -ef | grep sendmail root 1360 1 0 Aug27 ? 00:00:02 sendmail: accepting connections smmsp 1369 1 0 Aug27 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 20394 1 0 16:41 ? 00:00:00 sendmail: ./u7S7f0FQ020391 mx3.mail.yahoo.co.jp.: user open root 20411 20396 0 16:41 pts/0 00:00:00 grep sendmail [root@mx-ns ~]#
上記で、u7S7f0FQ020391をロックしているプロセスID20394を強制停止する。
[root@mx-ns ~]# kill -9 20394 [root@mx-ns ~]# ps -ef | grep sendmail root 1360 1 0 Aug27 ? 00:00:02 sendmail: accepting connections smmsp 1369 1 0 Aug27 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 20415 20396 0 16:41 pts/0 00:00:00 grep sendmail [root@mx-ns ~]# [root@mx-ns mqueue]# service sendmail status sendmail (pid 1360) を実行中... sm-client (pid 1369) を実行中... [root@mx-ns mqueue]#
再度mailqを表示する。u7S7f0FQ020391のアスタリスク(*)が消えていることを確認。
[root@mx-ns ~]# mailq /var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S7f0FQ020391 5 Sun Aug 28 16:41 <ment@mx-ns.simalab.com> <test@yahoo.co.jp> Total requests: 1 [root@mx-ns ~]#
ファイルのロックが消えたら、当該キューIDを削除する。
[root@mx-ns ~]# cd /var/spool/mqueue/ [root@mx-ns mqueue]# rm -f [dq]fu7S7f0FQ020391 [root@mx-ns mqueue]# mailq /var/spool/mqueue is empty Total requests: 0 [root@mx-ns mqueue]#
mailqから、キューIDのみ抽出する。
mailqに大量のキューが溜まった場合、キューIDのみ 抽出したい場合のコマンド。(うまいかどうかはさておいて)
[root@mx-ns mqueue]# mailq | sed -e 's/\s\+/ /g' | cut -d' ' -f1 | grep "^u" u81FU89g026804 u81GU8bU009083 u81JleD0025444 u819U8pe002487* u81GU8bS009083 u81DU8CX029519 u81NSj96014787 u816U88x022456* u818U8rP020157 u81AU8jW017518 u816U891022456 u817U8En005000 u816U890022456 u819U8pd002487* u81G7g8M003629 u81BU8OZ032246 u817U8Eo005000* u818U8rQ020157* u817U8El005000* u817U8Em005000 u815U8VB007800* u81EtjjS018075* u81F7MY1020895 u81AQsV3016687 u7VI79np032048 u7UJU8fS020724* u7U1U8Ub011452 u7TNIIGO011127 u7T16129005631* [root@mx-ns mqueue]#
参考文献
- 作者: ブライアンコステールス,エリックオールマン,Bryan Costales,Eric Allman,中村素典,林秀幸
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/04
- メディア: 単行本
- 購入: 3人 クリック: 11回
- この商品を含むブログ (5件) を見る
【AWS学習記】WordPress 環境構築⑥~Wordpressへの接続および投稿
WordPress構築を行うにあたり、WEBサーバ用のEC2にApache/PHP/Wordpresの追加まで完了したため、 いよいよ、wordpressを利用する。
目次
構成
(構成図)
Wordpress用DBの作成
RDS上に、WordpressのDB作成を行う。ここでは、DB名を「wordpress」とした。
[ec2-user@ip-10-0-0-158 html]$ mysql -h aws-mysql-rds.ciszm1fnyhoj.ap-northeast-1.rds.amazonaws.com -u admin -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 68 Server version: 5.6.27-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> create database wordpress; Query OK, 1 row affected (0.02 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | innodb | | mysql | | performance_schema | | sys | | wordpress | +--------------------+ 6 rows in set (0.00 sec) mysql>
wordpressのセットアップ
次に、wordpresのセットアップを行う。
ここでは、下記のとおり、アクセスすると
http://公開用WEBサーバのEIP/wordpress
wordpresのようこそ画面が表示される。
Wordpressへのテスト投稿
投稿が正常に登録できたら、wordpressの記事一覧上にも表示されることを確認する。
【AWS学習記】WordPress 環境構築⑤~WEBサーバ用EC2インスタンスにApache/PHP/Wordpressの追加
WordPress構築を行うにあたり、WEBサーバ用EC2インスタンスおよびRDSへの接続まで完了したため、WEBサーバ用のEC2にApache/PHP/Wordpresを追加インストールする。
なお、WEBサーバ用のEC2(AmazonLinux)には、ec2-userで接続したものとして、以降の手順を記載。
目次
構成
(構成図)
Apacheのインストール
まず、下記のとおり、Apacheをインストールする。
[ec2-user@ip-10-0-0-158 ~]$ sudo yum -y install httpd
Apacheの起動
インストールしたApacheを起動する。起動時にメッセージがでるが、ここではとりあえず無視。
[ec2-user@ip-10-0-0-158 ~]$ sudo service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for ip-10-0-0-158 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ] [ec2-user@ip-10-0-0-158 ~]$
wordpressの取得
wordpressを下記のとおり、取得⇒解凍⇒Apacheの公開ディレクトリ(ここでは、/var/www/html/)に、コピーまで行う。
[ec2-user@ip-10-0-0-158 ~]$cd /usr/local/src [ec2-user@ip-10-0-0-158 src]$ sudo wget https://ja.wordpress.org/wordpress-4.0-ja.tar.gz [ec2-user@ip-10-0-0-158 src]$ sudo tar zxf wordpress-4.0-ja.tar.gz [ec2-user@ip-10-0-0-158 src]$ ls -l total 6344 drwxr-xr-x 5 nobody nfsnobody 4096 Sep 5 2014 wordpress -rw-r--r-- 1 root root 6489528 Dec 15 2014 wordpress-4.0-ja.tar.gz [ec2-user@ip-10-0-0-158 src]$ [ec2-user@ip-10-0-0-158 src]$ sudo cp -r wordpress /var/www/html/
PHPのインストール
次に、下記のとおり、PHPに関するパッケージをインストールする。 [ec2-user@ip-10-0-0-158 wordpress]$ sudo yum install -y php php-mysql
Apacheの設定
ApacheでPHPを利用できるようにするため、下記のとおりhttpd.confを開き、
[ec2-user@ip-10-0-0-158 wordpress]$ sudo vi /etc/httpd/conf/httpd.conf
下記を追記する。
AddType application/x-httpd-php .php
PHPの設定
ここでは、検証と学習のための環境なので、深く考えず、
PHP(/etc/php.ini)の設定は、下記のサイトに記載のPHPの設定をまんま設定した。
Apacheの再起動
Apacheを再起動し、ここまでの設定を反映させる。
[ec2-user@ip-10-0-0-158 ~]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: httpd: apr_sockaddr_info_get() failed for ip-10-0-0-158 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ] [ec2-user@ip-10-0-0-158 ~]$
Linux(CentOS)で不要起動ポートを停止するまでの備忘録
あまり使っていない野良サーバ(CentOS)に久しぶりにログインし、 オープンポートを調べた際に、見慣れないオープンポートを発見。
それらのポートを停止するまでの作業の備忘録。
目次
起動ポートの確認。
野良サーバに久しぶりにログインし、nmap でオープンポートを調べたことがそもそもの経緯。
[root@Linux ~]# nmap localhost Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-08-29 09:23 JST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1672 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 81/tcp open hosts2-ns 111/tcp open rpcbind 755/tcp open unknown 3306/tcp open mysql
見慣れない「755/tcp」ポートの起動を確認。
「unknown」となっていることから、調べてみることに。
起動ポートのプロセス確認。
下記記事を参考に、lsof コマンドとやらでプロセス確認
[root@Linux ~]# lsof -i:755 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME rpc.statd 4813 root 7u IPv4 9087 TCP *:755 (LISTEN) [root@Linux ~]#
不要サービスの停止。
rpc.statd とは下記のようなものらしい。
NFSは当該サーバでは、利用していないので、心置きなく停止。
[root@Linux ~]# service nfslock stop NFS statd を停止中: [ OK ] [root@Linux ~]#
ポートがオープンしていないことを確認
nmapを再度実行し、「755/tcp」ポートがオープンしていないことを確認
[root@Linux ~]# nmap localhost Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-08-29 09:26 JST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1673 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 81/tcp open hosts2-ns 111/tcp open rpcbind 3306/tcp open mysql Nmap finished: 1 IP address (1 host up) scanned in 0.038 seconds
後は、「nfslock 」をchkconfigで永続的に起動しないように設定。
たまにしか、やらないので忘れないようにメモ。
【AWS学習記】WordPress 環境構築④~WEBサーバ用EC2インスタンス起動
WordPress構築を行うにあたり、RDSの起動まで完了したため、WEBサーバ用のEC2のインスタンスを起動する。」 ここでも、極力aws-cliを利用する。
目次
- 目次
- 構成
- EC2の起動
- EIPの取得
- EIPの割り当て
- セキュリティグループへのインバウンドルールの追加
- teratermから公開用WEBサーバEC2インスタンスへの接続
- mysqlクライアントインストール
- 公開用WEBサーバEC2インスタンスからRDSへの接続
構成
(構成図)
EC2の起動
EC2には、AmazonLinuxを起動する。
なお、作成するにあたり、以下で、作成した下記のサブネットに該当するsubnetIDを指定する。
* 10.0.0.0/24 公開用WEBサーバを収容する。(SubnetIDはここでは「subnet-xxxbf105」)
root@Linux ~]# aws ec2 run-instances --image-id ami-374db956 --instance-type t2.micro \ > --security-group-ids sg-xxxafdb4 --key-name my-keypair \ > --subnet-id subnet-xxxbf105 { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 中略 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] } [root@Linux ~]#
EIPの取得
インターネットからアクセス可能となるようにEIPを取得する。
[root@Linux ~]# aws ec2 allocate-address { "PublicIp": "52.xxx.xx.247", "Domain": "vpc", "AllocationId": "eipalloc-xxx496ac" } [root@Linux ~]# [root@Linux ~]#
EIPの割り当て
取得したEIPを起動したEC2インスタンスに割り当てる。
[root@Linux ~]# aws ec2 associate-address --allocation-id eipalloc-xxx496ac \ > --instance-id i-xxxxxxf837cd79xx { "AssociationId": "eipassoc-1a1eed7d" } [root@Linux ~]#
セキュリティグループへのインバウンドルールの追加
起動したEC2向けにインバウンドルールを適用する。
ここでは、SSHとHTTPを許可する。
[root@Linux ~]# aws ec2 authorize-security-group-ingress --group-id sg-xxxafdb4 \ > --protocol tcp --port 22 --cidr 0.0.0.0/0 [root@Linux ~]#
[root@Linux ~]# aws ec2 authorize-security-group-ingress --group-id sg-xxxafdb4 \ > --protocol tcp --port 80 --cidr 0.0.0.0/0 [root@Linux ~]#
teratermから公開用WEBサーバEC2インスタンスへの接続
作成したEIP(ここでは、52.xxx.xx.247)に対して、teratermからSSH接続する。
※ここでは、ユーザー名「ec2-user」で接続し、以降の作業を行う。
mysqlクライアントインストール
接続した公開用WEBサーバEC2インスタンスから、RDSインスタンスに接続するため、
mysqlクライアントインストールを公開用WEBサーバEC2インスタンスにインストールする。
[root@Linux ~]# sudo yum install -y mysql
公開用WEBサーバEC2インスタンスからRDSへの接続
mysqlクライアントを利用して、RDSへ接続をしてみる。
接続するために、RDSへのエンドポイント名を確認する。
RDSの管理コンソールから、起動しているインスタンスを選択し、
下記のエンドポイント名を取得する。
エンドポイント名を取得したら、RDSへ下記のとおり接続できることを確認する。
[ec2-user@ip-10-0-0-158 html]$ mysql -h aws-mysql-rds.ciszm1fnyhoj.ap-northeast-1.rds.amazonaws.com -u admin -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 68 Server version: 5.6.27-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
【AWS学習記】WordPress 環境構築③~RDS設定
WordPress構築を行うにあたり、VPCの作成まで完了したため、続いてデータベースサーバを RDSを利用し、構築する。ここでも、極力aws-cliを利用する。
目次
構成
(構成図)
DBサブネットグループの作成
RDSインスタンスをVPC内で起動する場合、専用のDBのサブネットグループが 必要となるようなので、作成する。
なお、作成するにあたり、以下で、作成した下記のサブネットに該当するsubnetIDを指定する。
* 10.0.0.1/24 RDSを収容する。(SubnetIDはここでは「subnet-xxx9c098」。
* 10.0.0.2/24 今回はさしあたり利用しない(SubnetIDはここでは「subnet-xxxbf1bf」
[root@Linux ~]# aws rds create-db-subnet-group --db-subnet-group-name mysql-subnet --db-subnet-group-description mysql-subnet --subnet-ids subnet-xxx9c098 subnet-xxxbf1bf { "DBSubnetGroup": { "Subnets": [ { "SubnetStatus": "Active", "SubnetIdentifier": "subnet-xxxbf1bf", "SubnetAvailabilityZone": { "Name": "ap-northeast-1a" } }, { "SubnetStatus": "Active", "SubnetIdentifier": "subnet-xxx9c098", "SubnetAvailabilityZone": { "Name": "ap-northeast-1c" } } ], "DBSubnetGroupName": "mysql-subnet", "VpcId": "vpc-1fe4027b", "DBSubnetGroupDescription": "mysql-subnet", "SubnetGroupStatus": "Complete" } } [root@Linux ~]#
* --db-subnet-group-name・・・DBサブネットグループ名
* --db-subnet-group-description・・・DBサブネットグループ名の説明
* --subnet-ids・・・DBサブネットグループに設定するサブネットIDを指定
RDSインスタンスの起動
RDSインスタンスを起動する。ここでは、mysqlを指定する。
[root@Linux ~]# aws rds create-db-instance \ > --db-instance-identifier aws-mysql-rds \ > --allocated-storage 5 \ > --db-instance-class db.t2.micro \ > --engine MySQL \ > --master-username admin \ > --master-user-password password \ > --vpc-security-group-ids sg-xxxafdb4 \ > --db-subnet-group-name mysql-subnet \ > --backup-retention-period 1 \ > --port 3306 \ > --engine-version 5.6.27 \ > --license-model general-public-license \ > --multi-az \ > --no-publicly-accessible { "DBInstance": { "PubliclyAccessible": false, "MasterUsername": "admin", "MonitoringInterval": 0, "LicenseModel": "general-public-license", "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-xxxafdb4" } ], "CopyTagsToSnapshot": false, "OptionGroupMemberships": [ { "Status": "in-sync", "OptionGroupName": "default:mysql-5-6" } ], "PendingModifiedValues": { "MasterUserPassword": "****" }, "Engine": "mysql", "MultiAZ": true, "DBSecurityGroups": [], "DBParameterGroups": [ { "DBParameterGroupName": "default.mysql5.6", "ParameterApplyStatus": "in-sync" } ], "AutoMinorVersionUpgrade": true, "PreferredBackupWindow": "19:32-20:02", "DBSubnetGroup": { "Subnets": [ { "SubnetStatus": "Active", "SubnetIdentifier": "subnet-xxxbf1bf", "SubnetAvailabilityZone": { "Name": "ap-northeast-1a" } }, { "SubnetStatus": "Active", "SubnetIdentifier": "subnet-xxx9c098", "SubnetAvailabilityZone": { "Name": "ap-northeast-1c" } } ], "DBSubnetGroupName": "mysql-subnet", "VpcId": "vpc-xxx4027b", "DBSubnetGroupDescription": "mysql-subnet", "SubnetGroupStatus": "Complete" }, "ReadReplicaDBInstanceIdentifiers": [], "AllocatedStorage": 5, "BackupRetentionPeriod": 1, "PreferredMaintenanceWindow": "sat:16:22-sat:16:52", "DBInstanceStatus": "creating", "EngineVersion": "5.6.27", "DomainMemberships": [], "StorageType": "standard", "DbiResourceId": "db-2CMKMOIG35NYIDP7W6BAXI54SQ", "CACertificateIdentifier": "rds-ca-2015", "StorageEncrypted": false, "DBInstanceClass": "db.t2.micro", "DbInstancePort": 0, "DBInstanceIdentifier": "aws-mysql-rds" } } [root@Linux ~]#
* --db-instance-identifier・・・RDSインスタンス名を指定する
* --allocated-storage・・・RDSインスタンスで使うディスクを指定(GB)
* --db-instance-class ・・・RDSインスタンスタイプを指定
* --engine・・・DBエンジンを指定
* --master-username・・・管理者ユーザーを指定
* --master-user-password ・・・管理者ユーザーパスワードを指定
* --vpc-security-group-ids・・・VPCセキュリティグループを指定(後述)
* --db-subnet-group-name・・・先の手順で作成したDBサブネットグループ名を指定
* --backup-retention-period・・・自動バックアップの保存世代数を指定
* --multi-az・・・マルチAZ配置の有効・無効を設定
* --no-publicly-accessible・・・DBサブネットグループに設定するサブネットIDを指定
RDS起動確認
AWSコンソール側で、RDSインスタンスが起動したことを確認する。
RDS起動時に指定したVPCセキュリティグループについて
RDS起動時に「--vpc-security-group-ids」に指定するIDがよくわからなかったため。備忘録。
今回は、VPCのセキュリティグループのうち、10.0.0.0.0/16に紐づいているセキュリティグループ (ここでは、「 sg-xxxafdb4」)を指定した。
マルチAZ配置を有効にする際の注意点
無料枠にもかかわらず、またも請求。
明細を見ると下記のとおり。課金。
$0.052 per RDS T2 Micro Multi-AZ Instance hour (or partial hour) running MySQL
$0.24 per GB-month of provisioned storage for Multi-AZ deployments
マルチAZ=無料枠対象外ということか・・・
トホホ・・
【AWS学習記】WordPress 環境構築②~VPC作成
WordPress構築を行うにあたり、まずはVPCを作成してサブネットを作成する。 ここでも、極力aws-cliを利用する。
目次
構成
(構成図)
VPCの作成
まずは、今回作成するネットワーク全体を表すCIDRを入力し、VPCを作成する。 今回は、10.0.0.0/16をアドレス範囲とした。
[root@Linux ~]# aws ec2 create-vpc --cidr-block 10.0.0.0/16 { "Vpc": { "VpcId": "vpc-xxx4027b", "InstanceTenancy": "default", "State": "pending", "DhcpOptionsId": "dopt-027a3367", "CidrBlock": "10.0.0.0/16", "IsDefault": false } } [root@Linux ~]# [root@Linux ~]# aws ec2 describe-vpcs { "Vpcs": [ { "VpcId": "vpc-xxx4027b", "InstanceTenancy": "default", "State": "available", "DhcpOptionsId": "dopt-027a3367", "CidrBlock": "10.0.0.0/16", "IsDefault": false } ] } [root@Linux ~]#
作成された際のVpcIdを控えておく。(ここでは、vpc-xxx4027b)
サブネットの作成
作成したVPCにサブネットを作成する。
http://dev.classmethod.jp/cloud/aws/minimum-amazon-vpc-server-environment/
上記参照サイトを参考に、下記3つのサブネットを作成する。
- 10.0.0.0/24 WEBサーバを収容する。AZはap-northeast-1aとした。
- 10.0.0.1/24 RDSを収容する。AZはap-northeast-1cとした。
- 10.0.0.2/24 今回はさしあたり利用しない
コマンドを流して、実行する。
まずは、10.0.0.0/24
[root@Linux ~]# aws ec2 create-subnet --vpc-id vpc-xxx4027b --cidr-block 10.0.0.0/24 --availability-zone ap-northeast-1a { "Subnet": { "VpcId": "vpc-xxx4027b", "CidrBlock": "10.0.0.0/24", "State": "pending", "AvailabilityZone": "ap-northeast-1a", "SubnetId": "subnet-xxxbf105", "AvailableIpAddressCount": 251 } } [root@Linux ~]#
次に、10.0.0.1/24
[root@Linux ~]# aws ec2 create-subnet --vpc-id vpc-xxx4027b --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-1c { "Subnet": { "VpcId": "vpc-xxx4027b", "CidrBlock": "10.0.1.0/24", "State": "pending", "AvailabilityZone": "ap-northeast-1c", "SubnetId": "subnet-xxx9c098", "AvailableIpAddressCount": 251 } } [root@Linux ~]# ~]#
最後に、10.0.0.2/24
[root@Linux ~]# aws ec2 create-subnet --vpc-id vpc-xxx4027b --cidr-block 10.0.2.0/24 --availability-zone ap-northeast-1a { "Subnet": { "VpcId": "vpc-xxx4027b", "CidrBlock": "10.0.2.0/24", "State": "pending", "AvailabilityZone": "ap-northeast-1a", "SubnetId": "subnet-xxxbf1bf", "AvailableIpAddressCount": 251 } } [root@Linux ~]#
作成されたサブネットを下記のコマンドで確認しておく。
[root@Linux ~]# aws ec2 describe-subnets
インターネットゲートウェイの作成
VPCはデフォルトで、VPC内部のEC2インスタンスがインターネットと 接続できないとのことで、EC2インスタンスがインターネットに接続するための インターネットゲートウェイを作成する。
[root@Linux ~]# aws ec2 create-internet-gateway { "InternetGateway": { "Tags": [], "InternetGatewayId": "igw-xxx0463b", "Attachments": [] } } [root@Linux ~]#
作成された際のインターネットゲートウェイを控えておく。(ここでは、igw-xxx0463b)
作成されたインターネットゲートウェイを先に作成したvpc(ここでは、vpc-xxx4027b)にアタッチする。
[root@Linux ~]# aws ec2 attach-internet-gateway > --internet-gateway-id igw-xxx0463b \ > --vpc-id vpc-xxx4027b [root@Linux ~]# ※実行後の出力はされない。
下記のコマンドで確認しておく。
[root@Linux ~]# aws ec2 describe-internet-gateways { "InternetGateways": [ { "Tags": [], "InternetGatewayId": "igw-xxx0463b", "Attachments": [ { "State": "available", "VpcId": "vpc-xxx4027b" } ] } ] } [root@Linux ~]#
ルートテーブルの作成
VPCからインターネットへの接続するためのルートテーブルを作成する。 今回は、aws-cliでのやり方がよくわからなかっため、AWSコンソールから設定した。
VPCのダッシュボード画面より、[ルートテーブル]を選択する。その後、作成したvpc(ここでは、vpc-xxx4027b)を選択する。
[編集]する。
[別ルールの追加]をする。
下記を入力し、[保存]
* 送信先(0.0.0.0/0)
* ターゲットインターネットゲートウェイ(ここでは、igw-xxx0463b)
ルートテーブルが追加されたことを確認する。
最後に[サブネット]の画面で、下記のサブネットが作成したvpc(ここでは、vpc-xxx4027b)に 紐づいていることを確認する。
- 10.0.0.0/24
- 10.0.0.1/24
- 10.0.0.2/24