from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

hinemosでnginxをリバプロにしてapacheとmysqlで気持ち良くなれなかった

ぼくのかんがえたさいきょうのかんきょう

さくらのクラウド<------>routerboard(dst-natとipmasqarade)<--DMZ-->バックエンドサーバー

さくらのクラウドに鯖1を生やす。

鯖1では仮想化して仮想鯖2を生やす.

鯖1の中でhinemosを動かす。hinemosはhinemos_managerとhinemos_webを入れる。

仮想鯖2ではnginxでフロントエンドサーバーとしてやる。

hinemosでは仮想鯖2と自宅で立てた鯖とrouterboardを監視する

routeabordで外部から公開鯖にアクセスできるようにdst-natで宛先natを追加する。

バックエンドはnodeで適当に動的なwebアプリケーションを作る。


という構成がしたかった。。。

できなかった・・・

しんちょくだめです

主に2つのところで死んでた。

dstnatで入ってきたパケットが出ていかない。

nginxのリバプロが効かない

う~ん。。。

鯖1の設定方法

まずあたりまえだがapacheとnginxだとポートが被るのでapache側のポートを80と443を変更した。

80を変えるには/etc/httpd/httpd.confのlistenとvertualserverの<>で囲まれたやつを変える。

次に443。httpd.confはincludeでconf.d以下を全部読み込んでいる。(151行目IncludeOptional conf.d/*.conf)だからconf.d/ssl.confにsslの設定が書いてある。そいつをかえてやる。

次にnginxの設定

/etc/nginx/nginx.confで設定ができる。httpディレクティブの中でlocationディレクティブにlocaion(e.g. /tes)ごとの設定を記述できる。そこにhttp_proxyかけばいい。

ができなかった・・・

ちなみにlogは/var/log/nginxにある。

hinemosの設定

hinemosは80番で動くからこいつもかえてやらないといけない。

/opt/hinemos_web以下にtomcatがあるからそいつの設定から行ける。反映にすこし時間がかかる。

hinemosの使い方

リポジトリでエージェントを登録してsettingで監視方法を追加。historyで見る。

まっさらな新しい環境で試してみる

nginxはcentosの標準リポジトリから提供されていない!ええ・・・

そしてyumは/etc/yum.repo.d/以下に*.repoファイルを作成することでyum installの動きをオーバーライドできるっぽい。

できない

いろいろやってみたができなかった

Apache - nginxでフロントエンドサーバーが機能しない(49946)|teratail

できた

なんか質問した後エラー文ググってifとか消したらなんかできちゃったよ・・・

なんでだよ・・・なんで自分でやろうとするとできなくて周りの人間に頼るとうまくいくんだよ。。。

まあ気を取り直して。

さっきのはいろいろなサイトから設定を引っ張りまくて付け足しまくって秘伝のたれにしたらいけたので、今度はどんどん消して最小限の特異点まで探してみる。

nginxでリバースプロキシするための最小の設定

ええ・・・少なすぎるでしょ・・・なんだこれ・・・

server {
    server_name  .59.1X.XX.XX;
    location / {
        proxy_pass http://127.0.0.1:8080/;
    }
}

これ以外はデフォルトの設定。httpディレクティブ内に入れる。

逆にこんだけでなんであんなに動かなかったんだ・・・余計な設定入れすぎなのか?

もとの環境で再挑戦

いや~クラウドって新しい環境作りたいときはディスク作ればいいだけだし環境戻すには付け替えればいいだけだしなによりsshで環境汚さないしネットワークの設定とか自動でやってくれるし最高ですね。

もとのnginx.confをいろいろけしたりなんかいろいろしてみる

502 Bad Gateway

誰?

016/10/01 22:38:00 [error] 2115#0: *32 connect() failed (111: Connection refused) while connecting to upstream, client: 160.13.225.127, server: XX.XX.XX.XX, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8088/", host: "XX.XX.XX.XX"
2016/10/01 22:38:02 [error] 2115#0: *32 connect() failed (111: Connection refused) while connecting to upstream, client: 160.13.225.127, server: XX.XX.XX.XX, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8088/", host: "XX.XX.XX.XX"
2016/10/01 22:38:03 [error] 2115#0: *32 connect() failed (111: Connection refused) while connecting to upstream, client: 160.13.225.127, server: XX.XX.XX.XX, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8088/", host: "XX.XX.XX.XX"
2016/10/01 22:38:03 [error] 2115#0: *32 connect() failed (111: Connection refused) while connecting to upstream, client: 160.13.225.127, server: XX.XX.XX.XX, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8088/", host: "XX.XX.XX.XX"
2016/10/01 22:38:36 [info] 2115#0: *38 client closed connection while waiting for request, client: XX.XX.XX.XX, server: 0.0.0.0:80
2016/10/01 22:39:00 [info] 2115#0: *34 client timed out (110: Connection timed out) while waiting for request, client: 160.13.225.127, server: 0.0.0.0:80
2016/10/01 22:39:36 [info] 2115#0: *39 client closed connection while waiting for request, client: XX.XX.XX.XX, server: 0.0.0.0:80

なんかproxy_send_timeoutあたりのコメントを外したらエラー内容が変わった

connect() failed (111: Connection refused) while connecting to upstream,

apacheのほうではこりを繰り返している

[Fri Sep 30 21:10:13.004692 2016] [mpm_event:notice] [pid 13388:tid 139877781436288] AH00489: Apache/2.4.18 (Unix) OpenSSL                                   /1.0.2f configured -- resuming normal operations
[Fri Sep 30 21:10:13.004753 2016] [core:notice] [pid 13388:tid 139877781436288] AH00094: Command line: '/usr/sbin/httpd -f                                    /etc/httpd/httpd.conf'
[Fri Sep 30 21:10:55.032617 2016] [mpm_event:error] [pid 13388:tid 139877781436288] AH00484: server reached MaxRequestWork                                   ers setting, consider raising the MaxRequestWorkers setting
[Fri Sep 30 21:13:58.795016 2016] [mpm_event:notice] [pid 13388:tid 139877781436288] AH00492: caught SIGWINCH, shutting do                                   wn gracefully
[Fri Sep 30 21:14:06.028931 2016] [auth_digest:notice] [pid 13531:tid 140189955766144] AH01757: generating secret for dige                                   st authentication ...
[Fri Sep 30 21:14:07.002090 2016] [lbmethod_heartbeat:notice] [pid 13531:tid 140189955766144] AH02282: No slotmem from mod                                   _heartmonitor

なんもしてないけど少し変わった。

[Fri Sep 30 20:57:42.006295 2016] [core:notice] [pid 13028:tid 140603076126592] AH00094: Command line: '/usr/sbin/httpd -f /etc/httpd/httpd.conf'
[Fri Sep 30 21:04:55.666863 2016] [mpm_event:notice] [pid 13028:tid 140603076126592] AH00492: caught SIGWINCH, shutting down gracefully
[Fri Sep 30 21:05:03.030001 2016] [auth_digest:notice] [pid 13229:tid 140024806479744] AH01757: generating secret for digest authentication ...
[Fri Sep 30 21:05:04.003584 2016] [lbmethod_heartbeat:notice] [pid 13229:tid 140024806479744] AH02282: No slotmem from mod_heartmonitor
[Fri Sep 30 21:05:04.006081 2016] [mpm_event:notice] [pid 13229:tid 140024806479744] AH00489: Apache/2.4.18 (Unix) OpenSSL/1.0.2f configured -- resuming normal operations
[Fri Sep 30 21:05:04.006150 2016] [core:notice] [pid 13229:tid 140024806479744] AH00094: Command line: '/usr/sbin/httpd -f /etc/httpd/httpd.conf'
[Fri Sep 30 21:05:45.024185 2016] [mpm_event:error] [pid 13229:tid 140024806479744] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

なんかerrorって書いてあるとこググってみる

AH00161

とりあえずmpm_event_moduleディレクティブのMaxRequestWorkerの値を50から500にしてみた。

優勝

さくらからl2tpv3/IPSecVPNを立てる

ある知り合いからrouterboardで外側から入ってきた通信がdst-natで外に出ていかない的な話を嘆いていたら

「もうそれVPNしたほうが早いんじゃないの」

と言われたのでそうしてみる。

環境としてはrouterboardとさくらのクラウドVPCルーターで拠点間接続をする感じ。routerboardはl2tp clientとして稼働させる。

l2tpさくらのクラウドにつなぐのは2回目だったため、余裕だろうと思っていたがなかなかうまくつながらなかった。

routerboardでl2tpv3やるならこの記事が詳しい。

sig9.hatenablog.com

んでこれ通りにせっていしてみたんだけどつながらなかった。

l2tpv3/ipsecについて

前回のl2tpではtransport modeを使用していた?が今回は拠点間なのでtunnel modeを使用する。

l2tpv3はまずudp 1701で通信する。

L2TPv3トンネルの確立には、コネクション制御メッセージおよびセッション制御メッセージが用いられます。L2TPv3によるL2VPNが構築される場合には、コネクション制御メッセージによってトンネルが作られたあとにセッション制御メッセージによってセッションが確立されます。

logを見てみる

PPPは確立してる。

ipsecも確立してる。

次にt2tp。SCCRQをこっちが投げているのに向こうから返答がない。向こう側が悪い気がするな。

www.infraexpert.com

L2TPv3を用いたL2VPN

www.cisco.com

こんな記事を見つけた↓

さくらVPSではL2TPv3の利用は出来ない | ITログ

これ魔剤!?いや自分の場合はクラウドだけどこれはあり得るかもな・・・

でもtwitterとかみてたりすると出来てる人もいる。さくら公式もl2tpv3の論文出してるし。

ということで公式に聞いてみた。

長くなったのでいったん公開。ブログはとりあえず公開するのが一番大事ってどっかのエンジニアも言ってましたし。ブログのタイトルのことはできましたし。