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

ご清聴ありがとうございました!