-
タグ
タグ
- アーキテクト
- アジャイル開発
- アプリ開発
- インシデントレスポンス
- イベントレポート
- カスタマーストーリー
- カルチャー
- 官民学・業界連携
- 企業市民活動
- クラウド
- クラウドインテグレーション
- クラブ活動
- コーポレート
- 広報・マーケティング
- 攻撃者グループ
- 子育て、生活
- サイバー救急センター
- サイバー救急センターレポート
- サイバー攻撃
- サイバー犯罪
- サイバー・グリッド・ジャパン
- サプライチェーンリスク
- システム開発
- 趣味
- 障がい者採用
- 初心者向け
- 白浜シンポジウム
- 情シス向け
- 情報モラル
- 情報漏えい対策
- 人材開発・教育
- 診断30周年
- スレットインテリジェンス
- すごうで
- セキュリティ
- セキュリティ診断
- セキュリティ診断レポート
- 脆弱性
- 脆弱性管理
- ゼロトラスト
- 対談
- ダイバーシティ
- テレワーク
- データベース
- デジタルアイデンティティ
- 働き方改革
- 標的型攻撃
- プラス・セキュリティ人材
- モバイルアプリ
- ライター紹介
- ラックセキュリティアカデミー
- ランサムウェア
- リモートデスクトップ
- 1on1
- AI
- ASM
- CIS Controls
- CODE BLUE
- CTF
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- DevSecOps
- DX
- EC
- EDR
- FalconNest
- IoT
- IR
- JSOC
- JSOC INSIGHT
- LAC Security Insight
- NDR
- OWASP
- SASE
- Tech Crawling
- XDR
クラウドサービス部の石田です。
運用の場面でも使いやすいローコード開発環境をOracle Cloud Infrastructure(以下、OCI)上に構築する連載の第1回では、Node-REDとStreamingサービスの準備までをご説明しました。第2回となる今回は、これらを接続し連携させていきましょう。
StreamingサービスのKafka API互換機能
Node-REDとStreamingサービスを連携させるやり方はいくつか考えられますが、今回はStreamingサービスのKafka API互換機能を利用します。
Kafkaは、リアルタイムのストリーミング処理を実現するOSSで、ストリーミングのソフトウェアとしてはデファクトスタンダードと言えます。そのため、主要なパブリッククラウドのサービスでもKafkaと互換機能を持つものは多くあります。Microsoft AzureではEvent Hubs、AWSではManaged Streaming for Apache Kafkaなど、Kafkaクライアントから直接利用できる仕組みが整っています。
今回利用するStreamingサービスもKafkaのAPIと互換性を備えており、様々なKafkaクライアントから接続可能です。そしてNode-REDにもKafkaのクライアント機能を持ったノードが提供されているため、GUIベースでストリーミング連携を構築できます。今回はこれらを用いてNode-REDとStreamingサービスを接続していきます。
Streamingサービス側の準備
Kafka API互換機能を使用するには、権限の設定が必要です。OCIのIAMユーザの権限で接続する形になるので、Kafka API接続用の専用IAMユーザを作成した後、そのユーザに権限を与えます。
IAMユーザ・グループの作成
通常の手順でOCIコンソールやOCI CLIでユーザを作成します。既存のユーザの兼用も可能ですが、実際のシステムに使用する場合はStreamingサービス接続専用のアカウントにしておきましょう。また権限付与用のグループを作成し、作成したユーザを参加させておきます。
認証トークンの作成
先の手順で用意したユーザでログインし、認証トークンを作成します。一般的な手順なので公式ドキュメント※1等を参考にして実施してください。できたトークンは保管しておきます。すでに作成済みの転用可能なトークンがあれば、それを使用しても構いません。
※1 認証トークンの作成
権限付与
権限付与のために以下のようなポリシーを作成します。
Allow group <your-group> to manage stream-family in compartment <your-compartment>
ここで<your-group>は先ほど作成した権限付与用のグループを指定します。<your-compartment>は今回ストリームを作成したコンパートメントを指定します。
このポリシーは、Kafka API互換機能を使用する際は明示的に設定する必要があります。all-resourcesでまとめて権限付与するだけではこのAPI互換機能は利用できないようなので、注意が必要です(Streamingサービスのネイティブ接続の方は、all-resourcesでの権限付与だけで利用可能です)。
接続情報確認
ここまで設定できれば、Kafka API互換機能を使えるようになっています。最後にこの機能をクライアントから利用するための接続情報を確認しましょう。
最初の手順で用意したIAMユーザでログインし、ストリーム・プールの詳細画面に移動します。「Kafka接続設定」のタブをクリックすると、Kafka APIに接続するのに必要な各種情報が表示されるので、コピーして保存しておいてください。特に必要なのは「ブートストラップ・サーバー」と「SASL接続文字列」です。
Node-RED側の準備
Node-RED側を設定します。
Node-REDではサードパーティーからKafka接続用のノードが提供されています。複数あるのですが、今回は「node-red-contrib-rdkafka-secure」というノードを使用します。これはlibrdkafkaというライブラリを使用しており、このライブラリはStreamingサービスでサポートが(ベストエフォートと断りはありますが)明示されているからです。※2
※2 Apache Kafkaでのストリーミングの使用 Kafkaクライアント
このノードをインストールする際はコンパイルが発生するので、まずはOS側で必要な設定を行います。Node-REDをインストールしたVMにログインし、以下のコマンドを実行します。コンパイル環境と、「node-red-contrib-rdkafka-secure」のコンパイルに必要なライブラリのインストールになります。
sudo dnf groupinstall "Development Tools"
sudo dnf install openssl-devel lz4-devel cyrus-sasl-devel compat-openssl11
次はNode-RED上の設定です。Node-REDにWebブラウザで接続し、右上のハンバーガーメニューから「パレットの管理」を選択します。
すると、パレットの管理画面が表示されるので、「ノードを追加」に切り替えた後、検索欄から「node-red-contrib-rdkafka-secure」を検索します。検索された「node-red-contrib-rdkafka-secure」から「ノードを追加」ボタンをクリックします。
以下のように確認メッセージが表示されるので、「追加」ボタンをクリックしインストールを開始します。インストール時にはコンパイルを行うので1分ほど時間がかかります(ARMの場合)。
インストールが終わり「現在のノード」タブに切り替えると、そこに「node-red-contrib-rdkafka-secure」が表示されていることがわかります。
ここまでできれば、Node-REDの画面右側のノードリストの「ネットワーク」の下に、「Kafka in」「Kafka out」の2つのノードが表示されるようになります。
動作確認
それでは試しにNode-REDとStreamingサービスを接続してみましょう。Node-REDの画面で「Kafka in」をドラッグアンドドロップして、中央のフロー画面に配置します。
この「Kafka in」のノードをダブルクリックして設定を行います。表示された画面から、まずはKafkaブローカー(Kafkaサービスを提供しているインスタンス)の設定をします。Broker欄の「+」ボタンを押してください。
以下のような画面になるので設定していきます。先ほど「Streamingサービス側の準備」で取得したKafka接続設定の情報を使うので、用意しておいてください。
| 項目 | 設定内容 |
|---|---|
| Broker List | Kafka接続設定の「ブートストラップ・サーバー」の内容を記載します。 |
| Client ID | 空欄 |
| Security protocol | 「sasl_ssl」を選択します。 |
| SASL mechanism | 「PLAIN」を選択します。 |
| SASL username | Kafka接続設定の「SASL接続文字列」の中の、「username=」で指定されている値を記載します。 |
| SASL password | 「IAMユーザ・グループの作成」で用意した、Streamingサービス接続用のIAMユーザの認証トークンを記載します。 |
| SSL CA location | 空欄 |
| Enable SSL cert verification | デフォルト(チェック済み) |
設定ができたら、右上の「追加」ボタンを押します。
Kafka inノードの編集画面に戻るので、以下のように設定します。
Brokerには今設定したものが入っているはずなので、他に設定する必要があるのは「Topic」だけです。これはStreamingサービスでいうストリームのことなので、今回作成したストリームである「to-mailing-topic」を記入します。これで設定は終わりなので、右上の「完了」ボタンをクリックします。
次はフローの構成画面で「debug」ノードを配置しKafka inノードと接続します。
このノードは、前ノードから流れてきた情報を右側のデバッグウインドウに表示するノードです。これでStreamingサービスの「to-mailing-topic」ストリームに書き込まれたメッセージがKafka inノードに読み取られ、debugノードに受け渡されてこのデバッグウインドウに表示されることになります。ここまでできたら、Node-RED画面右上の「デプロイ」ボタンを押します。うまくいけばデプロイ成功のメッセージが表示され、フロー画面のKafka inノードの下に「connected」のメッセージが表示されます。
この状態で、先ほど「Streamingサービスの動作確認」でやったようにテスト・メッセージを送ります。
すると、Node-REDのデバッグウインドウにそのメッセージが表示されます。
これでStreamingサービスとNode-REDの間で通信ができるようになりました。逆方向(Node-REDのフローからStreamingサービスにメッセージを書き込む)の機能もありますが、今回使うのはこの方向のみなので、動作確認はこれまでにしておきます。逆方向の動作確認は読者諸氏で挑戦してみてください。
おわりに
StreamingサービスとNode-REDの間で通信できるようになり、リアルタイム処理を前提としたさまざまな連携が可能になりました。次回はこれを使って簡単なフローを作って動かしてみたいと思います。それではお楽しみに。
プロフィール
石田 翼
ハードウェア側からインフラ業務に入ったのに今や1mmもハードウェアを使わないクラウドのお仕事が中心になって困惑しているインフラエンジニア。LinuxやOracle DBの設計・構築などに従事しつつスキルをクラウドシフト中。
タグ
- アーキテクト
- アジャイル開発
- アプリ開発
- インシデントレスポンス
- イベントレポート
- カスタマーストーリー
- カルチャー
- 官民学・業界連携
- 企業市民活動
- クラウド
- クラウドインテグレーション
- クラブ活動
- コーポレート
- 広報・マーケティング
- 攻撃者グループ
- もっと見る +
- 子育て、生活
- サイバー救急センター
- サイバー救急センターレポート
- サイバー攻撃
- サイバー犯罪
- サイバー・グリッド・ジャパン
- サプライチェーンリスク
- システム開発
- 趣味
- 障がい者採用
- 初心者向け
- 白浜シンポジウム
- 情シス向け
- 情報モラル
- 情報漏えい対策
- 人材開発・教育
- 診断30周年
- スレットインテリジェンス
- すごうで
- セキュリティ
- セキュリティ診断
- セキュリティ診断レポート
- 脆弱性
- 脆弱性管理
- ゼロトラスト
- 対談
- ダイバーシティ
- テレワーク
- データベース
- デジタルアイデンティティ
- 働き方改革
- 標的型攻撃
- プラス・セキュリティ人材
- モバイルアプリ
- ライター紹介
- ラックセキュリティアカデミー
- ランサムウェア
- リモートデスクトップ
- 1on1
- AI
- ASM
- CIS Controls
- CODE BLUE
- CTF
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- DevSecOps
- DX
- EC
- EDR
- FalconNest
- IoT
- IR
- JSOC
- JSOC INSIGHT
- LAC Security Insight
- NDR
- OWASP
- SASE
- Tech Crawling
- XDR








