あいつの日誌β

働きながら旅しています。

Glitch で SPA なサイトをデプロイしてみた

Glitch は Node.js のアプリを公開するためのサービスです。静的サービスもデプロイできるみたいですが、ここでは json-server で API を用意しつつ index.html と bundle.js を生成して Single Page Application をデプロイしてみました。

※Glitch の特徴としてブラウザ上でコードを編集できる機能があり、ターゲットが初学者のようにも見えますが、この記事の読者はプログラマを想定しています。

デプロイした repository

React.js の tutorial として以前作成した repository を使います。

github.com

デプロイ方法

GitHub に push して、それを Glitch へ反映します。ということで最初に簡単な repository を作成します。下記の記事を参考にすると良いと思います。

qiita.com

github の repository を import すると、自動的に npm installnpm start が走ります。npm start したときに port が 3000 でも 4000 でも特に設定しなくて大丈夫でした。

デプロイした結果

以下に配備しました。

https://fav-articles.glitch.me/

感想

まだ新しいサービスなのでなんとも言えませんが初学者が手っ取り早く自分の書いたプログラムを公開できるのでなかなか良いと思います。

5泊6日で東京から京都、大阪、金沢へ働きながら旅をしてきた(4) 金沢編

f:id:okamuuu:20171127121404j:plain

THE SHARE HOTELS HATCHi 金沢

www.thesharehotels.com

金沢で2泊したのですが両日ともドミトリー形式の部屋を利用しました。思ったより良かったです。良かった理由は以下の通りです

  • 部屋が常に薄暗いのでなんとなく静かにしなかければいけないという雰囲気を醸し出す(実際かなり静かだった)
  • カーテンを閉めると外界ときちんと遮断できる
  • シャワールームが格好いい
  • 洗濯機、乾燥機が各3台
  • 共有スペースがおしゃれ

f:id:okamuuu:20171127122503j:plain

f:id:okamuuu:20171127122122j:plain

ちなみにタクシーの運転手に「シェアホテル、ハッチ」って伝えるとほぼ伝わります。

周遊バス

金沢は天気が悪い率が高いらしいのと観光地が点在していてそこまで微妙に距離があります。例えると渋谷から原宿を歩く感じです。距離で2km、歩いてだいたい20分。

歩けなくもないと思いますが天気が悪いと靴が濡れてしまうので周遊バスを使うことをお勧めします。

北鉄バス1日フリー乗車券

http://www.hokutetsu.co.jp/tourism-bus/oneday

バスに乗ると一回200円ですがフリー乗車券は500円です。金沢では移動手段がほぼバスになってしまうのでフリー乗車券を購入しておくことをおすすめします。それからいろんな施設が微妙に安くなるので金沢を巡るならまあ買っておくほうが無難なアイテムです。

ちなみにバスはうしろ乗り前降りで、運賃はあと払いです。小銭無くてあたふたしないようにお気をつけ下さい。あと周遊バスではなく、路線バスに乗るときは整理券をとる必要があります。といっても観光地回る場合はだいたい周遊バスで事足ります。

ちなみに18:00ぐらいで周遊バスは終わるのでご注意下さい。

廻る富山湾 すし玉 金沢駅

駅前のお店。いわしが美味しかったです。

f:id:okamuuu:20171127121715j:plain

割烹・小料理 a.k.a.

www.shiki-inc.com

アーカと読むらしいです。宿泊場所の1Fにあります。私は21時までは一汁三菜(3000円)を頼む必要があるらしいのですが私は21時以降に利用したのでアラカルト形式で注文。

地ビールがとても美味しかったです。1000円で中瓶が出てきます。カウンター席に座って店員さんに移住先を探しに来ている事を話して、色々と金沢の事を教えてもらいました。

f:id:okamuuu:20171127121906j:plain

ちなみにこの店はR不動産の系列らしいです。金沢へお引越しを検討しているなら reallocal を参考にしてみては?とのことです。

reallocal.jp

日本酒真琴

金沢の日本酒が1時間1500円で飲み放題(お昼)という酒好きならこれだけで金沢に来る価値があるんじゃないでしょうか。わたしはおばんざいをいただきました。日本酒は飲んでいません。

f:id:okamuuu:20171127122723j:plain

もりもり寿し 近江町店

朝ごはんとして近江町商店街の回転寿司を利用しました。早朝7:00から営業しているので使い勝手は良いと思います。

f:id:okamuuu:20171127122854j:plain

IL MARE

