LoginSignup
6
14

More than 5 years have passed since last update.

[AWS]EC2初期設定でとりあえず設定したほうがよいもの

Posted at

AWSのEC2を利用するときに基本として設定するものをまとめる。
WebサーバでもBatchサーバでも以下をとりあえず以下を設定しておくとよいのではないでしょうか。

[設定する内容]

  • マシン起動時スクリプト(per-boot)  
    • SWAPファイル設定
    • HOST名設定
  • ファイルディスクプリタ設定、スレッド設定
    • limit.conf
    • sysctl.conf
[マシン起動時スクリプト(per-boot)]

SWAPファイル設定を起動時に実施。EC2はデフォルトでSWAP設定がない。
(ほぼ参照:http://dev.classmethod.jp/cloud/ec2linux-swap-bestpractice/)

create_swap.sh
#!/bin/sh

SWAPFILENAME=/swap.img
MEMSIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
MEMSIZE_D=`expr $MEMSIZE \* 2`
MEMSIZE_H=`expr $MEMSIZE / 2`

if [ $MEMSIZE -lt 2097152 ]; then
  SIZE=${MEMSIZE_D}k
elif [ $MEMSIZE -lt 8388608 ]; then
  SIZE=${MEMSIZE}k
elif [ $MEMSIZE -lt 67108864 ]; then
  SIZE=${MEMSIZE_H}k
else
  SIZE=4194304k
fi
fallocate -l $SIZE $SWAPFILENAME && chmod 600 $SWAPFILENAME && mkswap $SWAPFILENAME && swapon $SWAPFILENAME

HOST名設定を起動時に実施 EC2のタグ:NameがそのままHost名になるため、SSHログイン後の判別が簡単。

set_hostname.sh
#!/bin/sh

REGION=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/.$//'`

INSTANCE_ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`

NAME_TAG=`/usr/bin/aws ec2 describe-instances --region ${REGION} --instance-ids ${INSTANCE_ID=} --query 'Reservations[].Instances[].Tags[?Key==\`Name\`].Value' --output text`

INSTANCE_NAME="${NAME_TAG}"

hostname ${INSTANCE_NAME}
sed -i -e "s/^HOSTNAME=.*\$/HOSTNAME=${INSTANCE_NAME}/g" /etc/sysconfig/network
[ファイルディスクプリタ設定、スレッド設定]

FD設定。大体やり忘れてアプリケーション実行時に足りなくなる。
また、スレッド数も同じことになるので、kernel.threads-maxで設定しておく。

/etc/security/limits.conf
#以下を末尾に追加
* soft nofile 65536
* hard nofile 65536
/etc/sysctl.conf

fs.file-max = 100000
kernel.threads-max = 100000
6
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
14