WEBサーバー

DropboxをEC2に入れて冗長化 > Syncthing導入

前述、ECCUBE3 on EFSが遅すぎるため、Dropboxを入れて、冗長化してみましたが、

Windows版だと、一番性能が良いと思っておりましたが、
CPUがやたらと回るし、ファイル同期も欠損が生じるレベル。

CPUクレジットが減る一方で、手動停止する始末・・・

***

S3Syncなど、いろいろな冗長化の方法はあると思いますが、
今回は、「Syncthing」という同期ツールを使いました。

センターサーバー(親)はあるものの、P2Pなので、
クライアント同士がファイルを持ち合います。
=親はファイルを持たない

オープンソースなので、悪いコードが含まれているかも、
確認可能なのも、いいところ。

 

Syncthing

Pythonのバージョンの違いなどで、インストールが難航したのですが、
Alpha LinuxのDockerイメージを見つけたので、
それを用いました。

https://hub.docker.com/r/syncthing/syncthing

 

インストールが終わると、あとはブラウザーを使って、設定するだけ。
超簡単なんですが、

 

所有者問題で苦労しました。

Docker Fileには、

ENV PUID=1000 PGID=1000 HOME=/var/syncthing

と、定義されていますが、ec2-userは500:500

WinSCPは、500で接続しているので、
A機でファイルを作ると、所有者は500ですが、
同期先のB機では、1000になります。

B機で編集すると、所有者の問題から、A機には反映されません。

664にしておけばいいのですが、
都度都度設定するのは、わりと面倒でした。

 

Docker FIleのPUID / GUIDを500:500にすればいいのですが、
うまくいかなかったので、

結局、1000:1000のアカウントで、WINSCPに接続し、完結。

 

同期のタイムラグ

が、数秒あります。

直接編集時は、ブラウザーが、どっちの機に繋がっているかを特定し、
そののサーバーに接続して、作業することで、
タイムラグを解消しました。

 

PS.
AWSを使い始めて、5年目となりました。
もっと便利な機能はあるんだろうけど、未開拓が山積みですが、

特に、トラブった時。解決索を見いだせる様になったので、
「Linux楽しぃ!」と思えるようになってきました。

が、普通のレンタルサーバーが如何に楽(ラク)か、、、

-

AWS EC2に新しいSSHアカウントを作る

EC2にSSH接続用のユーザーを作成する

を参考に、鍵を作ったが、

「No supported authentication methods available」というエラーで、
先に進めず、ドツボにはまる。

.sshや、authorized_keysのパーミションは、既に変更済み。
もちろん、passwd / groupにも、対象アカウントは追加済み。

 

AWS公式に則って、再び再設定。

キーは、EC2 > Network & Security > Key Pairsから生成し、
秘密鍵を、WinSPCに入れ、公開鍵をEC2に保存。

 

/etc/passwdの書き間違い

:がずれていたのを見つけ、修正したところ、

fatal: Access denied for user username by PAM account configuration [preauth]

という、エラーに変わる。

https://ma.ttias.be/ssh-fatal-access-denied-user-pam-account-configuration-preauth/

 

/etc/shadow

初めて見たが、パスワードを保存するファイルらしく、
こっちにもユーザーがないと、通らないっぽい。

 

/etc/passwdと/etc/shadowの編集

/etc/passwdと/etc/shadowファイルについてのまとめ

/etc/passwdを書き換える専用のツールまであるなんて、知らなかった。。。

vipw -s

にて、新しいユーザーを追加したところ、

 

無事ログイン成功!!

 

長かった。。。

PS

EC2-USERのままでも良かったのですが、
Syncthingを使って同期している関係で、実行ユーザーが1000:1000となり、
ec2-userのパーミッションだと、弾かれたりと、面倒で。
※php-fpmは、1000:1000で実行

1000:1000のユーザーで、ログインしたかったんです。

元はと言えば、Syncthiungが、
500:500で動いてくれれば言うことないのですが、
Dockerfileを修正して、buildすると、
Alpineにも関わらず、数GBのサイズになり、諦めた次第です。

/bin/entrypoint.shで、

#!/bin/sh
set -eu
chown "${PUID}:${PGID}" /var/syncthing \
  && exec su-exec "${PUID}:${PGID}" \
   env HOME=/var/syncthing \
     /bin/syncthing "$@"

${PUID}、$PGIDを500:500に書き換えるため、

export PUID=500 PGID=500
env PUID=500 PGID=500

など試したり、
直接500:500にしたんですが、リスタートを繰り返すばかりで。

 

AmazonLinux2にするまでの辛抱なので、
1000:1000でWinSPCにログイン出来たことにより、
随分と作業が楽になります♪

-