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楽しぃ!」と思えるようになってきました。

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

-

Docker + PHPFPM デバッグ・エラーログ

[ec2-user@ip-10-0-1-164 ~]$ sudo docker logs phpfpm71 -f –tail=10
172.17.0.1 – 04/Dec/2019:00:02:18 +0000 “GET /index.php” 404
172.17.0.1 – 04/Dec/2019:00:05:09 +0000 “GET /index.php” 200
172.17.0.1 – 04/Dec/2019:00:10:37 +0000 “GET /index.php” 200
172.17.0.1 – 04/Dec/2019:00:13:13 +0000 “GET /index.php” 200
172.17.0.1 – 04/Dec/2019:00:13:15 +0000 “GET /index.php” 404
172.17.0.1 – 04/Dec/2019:00:13:18 +0000 “GET /index.php” 500
172.17.0.1 – 04/Dec/2019:00:13:19 +0000 “GET /index.php” 404
172.17.0.1 – 04/Dec/2019:00:19:33 +0000 “GET /index.php” 404
172.17.0.1 – 04/Dec/2019:00:35:55 +0000 “GET /index_dev.php” 200
172.17.0.1 – 04/Dec/2019:00:35:57 +0000 “GET /index_dev.php” 200

エラーの場合は、コードしか表記されず、
どのファイルの何行目かは、わからない。

 

/usr/local/etc/php-fpm.d/www.conf

;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M

 

/var/log/fpm-php.www.log

[ec2-user@ip-10-0-1-164 ~]$ sudo docker exec phpfpm71 tail -f /var/log/fpm-php.www.log
[04-Dec-2019 03:33:25 Asia/Tokyo] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 98570240 bytes) in /var/www/html/pub3/html/_function.php on line 6
[04-Dec-2019 03:43:39 Asia/Tokyo] PHP Warning: Uncaught Symfony\Component\Debug\Exception\ContextErrorException: Warning: var_export does not handle circular references in /var/www/html/pub3/html/_function.php:6
Stack trace:
#0 [internal function]: Symfony\Component\Debug\ErrorHandler->handleError(2, ‘var_export does…’, ‘/var/www/html/s…’, 6, Array)
#1 /var/www/html/pub3/html/_function.php(6): var_export(Object(Plugin\Point\Entity\OrderPoint), true)
#2 /var/www/html/pub3/app/Plugin/Point/Event/ZeusTokenPaymentEvent.php(43): Plugin\Point\Repository\OrderPointRepository->findOneByOrderForCurrentUser(Object(Eccube\Entity\Order))

 

 

-