マイグレーションコンペティション 2018で優勝してきました

マイグレーションコンペティション 2018に参加して優勝しました!!!!!!!!!111

マイグレーションコンペティション 2018 winter

詳細は以下のURLより御覧ください

日本MSP協会のコンペティション担当による、運用技術を競うコンペティションです。次代を担う若手運用技術者同士の交流・競争を通して日本のMSP事業者における運用技術の向上を目的としています。

とのこと。

今回は EC2の1インスタンスにいるWebAppDBサーバその他もろもろをAzure上に移行する、というお題でした。

優勝のご様子 f:id:renjikari:20180129000822j:plain

メンバー

運営が当日ランダムでチームを組むのですが、チームメンバーはid:kani_bさんと大阪からいらっしゃっていたokazakiさんでした。 主にid:kani_bさんがDB周りの移行とチームマネジメント(リーダー)、okazakiさんがWebAppの移行、私がメール周りの移行を担当しました。 メール周りなんて大学生ぶりにさわるのでまじで怖かった

お題詳細

今回のお題はEC2サイトの移行ということで、移行元サーバには以下のような物が稼働していました。

最終的な方針

私達のチームでは最終的に以下の方針で移行を進めていきました。

  • ミニマムなところから移行し、お題の必須項目を完璧にやる
    • これができたら+αをやっていく
  • 具体的な方針
    • サーバ切替時にはメンテナンスを入れる
    • バージョンアップは無理せず, CentOS7.4のデフォルトパッケージでyumインストールされるものを利用する

覚えている感じのタイムスケジュール

今回は競技時間が10:30 ~ 17:00でした。

11:30 頃まで

自己紹介と移行元サーバの把握をしていました。また、リーダーの提案でgithubリポジトリを作成し、issueで進捗管理をすることに。(これとても良かった) また、予算がいくらくらいあるのかを担当者に確認し、現行の+-20%程度にしてくれという回答をもらいました。 この時点でAzureを使うと冗長化できなさそうかな〜みたいな話をしていました。

13:00 頃まで

途中ご飯を食べながら方針を決め始め、それぞれの役割分担を決定。このときはまだ、無停止でサーバ切り替えできないか模索していました。確か、MySQLを旧新サーバでレプリケーションしてデータ移行させれば無停止でいけるんじゃ?みたいな議論をしていたと思います。

担当者にはDNSTTLを60秒にしてもらうことと、サイトでなんらかの作業がある場合は14時までに実施してもらうよう連絡していました。(商品追加の作業があると言っていた気がする)

14:30 頃まで

チームとしてはそれぞれの移行をやっていましたが、MySQLのrootが取れないことが判明。root取れないとレプリケーションが組めないし、root取るためにはMySQLの再起動が必要なのでここで無停止を諦め、メンテナンスを入れてrootを乗っ取ることに(14:00頃)

私はメールサーバの移行をしていまして、saslを触ったことがなかったので、そこを一旦無視してPostfixDovecotの移行をやっていました。たぶんここらへんで/etc/postfixと/etc/Dovecotをごっそり移し替えて起動するくらいまではできていたような気がする。

15:30 頃まで

この頃にEC-CUBE及びメールサーバがほぼほぼ移行完了し、そろそろ切り替えれるんじゃないかみたいな話になっていました。

私はというとsaslをググったらそんなに大変そうじゃなかったので移行元サーバをまるぱくり、間違いがないかpostconf -nやdovecot -nを読んでいたのですが、virtual mailboxの設定をしていないことに気づき、/var/spool/vmail(だったような)の移行を開始。 ディレクトリ自体はそのままrsyncしたんですが、移行元サーバに/var/spool/vmail/をホームディレクトリとするvmailユーザがいたのでやり方に不安を覚えつつ/etc/passwdと/etc/shadow, /etc/groupを移行して、vmailユーザを作成しておきました。(これどうすればよかったのかな…)

16:30 頃まで

担当者に連絡し、16:00からサーバ切り替え作業とDNS切り替え作業を実施。移行が完了

17:00 まで

残りの時間で、id:kani_bさんがAzureのバックアップを作り、okazakiさんを中心に引き継ぎ&実施した内容のドキュメントを作成(Google Docsで作った)、私はドキュメントを手伝いつつlinuxユーザの整備などをしていました。

全体的な感想

ながながと書きましたが、だいたいこんな感じで進めていて、優勝をいただくことができました。 率直に言って最高だった(勝ったから)。 一番良かったのは、必須項目以外はやらない、位の勢いでもろもろを切り捨てる方針で進められたことだと思います。 あとid:kani_bさんのエンジニア視点のマネジメントが最高だった。 ぜひ来年も遊びに行きたいと思います。