web-dev-qa-db-ja.com

OSXからのAmazon EFSマウント

紳士、私はこの素晴らしいポストの指示に従いましたが、つながりませんでした。 Elastic file system(EFS)mount outside AWS

MesosクラスターでCoreOSを使用しています。クラスタ内のすべてのノードにEFSが接続されているため、データやスクリプトなどを共有できます。オフィスから接続できるように、AWS VPCへのVPNトンネルがあります。

ユーザーがいくつかのスクリプトをEFSにアップロードして計算結果を取得したいので、NFSをローカルにマウントしたいと考えています。したがって、上記の記事で推奨されているようにhaproxyを起動します。

Sudo docker run -d --net=Host haproxy /bin/bash -c "echo -e 'listen fs-1e7bb658-us-east-1\n    bind :2049\n    mode tcp\n    option tcplog\n    timeout tunnel 300000\n    server fs-1e7bb658-us-east-1a us-east-1a.fs-1e7bb658.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000' > /haproxy.cfg && haproxy -f /haproxy.cfg"

構成が明確でない場合は、次のようになります。

listen fs-1e7bb658-us-east-1
    bind :2049
    mode tcp
    option tcplog
    timeout tunnel 300000 
    server fs-1e7bb658-us-east-1a us-east-1a.fs-1e7bb658.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000

これは、上記のトピックで提案されているように、EFSへのトンネルでhaproxyを開始します。 Haproxy IPを使用してEFSをクラスターノードの2番目のフォルダー(つまり/ testing)にマウントでき、/ testingにファイルを書き込むと、/ sharedフォルダー内のすべてのノードでそれを確認できるため、動作していることがわかります。例えば:

Sudo mount 100.100.100.68:/ /testing           # Mount using haproxy
echo "testing123!" > /testing/testing.txt    # write to a file
cat /shared/testing.txt                      # get from any node in the cluster
>>> testing123!

したがって、問題は、OSXからマウントしたいときに次のようになることです。

grodriguez:/ Guimo$ Sudo mount 100.100.100.68:/ /sharedfiles
mount_nfs: can't mount / from 100.100.100.68 onto /sharedfiles: RPC prog. not avail

OSXから実行できるため、HaProxyがリッスンしていることを知っています。

grodriguez:/ Guimo$ telnet 100.100.100.68 2049
Trying 100.100.100.68...
Connected to 100.100.100.68.
Escape character is '^]'.

したがって、Telnetを使用してサービスに接続しますが、nfsを使用して接続しません。

セキュリティグループは非常にリベラルであり、それが機能しない場合、私はtelnetを使用して接続しなかったでしょう。したがって、サービスはそのポートで動作しています。

私は、mountdサービスとnfsサービスを探して探すことができましたが、何もしなかったと読みました。 EFSがそれらを隠しているのかもしれません。 OSXが不足しているサービスについて不平を言うのは、おそらくそれが理由です。

grodriguez:/ Guimo$ rpcinfo -p 100.100.100.68
program vers proto   port
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  45358  status
100024    1   tcp  60755  status
100021    1   udp  43439  nlockmgr
100021    3   udp  43439  nlockmgr
100021    4   udp  43439  nlockmgr
100021    1   tcp  34893  nlockmgr
100021    3   tcp  34893  nlockmgr
100021    4   tcp  34893  nlockmgr

しかし、それでもトンネルが機能しなかった場合、エージェントが正常に接続する必要があるのはなぜですか?

ところで。 AWSで接続する方法も試しましたが、OSXにも問題があります。

grodriguez:/ Guimo$ mount -t nfs4 -o nfsvers=4.1 100.100.100.68:/ /sharedfiles
mount: exec /System/Library/Filesystems/nfs4.fs/Contents/Resources/mount_nfs4 for /sharedfiles: No such file or directory

助けてくれてありがとう。

よろしく、ギモ

編集:下の私のメモからケースが明確でない場合。 Mac用のdockerを使用してdebianを開始し、コンテナーにnfs4サポートをインストールしてから、HaProxyトンネルに接続しました。すべてうまくいき、testing.txtファイルを確認できます。

したがって、これはOSXの問題であり、上記のソリューションとは関係ありません。

5
G Rodriguez

この種の質問に対する答えを探している人のために、マイケルからのコメントは私の問題を解決しました。

AWSに直接接続し、適切なインバウンドルール(TCP 2049オフィスサブネット)をセキュリティグループに追加した後、ローカルMacbookにEFSをマウントできます。

Sudo mount -t nfs -o vers=4 -o tcp -w x.x.x.x:/ efs
7
Sheng