####以前にEualumという高度なCDC技術を実装し、Kafka等の技術を上手く活用する形で「Exactly Once」のサポート等を実現した、ノーコード・データパイプライン作成・管理ソリューションを紹介しましたが、今回はある意味で「地味」に「でも、しかし!堅実に」ファイルシステム機能を使った、CSVファイル収集&自動ストリーミングで指定されたDB上に集約テーブルを作成する検証を行いたいと思います。
##先ずは環境の準備から・・・
Equalumのファイルシステム内に直接CSVファイルを送り込んでも良いのですが、現実的には定期的で細かいCSVファイルが大量に書き込まれたりするケースが想定されるので、外部のサーバに実態を送り込んで「その状況をNFS経由で読んで処理する」方式で試してみたいと思います。
検証環境的には、仮想マシンを複数台使い(OSはCentOS7)、MBP上のPythonからCSVファイルの連続生成&検証環境ノードへの自動転送を行います。
また、極めて私的限定環境での作業ですので、通常普通に存在いしている「ファイアーウォール」などのセキュリティが無い状況だという事をご理解頂ければ幸いです。
まずは、nfs環境の導入を関係するノードに対して行います。今回の場合は試用環境のEqualumノードと、CDCテストで利用しているMySQLノードに対して作業を行います。
# yum -y install nfs-utils
MySQLノード側に実態を送り込むディレクトリを作成します。今回は/var配下にcsvというディレクトリを設置しました。
# mkdir /var/csv
次に、このディレクトリを公開する為の設定を記述します。
# vi /etc/exports
公開する相手側の情報を記述します
/var/csv xxx.xxx.xxx.0/24 (rw,no_root_squash,async)
MySQLノード側の関連サービスを起動します。
# systemctl start rpcbind
# systemctl start nfs
次回以降に自動起動するようにしておきます。
# systemctl enable rpcbind
# systemctl enable nfs
無事に起動できているかを確認します。
# systemctl status rpcbind
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since 月 2020-02-03 22:21:22 JST; 41s ago
Main PID: 1711 (rpcbind)
CGroup: /system.slice/rpcbind.service
mq1711 /sbin/rpcbind -w
2月 03 22:21:22 cent77-01 systemd[1]: Starting RPC bind service...
2月 03 22:21:22 cent77-01 systemd[1]: Started RPC bind service.
# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
mqorder-with-mounts.conf
Active: active (exited) since 月 2020-02-03 22:21:30 JST; 41s ago
Main PID: 1751 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
2月 03 22:21:29 cent77-01 systemd[1]: Starting NFS server and services...
2月 03 22:21:30 cent77-01 systemd[1]: Started NFS server and services.
同様の手順でEqualumノード側を準備します。
Equalumノード側にFS接続で利用するディレクトリを作成してマウントします。今回は取り急ぎのコマンドベースで処理しましたが、/etc/fstabに記述しておけば次回以降も起動すれば使えるようになります。
# mkdir /var/csv
# mount -v -t nfs xxx.xxx.xxx.xxx:/var/csv /var/csv
# vi /etc/fstab
この行を追加(xxx.xxx.xxx.xxxはサーバ側のIPで今回はMySQLが動いているノード)
xxx.xxx.xxx.xxx:/var/csv /var/csv nfs rw,auto 0 0
無事にMySQLノード側のディレクトリと連携できている様です。
##今回のまとめ
今回は、検証環境で使うNFS構成を取り急ぎ行いました。ファイアーウォールを外した環境ですので、実際の多くのケースでは**「この周辺の設定作業が必要」**だと思いますが、それらの部分については適宜作業を行うように御願い致します。
次回は、今回の検証で使用するCSVファイル作成ツールをPythonで作る作業を行います。