Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
知らないサーバ(修正版)
Search
ryuichi1208
July 01, 2019
Technology
3
17
知らないサーバ(修正版)
ryuichi1208
July 01, 2019
Tweet
Share
More Decks by ryuichi1208
See All by ryuichi1208
超入門SRE 2025
ryuichi1208
2
960
Goで作って学ぶWebSocket
ryuichi1208
3
2.4k
コード化されていない稼働中のサーバを移設_再構築する技術
ryuichi1208
20
9k
AI前提のサービス運用ってなんだろう?
ryuichi1208
9
1.7k
入門 バックアップ
ryuichi1208
22
10k
効果的なオンコール対応と障害対応
ryuichi1208
9
3.7k
コロナ禍とその後:地方エンジニアが学んだキャリア戦略の変遷
ryuichi1208
6
420
入門オンコール対応
ryuichi1208
10
3.6k
MySQLのOOMと戦った話
ryuichi1208
7
3.1k
Other Decks in Technology
See All in Technology
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
6
1.5k
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
310
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
1
490
「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly
i35_267
2
710
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
1.6k
Perlの生きのこり - エンジニアがこの先生きのこるためのカンファレンス2025
kfly8
1
240
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
250
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
310
Active Directory攻防
cryptopeg
PRO
8
5k
ソフトウェアエンジニアと仕事するときに知っておいたほうが良いこと / Key points for working with software engineers
pinkumohikan
1
140
OPENLOGI Company Profile
hr01
0
60k
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
460
Featured
See All Featured
Bash Introduction
62gerente
611
210k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Site-Speed That Sticks
csswizardry
4
400
Gamification - CAS2011
davidbonilla
80
5.1k
Visualization
eitanlees
146
15k
Building Applications with DynamoDB
mza
93
6.2k
Being A Developer After 40
akosma
89
590k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Transcript
知らないサーバー
過去あったちょっと怖い話
当時のバックグラウンド • とあるWebサービスのインフラエンジニアをやっていた時の話 • サービス自体は20年以上続いている歴史的なサービス • ジョインした時点でインフラの前任者は退職済み • プライベートクラウド上のVMの運用者 •
VMより下はプラットフォームチームという別のところが管理 • 100近いVMをAnsibleで構築/管理
とある日
サーバいっぱいあって楽しい〜 障害対応楽しい〜
新プラットフォームを作ったので移設してくださ い! プラットフォーム チームの方
新プラットフォームを作ったので移設してくださ い! わかりました! プラットフォーム チームの方
• 新プラットフォームへのマイグレーション作業が発生した • 管理しているVMの一覧はAnsibleにあったのでそれをリストアップして対応 • 1年くらいかけて全部の移設が完了した • CentOS5/6とかもあったので当時最新のCentOS7へ載せ替えしたりマネージド サービスに移行したり 移設
全部移行完了しました! ありがとうございます!!
めでたしめでたし
1週間ぐらい後
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします 先週全部終わっています!
そっちのチーム管理のサーバーがまだ古いと ころで動いてるので移設をお願いします 先週全部終わっています! track001っていうサーバーがあるみたいで...
そのサーバーってうちの管理ですかね...?
そのサーバーってうちの管理ですかね...? 管理者はAさん(退職済み)になってますね
そのサーバーってうちの管理ですかね...? 管理者はAさん(退職済み)になってますね 調べてみます...!!
調べてみると • Ansibleのサーバー一覧にはなかった • サーバー名でGitHubを検索しても出てこなかった • それっぽいリポジトリもGitHubになかった • Slackで調べても何も出てこなかった •
とりあえずsshしたら接続ができたので色々見てみることに
調べてみると • uptime -> 2000日 • http/80をListenしている何らかのプロセスはいそうだった • 負荷はほぼなかったので使われていない気配は感じた •
入社して2~3年くらい経って1回も障害も問い合わせもないサーバなので潰しちゃえ ば良いかって思っていた
誰も使ってないだろうし消そう
誰も使ってないだろうし消そう /var/logとかでもみてみるか
誰も使ってないだろうし消そう /var/logとかでもみてみるか /var/log/apacheにアクセスログが結構な流 量で流れているだと...!!!!!!
誰か使ってそう...
さらに調査 • アクセス先のリクエストパスをみると監視っぽいものではなかった • とりあえずUAを出すようにしてみたら最近のブラウザっぽいものだった • Apacheの設定を追っていくとPerlで書かれたアプリケーションにリクエストを流して いた • Ansibleのコードもドキュメントもないけど実際に使われている(かもしれない)サー
バーが存在した
知らないサーバー
知らないサーバーがいました...
知らないサーバーがいました... 移設するか消すかの判断をお願いします
知らないサーバーがいました... 移設するか消すかの判断をお願いします 確認します!
さらに調査 • 何に使われているのかわからないのでアプリケーションを読む ◦ psコマンド打ってlsofしてアプリケーションのソースを特定 ◦ URL Redirectorでアクセスカウントするアプリケーション ◦ 管理画面も存在することがコードを読んでいてわかった
さらに調査 • 誰が使っているかを調べる ◦ Slackでhereで探してみたが誰も知らない ◦ 管理画面はapacheでLANのアクセスに絞られていたので IPからチームを特定 ◦ Slackを普段使わない営業の方がメインで使っていることが判明
◦ 話たら使っているしないと困る
移設しよう...
課題 • 構築方法が不明のサーバー • OSはCentOS5でEOL済み • 開発フローが不明のアプリケーション • ミドルウェアは何が入ってるのかわからない
整備 • CentOS7にする ◦ apache 1系がそのままだとビルドできなかったので apacheのソースを修正してビルド • 構築方法は不明だったが比較的シンプルなWeb Appだったのでlsとかpsとか見つ
つ設定ファイルを読んで再現させることに成功 • アプリはGitHubへ持っていく • CircleCIでデプロイ可能な状態にする ◦ DBのdumpとかがローカルにあってサイズが ...
完了!
ではなかった
調査 • いわゆるモノリス的なサーバでリバプロ/アプリ/MySQLが動いていた • 動いてるサーバでnetstatをすると7003番portでWebアプリがコネクションを貼って いた • 旧プラットフォームのマネージドGearmanが必要だった ◦ 管理画面の別の機能として存在したらしくコードリーディングで読み切れていなかった
... ◦ 同一のVMにGearmanを動かすようにして完了することができた
学び
学び • IaCは偉大 • スクリプト言語で書かれていたのが幸運だった • 手動構築で速いのはその時だけ
あなたのネットワークにも知らないサー バーいるかもしれませんよ
ご清聴ありがとうございました!