片町で夜ご飯を食べようとしたのですが事前に調べた店はどこも満席。美味しそうな店を見つけても予約で一杯と断られてしまいました。

そういうわけで自分の直感を信じてふらっと入ったお店。かなりアットホームなお店で、気さくな店員さんに金沢について教えてもらいました。

f:id:okamuuu:20171127122938j:plain

f:id:okamuuu:20171127123426j:plain

値段も手頃でお店の雰囲気も良かったのでなかなか良かったです。

Cafe 多聞

雰囲気がとても素敵なお店でした。こちらでパンケーキとコーヒーを頂きました。ふわっふわのパンケーキが出て来てなかなかのフォトジェニックでした。ただ一人で食べるには少し量が多いので数人で分ける事をおすすめします。

f:id:okamuuu:20171127123453j:plain

金沢の感想

金沢は天気がコロコロ変わるので傘をずっと持っている必要がありました。また外国人観光客も多かったです。タクシーの運転手さんによると外国人観光客は岐阜へも訪れるらしく、金沢がその中継地点としても最適だからだそうです。

フォトジェニックな場所が多いので写真好きにはおすすめなのですがお昼ぐらいになると観光客が殺到してしまい写真をとりづらくなります。写真をとる場合は午前10時までが勝負です。

f:id:okamuuu:20171127123833j:plain

f:id:okamuuu:20171127123923j:plain

あとお昼頃片町に訪れたのですが基本的に昼営業している店はほとんどないです。お昼ご飯は駅前、東茶屋、近江町のいずれかがおすすめです。

そしてインターネットで人気がありそうな店は大体観光客が殺到しているのでどうしてもその店でないと困る、というのであれば予約したほうがよいと思います。なんですがお店はいっぱいあるのであまりネットに頼らずにお店を探したほうがいい思い出が生まれる気がします。たぶん。

写真、日本酒、刺身が好きな人には金沢はとてもよい街です。写観光客がまだ少ない早朝に東茶屋と兼六園を巡っておいて、お昼は日本酒を飲み比べするといいんじゃないかと思います。

旅を終えた感想

新幹線を使って大回り乗車する旅は結構長丁場になったので疲れましたがなかなか楽しかったです。旅先で「東京、京都、金沢を大回り乗車している」というとほとんどの人が大回り乗車の事を知らないので話のきっかけとなって楽しめました。新幹線で東京、金沢を往復する金額とあまり変わらない金額で京都にも行けるので大回り乗車はおすすめです。

京都、大阪、金沢でそれぞれ違った思い出ができて楽しかったです。まだ行ったことのない街が沢山あるのでまた同じような旅をしたいと思います。おしまい。

5泊6日で東京から京都、大阪、金沢へ働きながら旅をしてきた(3) 大阪編

京都から大阪まではは阪急京都線河原町から梅田行き(特急)を利用しました。 そして食い倒れの街大阪で飲み倒れてしまうという不覚をとりました。

f:id:okamuuu:20171127115429j:plain

airbnb を利用しました

大阪では Airbnb を利用しました。心斎橋となんばの中間地点で非常に便利な立地でした。チェックイン時間を少し変更したいとお願いしたところ相談に応じてもらえたので非常に助かりました。

www.airbnb.jp

外国人観光客がいっぱい

道頓堀の付近は観光客がいっぱいで、何故かみんなグリコの看板を写真に納めていました。グリコの知名度は外国人にも浸透しているのが意外でした。

梅田はがくれ

知り合いのおじさんがおすすめしてくれうどん屋さん。生(き)しょうゆうどんを注文しました。ちなみに食べ方は「混ぜずに箸で2本だけ掬い上げる」だそうです。

ちなみに私は上手く出来ず「何やっとんねんヘッタクソやなあー」と言われてしまいました。とても大阪を感じられるので一度行ってみる事をおすすめします。

f:id:okamuuu:20171127115548j:plain

魚屋ひでぞう 難波店

立ち飲み形式のBAR。お値段も安く、美味しいごはんが食べられます。割と早い時間帯に訪問したんですがお客さんがたくさん居ました。旅行者であっても地元の人でも使い勝手の良いお店だと思います。

f:id:okamuuu:20171127120026j:plain

名称不明のBAR

地元色の強い立ち飲みBARを発見したので突入。ここで日本酒を飲み過ぎてしまい大阪の人たちに迷惑をかけてしまいました。どこの馬の骨とも分からない酔っ払いに対して大阪の人たちは優しかったです。非常に寝不足で万全の体調ではなかった、ということもあるのですが...やはりこれ以上書くのは止めよう。

