AWS/EC2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*EC2 概要 [#qd362611]
サーバーインスタンスだが、他のサービスもEC2ベースとしてお...
*構成要素 [#la0054b2]
|EC2|サーバー本体|
|EBS|ディスク|
|ENI|ネットワークインターフェース。1つのEC2に複数アタッ...
**EC2 ライフサイクル [#j3d29ec5]
起動、停止、terminateは削除なので間違わないように
**Userdata [#s568c7da]
インストール後に実行するコマンド。terraformに渡すにはbase...
#!/bin/bashは必要でないと動かない&sudo不要
sudo yum install -y java-1.8.0-openjdk-devel
-JSTにしてSSHポートを10022に変更する例(AmazonLinux3ではポ...
#!/bin/bash
# set hostname
hostnamectl set-hostname ec2host
# UTC to JST
cp /usr/share/zoneinfo/Japan /etc/localtime
sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo"|g'...
echo "LANG=ja_JP.UTF-8" > /etc/sysconfig/i18n
# change ssh port
/bin/sed -i -e 's/^#Port 22$/Port 1022/' /etc/ssh/sshd_c...
service sshd restart
-docker (amazon linux 2023)
sudo dnf install -y docker
sudo systemctl enable --now docker
DOCKER_CONFIG=${DOCKER_CONFIG:-/usr/local/lib/docker}
sudo mkdir -p $DOCKER_CONFIG/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases...
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-c...
#ElasticSearch
sudo sh -c 'echo "vm.max_map_count = 262144" >> /etc/sys...
sudo sysctl --system
# other tools
sudo yum install -y git tmux
# swap
sudo dd if=/dev/zero of=/swap bs=1M count=2048
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap
sudo sh -c 'echo "/swap none swap ...
# goofys
sudo dnf install -y fuse
curl -L https://github.com/kahing/goofys/releases/latest...
chmod +x /usr/local/bin/goofys
yum update -y
sudo yum install -y git
sudo yum install -y nodejs
sudo yum install -y mariadb105-server-utils
sudo yum install -y java-11-amazon-corretto
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.j...
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins....
sudo yum install -y jenkins
sudo yum install -y httpd
sudo systemctl start jenkins
# npm
curl -sL https://rpm.nodesource.com/setup_12.x | sudo ba...
sudo yum install -y --enablerepo=nodesource nodejs
***node 20 [#g4747388]
sudo dnf install -y nodejs20.x86_64
sudo dnf install -y git
sudo dnf install -y mariadb105-server-utils
***ubuntu jenkins [#b755b0c3]
sudo apt update
sudo apt install -y openjdk-8-jdk
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stabl...
sudo apt update
sudo apt-get install -y jenkins
**DNATを作成 [#x0796c21]
-ポートが開放されていないときにhttpのポートを利用して、接...
まずはSGを開放する。
#!/bin/bash
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo sh -c "echo 0 > /proc/sys/net/ipv4/conf/eth0/send_...
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j ...
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo service iptables save
**MySQLクライアントインストール [#k7a7e31f]
*cli [#za97f3c1]
-特定のタグがあるものを抽出(値は何でも良い)
aws ec2 describe-instances --filters "Name=tag:Group,Val...
-タグで絞ってInstanceId取得(NameならばGroupのところをName...
aws ec2 describe-instances --filters "Name=tag:Group,Val...
-Stoppedのインスタンスを取得
aws ec2 describe-instances | jq -r '[.Reservations[].Ins...
-runningのインスタンスを取得
aws ec2 describe-instances | jq -r '[.Reservations[].Ins...
-target-groupに所属するインスタンスID
aws elbv2 describe-target-health --target-group-arn TG_A...
-起動(上のシェルと合わせると複数起動可能)
aws ec2 start-instances --instance-ids インスタンスID
aws ec2 stop-instances --instance-ids $(aws ec2 describe...
-タグ付け
aws ec2 create-tags --resources インスタンスID --tags Ke...
-lambda
aws lambda invoke --function-name randomfailure --profil...
*EBS [#ye41fadf]
Elastic Block Storeの略。スナップショット機能など多彩な機...
**EBSの種類 [#q5651211]
GP2は容量を増やすとパフォーマンスが伸びる。Provisioned IO...
*AMI [#e386e448]
マシンのOSイメージのこと。マイクロインスタンスであれば、R...
*EC2初期設定 [#r784a890]
**Cloudinit [#w44c5a7f]
起動時に設定などを実施できるcloud-init(yml)かシェルスクリ...
**コンソールから入れる場合 [#e26f12fe]
#!/bin/bash
#TIMEZONE JST
/bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
yum install -y postfix
yum install -y mysql-server
yum install -y nginx
# start service
/etc/init.d/postfix start
/etc/init.d/mysqld start
/etc/init.d/nginx start
# enable service auto start
chkconfig --level 345 postfix on
chkconfig --level 345 nginx on
chkconfig --level 345 mysqld on
*EC2インスタンスの作成からログインまで [#c821f1f7]
無料枠を超えないようにインスタンスはT2.micro、その他はデ...
**インスタンスの作成手順詳細 [#nb48d03b]
+AMIを選ぶ
+6. Configure Security GroupでSGを指定する
**インスタンスタイプ [#h1acbc5e]
|名称|備考|
|t1,t2|CPUがバースト可能。しかし低コストなので常時CPUが必...
|c1,c2|CPUに重点を置いたタイプ。|
|r3|データベース向け|
**Elastic IP [#j220cd0e]
静的なIPでインスタンスにひもづけることができる。起動して...
一応使わないでも再起動しなければ起動時に動的に割り当てら...
*ELB [#s3dd8aa7]
Elastic Load Balancing。インスタンスを複数ぶら下げて振り...
**Internal ELB [#y2f14c2c]
名前解決はpublicなDNSで行うため、利用側にインターネット接...
**ELB負荷対策 [#vc930c5a]
ELBのスケールアップ・スケールアウトはAWS側で勝手にやって...
こちらで負荷監視する項目はCloudWatchから取得できる処理数...
**スティッキーセッション [#p4395bda]
クラウド時代にはあまり好ましくはないが、特定のサーバーに...
**元アクセスのリクエストヘッダ [#e02f337f]
-以下のヘッダーについてくるのでアクセスログのフォーマット...
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED_PORT
HTTP_X_FORWARDED_PROTO
**ELBのサブネット [#g1d8a78c]
所属するサブネットに最低8IPの空きが必要。
*EC2 オートスケール [#j212581c]
負荷状況に合わせて増やしたり、一定数以上の稼働を保証させ...
*Security Group [#o2df0a78]
**基本 [#l4ef6d13]
インスタンス単位で設定。サブネット単位で設定するACLよりも...
**HTTPの外回りと内回り [#g33f7ada]
同じインスタンスにアクセスする場合PrivateIP指定の場合は内...
**デフォルトSG [#e8ba0d7a]
基本的にプライベート内部は全部の通信が許可されるデフォル...
特に支障がない限りこれを各インスタンスにつけておくことを...
デフォルトSGを持っているのものを全部許可する設定になって...
*ネットワークACL [#n2b8dbaa]
サブネット単位で設定するが、ポート単位で指定すると動的に...
*EC2複製 [#uccfb57c]
**AMIを作成して複製 [#wbef98cb]
固定PrivateIPだと既存EC2消さないとダメ
**EBSボリューム複製して既存インスタンスにアタッチ [#e7ab0...
これは複製ではなく障害復旧だな。
**EBSボリュームを複製して手動マウント [#m2a6c4f3]
上記2パターンがうまくいかないときの最終手段。
終了行:
#contents
*EC2 概要 [#qd362611]
サーバーインスタンスだが、他のサービスもEC2ベースとしてお...
*構成要素 [#la0054b2]
|EC2|サーバー本体|
|EBS|ディスク|
|ENI|ネットワークインターフェース。1つのEC2に複数アタッ...
**EC2 ライフサイクル [#j3d29ec5]
起動、停止、terminateは削除なので間違わないように
**Userdata [#s568c7da]
インストール後に実行するコマンド。terraformに渡すにはbase...
#!/bin/bashは必要でないと動かない&sudo不要
sudo yum install -y java-1.8.0-openjdk-devel
-JSTにしてSSHポートを10022に変更する例(AmazonLinux3ではポ...
#!/bin/bash
# set hostname
hostnamectl set-hostname ec2host
# UTC to JST
cp /usr/share/zoneinfo/Japan /etc/localtime
sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo"|g'...
echo "LANG=ja_JP.UTF-8" > /etc/sysconfig/i18n
# change ssh port
/bin/sed -i -e 's/^#Port 22$/Port 1022/' /etc/ssh/sshd_c...
service sshd restart
-docker (amazon linux 2023)
sudo dnf install -y docker
sudo systemctl enable --now docker
DOCKER_CONFIG=${DOCKER_CONFIG:-/usr/local/lib/docker}
sudo mkdir -p $DOCKER_CONFIG/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases...
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-c...
#ElasticSearch
sudo sh -c 'echo "vm.max_map_count = 262144" >> /etc/sys...
sudo sysctl --system
# other tools
sudo yum install -y git tmux
# swap
sudo dd if=/dev/zero of=/swap bs=1M count=2048
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap
sudo sh -c 'echo "/swap none swap ...
# goofys
sudo dnf install -y fuse
curl -L https://github.com/kahing/goofys/releases/latest...
chmod +x /usr/local/bin/goofys
yum update -y
sudo yum install -y git
sudo yum install -y nodejs
sudo yum install -y mariadb105-server-utils
sudo yum install -y java-11-amazon-corretto
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.j...
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins....
sudo yum install -y jenkins
sudo yum install -y httpd
sudo systemctl start jenkins
# npm
curl -sL https://rpm.nodesource.com/setup_12.x | sudo ba...
sudo yum install -y --enablerepo=nodesource nodejs
***node 20 [#g4747388]
sudo dnf install -y nodejs20.x86_64
sudo dnf install -y git
sudo dnf install -y mariadb105-server-utils
***ubuntu jenkins [#b755b0c3]
sudo apt update
sudo apt install -y openjdk-8-jdk
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stabl...
sudo apt update
sudo apt-get install -y jenkins
**DNATを作成 [#x0796c21]
-ポートが開放されていないときにhttpのポートを利用して、接...
まずはSGを開放する。
#!/bin/bash
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo sh -c "echo 0 > /proc/sys/net/ipv4/conf/eth0/send_...
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j ...
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo service iptables save
**MySQLクライアントインストール [#k7a7e31f]
*cli [#za97f3c1]
-特定のタグがあるものを抽出(値は何でも良い)
aws ec2 describe-instances --filters "Name=tag:Group,Val...
-タグで絞ってInstanceId取得(NameならばGroupのところをName...
aws ec2 describe-instances --filters "Name=tag:Group,Val...
-Stoppedのインスタンスを取得
aws ec2 describe-instances | jq -r '[.Reservations[].Ins...
-runningのインスタンスを取得
aws ec2 describe-instances | jq -r '[.Reservations[].Ins...
-target-groupに所属するインスタンスID
aws elbv2 describe-target-health --target-group-arn TG_A...
-起動(上のシェルと合わせると複数起動可能)
aws ec2 start-instances --instance-ids インスタンスID
aws ec2 stop-instances --instance-ids $(aws ec2 describe...
-タグ付け
aws ec2 create-tags --resources インスタンスID --tags Ke...
-lambda
aws lambda invoke --function-name randomfailure --profil...
*EBS [#ye41fadf]
Elastic Block Storeの略。スナップショット機能など多彩な機...
**EBSの種類 [#q5651211]
GP2は容量を増やすとパフォーマンスが伸びる。Provisioned IO...
*AMI [#e386e448]
マシンのOSイメージのこと。マイクロインスタンスであれば、R...
*EC2初期設定 [#r784a890]
**Cloudinit [#w44c5a7f]
起動時に設定などを実施できるcloud-init(yml)かシェルスクリ...
**コンソールから入れる場合 [#e26f12fe]
#!/bin/bash
#TIMEZONE JST
/bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
yum install -y postfix
yum install -y mysql-server
yum install -y nginx
# start service
/etc/init.d/postfix start
/etc/init.d/mysqld start
/etc/init.d/nginx start
# enable service auto start
chkconfig --level 345 postfix on
chkconfig --level 345 nginx on
chkconfig --level 345 mysqld on
*EC2インスタンスの作成からログインまで [#c821f1f7]
無料枠を超えないようにインスタンスはT2.micro、その他はデ...
**インスタンスの作成手順詳細 [#nb48d03b]
+AMIを選ぶ
+6. Configure Security GroupでSGを指定する
**インスタンスタイプ [#h1acbc5e]
|名称|備考|
|t1,t2|CPUがバースト可能。しかし低コストなので常時CPUが必...
|c1,c2|CPUに重点を置いたタイプ。|
|r3|データベース向け|
**Elastic IP [#j220cd0e]
静的なIPでインスタンスにひもづけることができる。起動して...
一応使わないでも再起動しなければ起動時に動的に割り当てら...
*ELB [#s3dd8aa7]
Elastic Load Balancing。インスタンスを複数ぶら下げて振り...
**Internal ELB [#y2f14c2c]
名前解決はpublicなDNSで行うため、利用側にインターネット接...
**ELB負荷対策 [#vc930c5a]
ELBのスケールアップ・スケールアウトはAWS側で勝手にやって...
こちらで負荷監視する項目はCloudWatchから取得できる処理数...
**スティッキーセッション [#p4395bda]
クラウド時代にはあまり好ましくはないが、特定のサーバーに...
**元アクセスのリクエストヘッダ [#e02f337f]
-以下のヘッダーについてくるのでアクセスログのフォーマット...
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED_PORT
HTTP_X_FORWARDED_PROTO
**ELBのサブネット [#g1d8a78c]
所属するサブネットに最低8IPの空きが必要。
*EC2 オートスケール [#j212581c]
負荷状況に合わせて増やしたり、一定数以上の稼働を保証させ...
*Security Group [#o2df0a78]
**基本 [#l4ef6d13]
インスタンス単位で設定。サブネット単位で設定するACLよりも...
**HTTPの外回りと内回り [#g33f7ada]
同じインスタンスにアクセスする場合PrivateIP指定の場合は内...
**デフォルトSG [#e8ba0d7a]
基本的にプライベート内部は全部の通信が許可されるデフォル...
特に支障がない限りこれを各インスタンスにつけておくことを...
デフォルトSGを持っているのものを全部許可する設定になって...
*ネットワークACL [#n2b8dbaa]
サブネット単位で設定するが、ポート単位で指定すると動的に...
*EC2複製 [#uccfb57c]
**AMIを作成して複製 [#wbef98cb]
固定PrivateIPだと既存EC2消さないとダメ
**EBSボリューム複製して既存インスタンスにアタッチ [#e7ab0...
これは複製ではなく障害復旧だな。
**EBSボリュームを複製して手動マウント [#m2a6c4f3]
上記2パターンがうまくいかないときの最終手段。
ページ名: