Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
知らないサーバー
Slide 2
Slide 2 text
過去あったちょっと怖い話
Slide 3
Slide 3 text
当時のバックグラウンド ● とあるWebサービスのインフラエンジニアをやっていた時の話 ● サービス自体は20年以上続いている歴史的なサービス ● ジョインした時点でインフラの前任者は退職済み ● プライベートクラウド上のVMの運用者 ● VMより下はプラットフォームチームという別のところが管理 ● 100近いVMをAnsibleで構築/管理
Slide 4
Slide 4 text
とある日
Slide 5
Slide 5 text
サーバいっぱいあって楽しい〜 障害対応楽しい〜
Slide 6
Slide 6 text
新プラットフォームを作ったので移設してくださ い! プラットフォーム チームの方
Slide 7
Slide 7 text
新プラットフォームを作ったので移設してくださ い! わかりました! プラットフォーム チームの方
Slide 8
Slide 8 text
● 新プラットフォームへのマイグレーション作業が発生した ● 管理しているVMの一覧はAnsibleにあったのでそれをリストアップして対応 ● 1年くらいかけて全部の移設が完了した ● CentOS5/6とかもあったので当時最新のCentOS7へ載せ替えしたりマネージド サービスに移行したり 移設
Slide 9
Slide 9 text
全部移行完了しました! ありがとうございます!!
Slide 10
Slide 10 text
めでたしめでたし
Slide 11
Slide 11 text
1週間ぐらい後
Slide 12
Slide 12 text
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします
Slide 13
Slide 13 text
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします 先週全部終わっています!
Slide 14
Slide 14 text
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします 先週全部終わっています! track001っていうサーバーがあるみたいで...
Slide 15
Slide 15 text
そのサーバーってうちの管理ですかね...?
Slide 16
Slide 16 text
そのサーバーってうちの管理ですかね...? 管理者はAさん(退職済み)になってますね
Slide 17
Slide 17 text
そのサーバーってうちの管理ですかね...? 管理者はAさん(退職済み)になってますね 調べてみます...!!
Slide 18
Slide 18 text
調べてみると ● Ansibleのサーバー一覧にはなかった ● サーバー名でGitHubを検索しても出てこなかった ● それっぽいリポジトリもGitHubになかった ● Slackで調べても何も出てこなかった ● とりあえずsshしたら接続ができたので色々見てみることに
Slide 19
Slide 19 text
調べてみると ● uptime -> 2000日 ● http/80をListenしている何らかのプロセスはいそうだった ● 負荷はほぼなかったので使われていない気配は感じた ● 入社して2~3年くらい経って1回も障害も問い合わせもないサーバなので潰しちゃえ ば良いかって思っていた
Slide 20
Slide 20 text
誰も使ってないだろうし消そう
Slide 21
Slide 21 text
誰も使ってないだろうし消そう /var/logとかでもみてみるか
Slide 22
Slide 22 text
誰も使ってないだろうし消そう /var/logとかでもみてみるか /var/log/apacheにアクセスログが結構な流 量で流れているだと...!!!!!!
Slide 23
Slide 23 text
誰か使ってそう...
Slide 24
Slide 24 text
さらに調査 ● アクセス先のリクエストパスをみると監視っぽいものではなかった ● とりあえずUAを出すようにしてみたら最近のブラウザっぽいものだった ● Apacheの設定を追っていくとPerlで書かれたアプリケーションにリクエストを流して いた ● Ansibleのコードもドキュメントもないけど実際に使われている(かもしれない)サー バーが存在した
Slide 25
Slide 25 text
知らないサーバー
Slide 26
Slide 26 text
知らないサーバーがいました...
Slide 27
Slide 27 text
知らないサーバーがいました... 移設するか消すかの判断をお願いします
Slide 28
Slide 28 text
知らないサーバーがいました... 移設するか消すかの判断をお願いします 確認します!
Slide 29
Slide 29 text
さらに調査 ● 何に使われているのかわからないのでアプリケーションを読む ○ psコマンド打ってlsofしてアプリケーションのソースを特定 ○ URL Redirectorでアクセスカウントするアプリケーション ○ 管理画面も存在することがコードを読んでいてわかった
Slide 30
Slide 30 text
さらに調査 ● 誰が使っているかを調べる ○ Slackでhereで探してみたが誰も知らない ○ 管理画面はapacheでLANのアクセスに絞られていたので IPからチームを特定 ○ Slackを普段使わない営業の方がメインで使っていることが判明 ○ 話たら使っているしないと困る
Slide 31
Slide 31 text
移設しよう...
Slide 32
Slide 32 text
課題 ● 構築方法が不明のサーバー ● OSはCentOS5でEOL済み ● 開発フローが不明のアプリケーション ● ミドルウェアは何が入ってるのかわからない
Slide 33
Slide 33 text
整備 ● CentOS7にする ○ apache 1系がそのままだとビルドできなかったので apacheのソースを修正してビルド ● 構築方法は不明だったが比較的シンプルなWeb Appだったのでlsとかpsとか見つ つ設定ファイルを読んで再現させることに成功 ● アプリはGitHubへ持っていく ● CircleCIでデプロイ可能な状態にする ○ DBのdumpとかがローカルにあってサイズが ...
Slide 34
Slide 34 text
完了!
Slide 35
Slide 35 text
ではなかった
Slide 36
Slide 36 text
調査 ● いわゆるモノリス的なサーバでリバプロ/アプリ/MySQLが動いていた ● 動いてるサーバでnetstatをすると7003番portでWebアプリがコネクションを貼って いた ● 旧プラットフォームのマネージドGearmanが必要だった ○ 管理画面の別の機能として存在したらしくコードリーディングで読み切れていなかった ... ○ 同一のVMにGearmanを動かすようにして完了することができた
Slide 37
Slide 37 text
学び
Slide 38
Slide 38 text
学び ● IaCは偉大 ● スクリプト言語で書かれていたのが幸運だった ● 手動構築で速いのはその時だけ
Slide 39
Slide 39 text
あなたのネットワークにも知らないサー バーいるかもしれませんよ
Slide 40
Slide 40 text
ご清聴ありがとうございました!