f:id:okamuuu:20171127120150j:plain

はなだこ

梅田駅の近くにあるたこ焼き屋さんで大阪のたこ焼きを堪能しました。銀だこまでとはいきませんが、ちょっと固めのたこ焼きです。私はたこ焼きはとろとろのほうが好みなのですがこれはこれで美味しかったです。やっぱたこ焼きはいいですね。

f:id:okamuuu:20171127120240j:plain

大阪についての感想

大阪には2泊しましたが内1日は作業日にあてていたのと少しお酒を飲み過ぎたので体調の回復に務めたため市内をそんなに散策できませんでした。

とりあえず大阪の人はとても優しかった事だけはお伝えしたいと思います。

5泊6日で東京から京都、大阪、金沢へ働きながら旅をしてきた(2) 京都編

f:id:okamuuu:20171126165800j:plain

京都ゲストハウス Len 京都河原町

京都で1泊しました。ドミトリー形式の部屋を利用しましたが、思ったより立地が良い場所で助かりました。こちらではチェックインする前に荷物を先に預ける事ができます。

Len までは京都から歩いても行ける距離ですが、歩いてもたぶん何もない(?)気がしますのでタクシーでさっと移動して良いと思います。バスは時期によっては混雑しています。

寝室は作業しづらいのですが共有スペースがありますのでそこで作業をする事ができます。私のように働きながら旅をしている人には便利な場所だと思います。

あとドミトリー式の部屋は2段ベッドで私は下段だったのですが、思ったよりも上段の人が動くと振動が響きます。寝返りなどは生理現象でしょうがないのですが夜きちんと寝れないと困るには向いてないのかも知れません。

backpackersjapan.co.jp

WEEKENDERS COFFEE TOMINOKOJI

行きつけのコーヒースタンドの店員さんに京都へ旅行行くのでおすすめの店を教えてもらったお店です。コーヒー美味しかったです。なんですが店内での利用ができないので肌寒い青空の下でコーヒーを飲みました。寒い時期にこちらの店に行かれる方は十分ご注意ください。

f:id:okamuuu:20171126170114j:plain

京極スタンド

お昼ご飯が遅くなり15:00ごろにやっているお店を前述の WEEKENDERS COFFEE のスタッフに聞いたところこちらの店を紹介されました。

なんですがかなり喫煙者が多く、煙がすごかったので早々に退散してしまいました。

すいば四条河原店

立ち飲みBARでかなりお安い金額で飲み食いできます。ビールと3品頼んでお会計が850円でした。ちなみに椅子はないのですが注文の管理する関係上3人分のスペースを詰めて4人で利用などはできないようです。とはいえ混んでいてもかなり回転が早いので少し待っていれば空くと思います。待ち合わせ場所をすいばにして待ち合わせ相手が現れたらお店を替える、といった使い方をしている人がちらほらいました。

f:id:okamuuu:20171126170147j:plain

ヨナヨナ

上述のすいばの近くになにやら楽しそうな集団(?)がいたので入ってみました。本当は地元色の強いBARだと思いますがなぜかこの日は大阪やら東京やら地元以外の人ばかりでした。京都の人たちとお話したい人はこちらに立ち寄るといいんじゃないかと思います。

私は移住先を探していたので地元の人たちの話が聞けて良かったです。

f:id:okamuuu:20171126170455j:plain

ちなみにここの BAR で大阪からいらっしゃった他のお客様に「たこやきなら天神橋筋六丁目の玉屋が私のオススメ」と教えてもらいましたが色々あって行けませんでした。残念。

四条西洞院食堂

いわゆる定食屋です。お昼前に行った時は地元のおじいちゃんたちが何名かいらっしゃいました。好きなお惣菜を適当に選択する店です。

葱や平吉 高瀬川

11:30頃に開店するのですが私が到着した時にはすでに30名ほど並んでいました。この後金沢へ向かう予定があったのですがまだ時間があると思い試しに並んでみたのですが思ったより時間がかかって1時間ほど待ってしまいました。

f:id:okamuuu:20171126171432j:plain

注文したのははみだし天丼、アナゴつき。結局サンダーバードに乗らないといけない時間間際になったので急いで食べたのですがかなり残してしまいました。すごく美味しかったのですがそろそろ天ぷらをたくさん食べれない年齢になってしまったのを実感しました。

京都について感想

