質問: AWSで利用するOSディストリビューションについて質問させて頂きます AWSでもCentOSが利用可能のようですが、CetOSライクなAmazonLinuxOSもあります 情報によると、Amazon LinuxはAWSクラウドに最適化されたLinuxディストリビューションであり、 AWS CLI等のさまざまなツールがすでにインストール済みなど、AWS機能を使う分には相性がいいみたいなのですが、 実際サービスとしてLinuxOS・phpを用いてサービスとして使う時、どちらのディストリビューションを使用した方が いいのか迷っています。 * 質問1.パッチ適用について AmazonLinuxも半年ごとにパッチ適用されたりするようですが、 CentOSのように、yum update phpなど実行しないで AmazonLinuxのパッチを適用する事でphpのアップデートもされる事でいいのでしょうか * 質問2.EOLについて また、AmazonLinuxにはEOLの概念もなく、継続的にパッチ適用されていくものなのでしょうか * 質問3- 使うべきディストリビューションについて CentOS、AmazonLinux、どちらを利用した方がいいのかなどご助言頂けますと幸いです よろしくお願い致します
回答: ご認識のとおりですがAmazon Linuxは、 AWSが開発したAWS基盤で最大限のパフォーマンスが出せるように作られているLinuxです。 RHELをベースとしていますので、動作的にはCentOSと殆ど変わりません。 CentOSとの差異は、これぐらいになります。 | | CentOS | Amazon Lnux | | --- | --- | --- | | SELinux | デフォルト有効 | デフォルト無効 | | デフォルトユーザ | root | ec2-user | | yumリポジトリ | GLOBAL回線利用 | AWS専用線利用 | 質問の回答としては以下になります。 > > 質問1.パッチ適用について > > AmazonLinuxも半年ごとにパッチ適用されたりするようですが、 > > CentOSのように、yum update phpなど実行しないで > > AmazonLinuxのパッチを適用する事でphpのアップデートもされる事でいいのでしょうか > > > CentOSと全く同じです。 phpをyumで管理させRPMでインストールした場合、`yum update` を使います。 ソースコンパイルでインストールした場合は、自分で更新する事になります。 > > 質問2.EOLについて > > また、AmazonLinuxにはEOLの概念もなく、継続的にパッチ適用されていくものなのでしょうか > > > Amazon Linux AMIはローリングリリースで構築、管理されていますので、 AWSが続く限り、またはAWSが開発方針を変更しない限り半永久的に続けられます。 1本の川のようなパッケージで、AMI自体はその時点でのスナップショットにすぎないと考えてください。 #2012年からAmazon Linuxを使っていますが、今のところ方針変更はありません。 Amazon Linuxの更新状況はこちらから参照できます。 Amazon Linux AMI Security Center パッケージアップデートについては不具合やセキュリティホールは、すぐに対応されますが それ故に`yum update`するとカーネルのアップデートも必ず走るようになっています。 従いまして、通常運用では問題ないのですが、運用上カーネルを固定したい場合があるかと思います。 その場合は、以下のような対応が必要になります。 AMI を特定のバージョンに固定するにはどうすればよいですか? また、AMIからEC2インスタンスとしてローンチする際も同様のアップデートが走ることになりますので 回避したい場合は、AWSマネージメントコンソール上などでセキュリティアップデートを無効にする設定をしなければなりません。 Q: 初回起動時に非常に重要なセキュリティアップデートの自動インストールを無効にするにはどうすればよいですか? > > 質問3- 使うべきディストリビューションについて > > CentOS、AmazonLinux、どちらを利用した方がいいのかなどご助言頂けますと幸いです。 > > > AWSを活かしたいのであればAmazon Linuxの利用を推奨しておきます。 多くのAWSユーザーもAmazon Linuxを使っています。 ただし、CentOSでの利用でも何も問題はありません。 あと、Amazon LinuxのDockerイメージが用意されているため、 力技でローカル環境に持ってくることも可能なのですが、 開発環境は社内などのローカル環境にCentOS、 ステージング環境と本番環境はAWS上にAmazon Linuxというような構成の システム環境構築を推奨しておきます。 追記 === すみません。上記に言葉が抜けていました。 CentOSを構築するのはローカル環境になります。 AWSのCentOSではありませんので注意してください。 開発側は、全ての環境は統一しておくのは当然のことだと思っているため、 そのように言われるのは明々白々のことだと思います。 従って、本来は全てAWSに構築するのが良い環境となります。 しかしながらインフラ側に求められることというのは、開発者の言い分とインフラ担当が判断している運用コスト観点(ここだとAWSの利用金額)をあわせて、総合的に判断しプロジェクト環境を構築するのが使命となります。 AWSに環境構築をしても良いのですが、インフラ担当は少しでもコストを下げなければなりません。 #多くのプロジェクトでは、CentOSをローカル環境に構築して、AWSにアプリケーションをデプロイする方法を取っています。 AWSは、スポットでの検証などはかなり有益で、ランニングコストも他のパブリッククラウドサービスに比べて遥かに安いものになっていますが、ロングランで見た場合、オンプレ環境とさほど変わらなくなってしまいます。 従って、使っていない無駄な金額(HDDやデータ通信にお金がかかる)はどんどん縮小した方が良いため、開発環境などはAWS外のローカルでのVM環境などにしてコストを抑える必要があります。 AWSは普通に使っても安いのですが、安いだけにコストを更に抑えるテクニックがあります。 それを身に着けていくことがインフラ側が常に考えておかないといけないことになります。 #極論で言ってしまえば、EC2インスタンスを使うことをやめて、サーバレスにしていくことが将来求められることになります。 バージョンに関しては、バージョン違いでの動作差異を無くしたいがために、どのプロジェクトにおいてもバージョンを統一していると思います。 メジャーバージョンとマイナーバージョンを揃えてさえおけば(できれば、マイクロバージョンも)パッケージが違えども、アプリケーションの動作に差異が発生することは特にありません。 もし本当に統一したいのであれば、ソースコンパイル(make installの方法)でやってしまえば良いかと思います。