はじめに
リノシスの神谷です。代表やってます。代表の仕事の1つは落ちてるタスクを拾うことです。最近は社内の複数拠点をつなぐネットワークのお仕事とか、データ周りのインフラのお仕事とか、ラズパイ / Coral (Google の方ね) でゴニョゴニョとか、営業用のデモアプリを突貫で作るとか(最近SwiftとXcodeを覚えました)、デモアプリ用のアセットを作るとか(最近フォトショとイラレを覚えました)、色々あります。
踏み台 (ssh tunnel) 経由じゃないと接続できないDB、よくありますよね。
Redashの通常の設定では踏み台経由できないのでサーバ側で設定する方法のメモ。
方針
autossh というのがあるので、それを使う。autosshは、ssh接続が切断されても自動的に再接続してくれるそう。使い方も ssh と一緒っぽいので楽。
手順
autossh をインストールして、ついでに公開鍵も作っておく。
$ sudo apt install autossh $ ssh-keygen
接続先のホストの authorized_keys に登録しておく。その後、以下のコマンドで接続。
$ autossh -M 0 -f -N -L 172.XXX.XXX.XXX:10001:example.ap-northeast-1.rds.amazonaws.com:5432 ec2-user@fumidai.example.com $ netstat -aln | grep 10001 tcp 0 0 172.XXX.XXX.XXX:10001 0.0.0.0:* LISTEN
はい、ちゃんとつながってますね。ここで LISTEN する IP アドレスを localhost にしないのは、Redash が Docker 上で動いているから。localhost にしちゃうと Docker 側から接続できない。(172で始まるアドレスは EC2 のプライベートアドレス)
Redash側でも設定してみて、テストしてつながればOK。
うまくいくことを確認したらスクリプト化して、再起動しても autossh が起動するように設定しておく。