市内の中心部にも関わらず、すぐ横に鴨川が流れていてとても素敵な街でした。自然も多いし適度なサイズ感の都市で移住先としてはとても魅力的な街だと感じました。

f:id:okamuuu:20171126171359j:plain

ちなみにバスを利用する場合は時期によっては観光客で混雑します。現地の人は「観光客が多い時期はバスを使わないで歩く事が多い」との事です。地下鉄かタクシーを利用したほうがストレスを感じなくて良いかもしれません。

風情あふれる町並みがフォトジェニックで散歩するだけでも楽しかったです。観光名所がたくさんあると思いますが割と散歩するだけで満足できる街だと思いました。

f:id:okamuuu:20171126173856j:plain

5泊6日で東京から京都、大阪、金沢へ働きながら旅をしてきた(1)

在宅型エンジニアの特権を生かして働きながら旅をしてきたシリーズ第2弾です。 とりあえず何回かに分けて旅レポしたいと思います。

まずは「新幹線での大回り乗車」について記したいと思います。

京都、大阪、金沢を巡った理由

福岡を働きながら旅をしてきたと理由は一緒で東京以外に移住する街を探しています。そして京都、大阪、金沢という街も移住先として魅力的ではないかと考えていました。

で、最初は金沢だけに滞在する予定だったのですが色々調べていると大回りしても新幹線での交通費があまり変わらないという事に気づきました。

新幹線で大回り乗車

というわけで「新幹線 大回り」という単語で調べると色々と出てくると思いますがポイントは以下の通り

  • 新幹線に乗るときは「乗車券」と「特急券」が必要
  • 「乗車券」と「特急券」は別々に購入可能で最終的に区間が揃えば良い
  • 「乗車券」に関しては大回りで購入すると安くなる。特急券が安くなるわけではない。
  • 大回りで安くなる理由は「片道での距離が遠くなればなるほど乗車券は安くなる」
  • 片道で大回りして別ルートから帰ってくれば良い。
  • 「乗車券」は一定の距離を越えると途中下車が数日間有効になる

東京から京都、金沢を経由して東京に戻る場合の購入方法

今回のケースですと東京、山科(京都の近く)、金沢、東京までを乗車券を一枚購入して、その乗車券の有効期間が一週間程度あります。別途新幹線のチケットを乗車予定の日程で3枚購入しました。

京都と大阪の往復は別途購入しました。この大回りは一筆書きでないと無効になるからです。

さらに詳しくいうと京都の手前に山科という駅が存在して実はここが少し重複しています。東京から京都と京都から金沢へは山科駅を通るので一筆書きにはなりません。

ではどうするかというと京都と山科は別途乗車券を購入します。私は以下の方法をとりました。

東京から京都

  • えきねっとで 新橋 -> 山科 -> 金沢 -> 東京で大回りの乗車券を1枚購入
  • えきねっとで 東京 -> 京都, 京都 -> 金沢, 金沢 -> 東京の特急券を3枚購入
  • 品川駅で「大回りの乗車券」と「東京->京都」の特急券を使う
  • 京都駅の精算所で「大回り乗車で来ているので不足分(190円)を清算したい」と伝えて清算券を受け取る
  • 京都駅はその清算券を1枚使えば出られます。

京都から大阪、大阪から京都

京都から大阪は河原町から梅田行きの電車が便利だったのでそちらを利用しました。大阪から金沢までサンダーバードを使えば良かったのですがそれに気づいたのは切符購入後だったので一度京都に立ち寄ってから金沢へ向かう事にしました。

京都から金沢

京都駅で190円の片道切符を購入し、駅員さんに「大回り乗車です」と伝えて大回り乗車券と190円の片道切符と特急券を見せます。

ちなみに京都と金沢の特急サンダーバードは新幹線との乗り継ぎ割引が適用されるかどうかを確認した方が良いでしょう。私は京都、大阪で3泊する関係上新幹線の特急券とセットで買うことができませんでした。

金沢から東京

金沢駅有人改札で駅員さんに切符を見せて入場。東京駅で下車してJRに乗り換える。

まとめ

京都、大阪、金沢はそれぞれの街に良さがあり、大変良かったです。特に印象に残っているのは京都の鴨川でした。風情があってとても良かったです。

あとそれぞれの街で新幹線の大回りをして来ている事を話するとみんな大体知らないので話のネタとしてとても役立ちました。というわけで皆さまも是非一度大回り乗車にチャレンジしてはいかがでしょうか?

実際に購入した切符

f:id:okamuuu:20171125182113j:plain

