2023.09.27
2023.09.27
Fabeee社員ブログ
お久しぶりです。たこです。
みなさん、やらかしたことはありますか?1つや2つはありますよね!
よく受け継がれし怖い話で、滅びのコマンド「rm -fr /」というものがありますが、私もさまざまなミスをしてきました。
今回は恥を忍んで、私が今までやらかした話ををば 笑
私は今までAWSを使ったブロジェクトで環境構築や開発をすることが多かったので、そちらにフォーカスを当てて紹介します。
目次
EC2インスタンスにSSH接続ができなくなった。インスタンスのユーザーデータを設定して解決!
はい。一度はやりますよね?…やりませんかね?
こちらの事象は初めてネットワークを含め、サーバーの環境構築を任された頃でした。
原因はファイアウォールの設定にありました。下記のようにufwコマンドでのファイアウォール設定を有効にして、指定したポート以外を全て拒否するようにしていました。
$ sudo ufw enable # 起動 $ sudo ufw allow # 設定 $ sudo ufw status # 状態を確認
ポートを許可する中で、SSH用のポート22を許可を忘れていました。痛恨のケアレスミス…。(なぜ確認コマンドで気づかん)
物理サーバーの場合詰んだ…と思うことでしょう。
今回の対処方法
インスタンスのユーザーデータを設定して解決させました!
「ユーザーデータ」はEC2の起動時に指定したタスクやスクリプトを実行したりできる機能で、AWSのコンソールからも設定することができます。詳しい説明は公式のガイドをご覧ください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html
具体的な設定方法
まずこちらの設定を行う際には、EC2インスタンスを停止しないと行えないため、コンソール画面から停止をしましょう。
インスタンスのステータスが「stopped」になったら、作業開始です!
設定は簡単。設定したいEC2を選択して、「アクション」メニューの「インスタンスの設定」から「ユーザーデータを編集」を選択。
その後、下記画像の赤枠部分へ下記のように、「ユーザーデータをテキストで変更」を選択した上で、テキストエリアへコマンドを設定して保存ボタンを押します。
今回は、ufwを停止するようにコマンドを入れておきます。
#!/bin/bash sudo ufw disable
少し時間が経つと反映されるので、反映後にインスタンスを起動!ステータスが「running」になるのを待ちます。
この時システムログを見ておくと、設定したコマンドが実行できてるか確認できるので見ておきましょう。
「アクション」メニューの「モニタリングとトラブルシューティング」から「システムログ」を選択するとログが確認できます。
問題なく接続ができて作業が終わったら、ユーザーデータでまたコマンドが適用されないよう、インスタンスを停止して削除しておきましょうね!
改めてSSH接続を試みたところ無事にEC2に入ることができ、再設定を行い無事環境構築を完了。新卒のたこ選手なんとかやり遂げました。。。
ユーザーデータはインスタンス上からも設定できるので、もし今回の事象に限らず起動時に必ず実行したいことを設定しておくと便利ですね!
Amazon RDSに保存しているデータがクラッシュした。定期バックアップのおかげで復活!
こちらもよくある話ですね!(?)
結果から話しますと、定期バックアップをしていたおかげで物理的な時間はかかりましたが、復旧が容易に行えて軽症ですみました。
復旧方法
RDSはAWS上で提供しているリレーショナルデータベースです。EC2と同様バックアップが保存できます。
バックアップ設定はいつでもできるため、有効化しておくと良いと思います。
【手順】
- 左メニューから「自動バックアップ」を選択
- 復元したいDBインスタンスを選択後に「アクション」から「特定時点への復元」 を選択
- 復旧したい時刻(今回の場合は最新)を選択して復旧!
少々時間がかかりますが、簡単に復元が可能です!さらに詳しいところは公式のガイドをご確認ください。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PIT.html
どうしてデータが壊れたの?
モヤっとした方、読んでみてください 笑
これはWordPressを使ったシステムで起こりました。ブログやCMSとしても使われているシステムですね!
ですが…プラグインをたくさん入れて全く別の用途として使用していました。すでに管理が大変です 笑
そして上司が「100万件くらいの大量データを入れたい。」何気ない一言を発しました。触ったことがある人はご存知かと思いますが、テーブル構造が独特でそこまで大量データを捌くのには適していません。
いろいろ説明と説得をした上で、それでもやりたいと。データを準備してプラグインから大量のデータを詰め込んだところ、壊れてしまいました。笑
作業前にもろもろのバックアップを確認してからOKを出したので、急いで復旧をして大事にはならずで、やっとそこで上司も納得してくれました。
後日、独自テーブルを生成したりデータ呼び出しプログラムなどをPHPで作り、既存システムへがっちゃんこ。
まとめ
まずは…なにごとも事前に資料の読み込みやリスク準備はしっかり行って、極力リスクは軽減してゆきましょう!(ブーメラン)
今回のことは物理サーバだと対処が少し難しいことですが、AWSだから容易で助かりました…今ではすべて笑い話です 笑
世の中の進歩に感謝しつつ、今日も元気にプログラムを書いて生きています。ありがたいことです。
それではまたどこかで。たこでした〜(:。)彡