あとそれから

よかったら第1弾となる福岡への旅もご覧ください

okamuuu.hatenablog.com

groonga/docker で http モードで Docker を起動して request を発行すると セマフォが出る

あらすじ

全文検索したくなったので久しぶりに Groonga 使いたいのですが、設定方法を思い出すの面倒なので Docker 化しておこうと思ったら何かがおかしかった。

再現手順

mkdir verify-groonga-dokcer && cd $_
mkdir -p groonga/db
touch docker-compose.yml
touch groonga/Dockerfile

create docker-compose.yml

version: "3" 
services:
  groonga:
    build: "./groonga"
    ports:
      - 10041:10041:wqq

create groonga/Dockerfile

FROM groonga/groonga:latest

RUN mkdir -p /app/groonga/db
WORKDIR /app/groonga

EXPOSE 10041

ENTRYPOINT ["groonga", "--protocol", "http", "-s", -n "./db/groonga.db"]

実行する

% docker-compose build --no-cache 
% docker-compose up --force-recreate
Recreating verifygroongadokcer_groonga_1 ... 
Recreating verifygroongadokcer_groonga_1 ... done
Attaching to verifygroongadokcer_groonga_1

上記の状態で http://localhost:10041/ にアクセスすると GUI の管理画面が表示されるので、そこにで適当に Table を作成して Table を参照しようとすると 139 で groonga が終了してしまう

verifygroongadokcer_groonga_1 exited with code 139

調べていたらこのような issue を発見

どうやら python3.6 manage.py runserver で SIGFAULT が出てるらしい。

https://github.com/docker-library/python/issues/211

そして以下のようにして修正ができるらしい。実際に修正できた。

https://github.com/jubel-han/dockerfiles/blob/master/common/stack-fix.c

解決策: patch を用意して Dockerfile build 時にその patch を適用する

前述の issue と repository を参考に stack-fix.cを用意

#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>

// THIS IS TO AVOID A SIGFAULT WHEN RUNNING python3.6 manage.py runserver
// This should be fixed at some point by Alpine and/or Python
// Check this issue for more info
// https://github.com/docker-library/python/issues/211
typedef int (*func_t)(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg) {

    pthread_attr_t local;
    int used = 0, ret;

    if (!attr) {
        used = 1;
        pthread_attr_init(&local);
        attr = &local;
    }
    pthread_attr_setstacksize((void*)attr, 2 * 1024 * 1024); // 2 MB

    func_t orig = (func_t)dlsym(RTLD_NEXT, "pthread_create");

    ret = orig(thread, attr, start_routine, arg);

    if (used) {
        pthread_attr_destroy(&local);
    }

    return ret;
}

Dockerfile を以下のようにする

FROM groonga/groonga:latest

# Add the patch fix
COPY stack-fix.c /lib/

# Prepare the libraries packages
RUN set -ex \
    && apk add --no-cache  --virtual .build-deps build-base \
    && gcc  -shared -fPIC /lib/stack-fix.c -o /lib/stack-fix.so \
    && apk del .build-deps

# export the environment variable of LD_PRELOAD
ENV LD_PRELOAD /lib/stack-fix.so

RUN mkdir -p /app/groonga/db
WORKDIR /app/groonga

EXPOSE 10041

CMD ["--protocol", "http", "-s", "-n", "./db/groonga.db"]

再び実行して groonga がセマフォを起さない事を確認しました。

% docker-compose build --no-cache 
% docker-compose up --force-recreate

 ところで

こういう問題はすでに解決しているのか、していないのかどこに報告すべきなのかが分かっていませんので有識者の方がいらしたら何卒アドバイスをお願いします。

さくらクラウド上で ISUCON7 予選の環境を構築してみた

あらすじ

ISUCON7 でまたもや予選敗退したんですが来年に備えて復習しておきたいので環境を構築してみました。

やること

[訂正]ディスクプランは HDD ではなくて SSD でした。

さくらのクラウドで 1GB/1仮想コア、ディスクプランは SSD 。これを3台構築。あとスイッチを1台追加してこれとサーバーをつなぎます。host名をそれぞれ app1, app2, app3(db) として、最初に app1 を作ってから app2 と app3 をクローンしていきます。

完成予想図はこんな感じです。さくらのクラウド触った事がある人だったら簡単だと思います。私は初めて触ったのでちょっと手こずりましたが。

f:id:okamuuu:20171024225504p:plain

やった事

ほとんど README.md に書いてあるんですが、まあこの記事は自分の為の備忘録なので...

github.com

ubuntu でログイン

sudo apt update
sudo apt install -y git vim mysql-server nginx
sudo update-alternatives --set editor /usr/bin/vim.basic

isucon ユーザーを作成

isucon ユーザーを作成

sudo adduser isucon

sudo visudo で NOPASS にする。最終行に以下を追記

isucon ALL=NOPASSWD: ALL

isucon ユーザーでログインできるようにする

sudo su isucon
cd
mkdir .ssh/
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys  # authorized_keys に公開鍵を追加する

ssh秘密鍵でのみログインできるようにする(パスワード・チャレンジレスポンスでの SSH を許可しないにチェックを入れていれば不要)

sudo vi /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no

ssh 再起動

$ sudo service ssh restart

環境構築

後は以下を参照

https://github.com/isucon/isucon7-qualify

使用言語を Perl に変更

環境が構築できたら使用する言語を systemd に登録します。 Perl の場合は https://github.com/isucon/isucon7-qualify/blob/master/files/app/isubata.perl.service にファイルがあります。

create /etc/systemd/system/isubata.perl.service

[Unit]
Description = isucon7 qualifier main application in perl

[Service]
WorkingDirectory=/home/isucon/isubata/webapp/perl
EnvironmentFile=/home/isucon/env.sh

ExecStart = /home/isucon/local/perl/bin/carton exec plackup -s Starlet -p 5000 app.psgi

Restart   = always
Type      = simple
User      = isucon
Group     = isucon

[Install]
WantedBy = multi-user.target

install cpan modules

cd /home/isucon/isubata/webapp/perl
/home/isucon/local/perl/bin/carton install

[追記]上記の service には /home/isucon/env.sh が存在する事を期待しているので追加しておきます

create /home/isucon/env.sh

ISUBATA_DB_HOST=127.0.0.1 # たぶん後で db に変更する事になる
ISUBATA_DB_USER=isucon
ISUBATA_DB_PASSWORD=isucon

start

sudo systemctl daemon-reload
sudo systemctl enable isubata.perl
sudo systemctl restart isubata.perl

ベンチが動作することを確認したら サーバーを2台 clone します。 clone するときに ファイルを修正する、にするとIPアドレスMACアドレスが変更されます。この時ファイルを修正する、にチェックを忘れると同一のMACアドレスが存在する事になりややこしい事になりますのでご注意ください。もし間違えたらクローンからやり直したほうが簡単だと思います。

プライベートネットワーク用スイッチを作成

スイッチを作成した後サーバーの Nic とスイッチを接続します。 サーバーを停止する必要があります。

ローカルネットワーク側サーバのネットワーク設定

https://knowledge.sakura.ad.jp/1272/

スイッチと接続した後に以下を各サーバーで実行します。

sudo ifconfig eth1 192.168.101.1/24 # app1
sudo ifconfig eth1 192.168.101.2/24 # app2
sudo ifconfig eth1 192.168.101.3/24 # app3 db

[追記]上記だと再起動後に設定が消えてしまうので以下のように /etc/network/interfaces を修正します。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 59.106.xxx.xxx
netmask 255.255.255.0
gateway 59.106.xxx.xxx

### 追加する項目
auto eth1
iface eth1 inet static
address 192.168.101.1  # app1 の場合は末尾が1
netmask 255.255.0.0

反映させる

sudo /etc/init.d/networking restart 

各サーバーの /etc/hosts に以下を追記して名前解決できるようにします。

192.168.101.1   app1
192.168.101.2   app2
192.168.101.3   app3 db 

app1 と app 2 の MySQL を停止する。nginx, mysql を disable するとき若干 warning が出ます。

sudo systemctl stop mysql
sudo systemctl disable mysql

app3 の nginx と起動している isubata.perl.service を停止する

sudo systemctl stop nginx
sudo systemctl disable nginx

最後にベンチ

ベンチマークはリモートからだけどここでは app1 で実行する事にします。 注意点として プライベートネットワークではなく、外部IPを指定します。

プライベートとグローバルでは帯域が違うためスコアに影響が出ると思われます。

./bin/bench -remotes=59.106.xxx.xxx,59.106..xxx.xxx -output result.json

スコアだけみたい場合

./bin/bench -remotes=59.106.xxx.xxx,59.106.xxx.xxx -output result.json && cat $_ | jq .score

というわけで

これから予選を突破した人たちのブログを読んでしっかり復習したいと思います。