メインコンテンツへ移動

Flinkサービスを個別にデプロイする方法

Flinkは HAP システムの拡張モジュールです。ユーザーはモジュールの有効・無効を選択できます。迅速なデプロイについては「Flinkサービスのデプロイ」をご参照ください。

クイックデプロイでは、Flinkサービスを HAP のマイクロサービスと同じサーバー上にデプロイしますが、高いハードウェアリソースが必要です。単一サーバーで要件を満たせない場合は、本ドキュメントを参考に新規サーバー上でFlinkサービスを個別にデプロイしてください。サーバー構成の目安は「単体Flinkサーバー構成」を参照してください。

Dockerのインストール​

Dockerのインストール方法は、Docker公式ガイドまたは、デプロイ手順例の「Dockerインストール」セクションをご覧ください。

現行HAPサービスに独立MinIOサービスが存在するか確認​

HAPサーバー上で以下のコマンドを実行し、出力内にstart minioキーワードを含む行が存在するか確認します。

docker logs $(docker ps | grep sc | awk '{print $1}') | grep minio
  • 出力があれば、独立したMinIOサービスが存在します。
  • 出力がなければ、独立MinIOサービスは存在しません。

HAPマイクロサービス側の調整​

FlinkサービスはMinIO、Kafka、MongoDBサービスへのアクセスが必要です。この場合、(スタンドアロンモードの場合)ローカルストレージコンテナの3つのサービス公開ポートをマッピングしてください。HAPがクラスターモードの場合は調整不要です。

下記の設定例を参考に、docker-compose.yamlを修正してください。

  1. MinIO、Kafka、MongoDBサービスのポートをマッピングします。

集計テーブル機能を有効にする場合のみFlinkはMongoDBへのアクセスが必要です。未使用の場合はMongoDBのポートマッピングは不要です。
MongoDBのポートマッピングが必要な場合、スタンドアロンモードの内蔵MongoDBでは認証がデフォルトで無効です。変更時はデータセキュリティのドキュメントを必ず参照してください。

  1. FlinkサービスへのHAP接続用環境変数を設定します。
app:
environment:
ENV_FLINK_URL: http://192.168.10.30:58081 # 追加:Flinkサービスのアドレスを指定。実際のIPに応じて修正
sc:
ports:
- 9010:9010 # 新規:MinIOポートマッピング
- 9092:9092 # 新規:Kafkaポートマッピング
- 27017:27017 # 新規:MongoDBポートマッピング
例:docker-compose.yaml設定ファイル
version: '3'
services:
app:
image: nocoly/hap:7.5.1
environment: &app-environment
ENV_ADDRESS_MAIN: "https://hap.domain.com"
ENV_APP_VERSION: "7.5.1"
ENV_API_TOKEN: "******"
ENV_FLINK_URL: http://192.168.10.30:58081 # 追加:Flinkサービスのアドレス。実運用に応じて修正
ports:
- 8880:8880
volumes:
- ./volume/data/:/data/
- ../data:/data/hap/data
sc:
image: nocoly/sc:3.2.0
environment:
<<: *app-environment
volumes:
- ./volume/data/:/data/
ports:
- 9010:9010 # 新規:MinIOポートマッピング
- 9092:9092 # 新規:Kafkaポートマッピング
- 27017:27017 # 新規:MongoDBポートマッピング

修正後、管理スクリプトのディレクトリで以下を実行します。

bash service.sh restartall

これでマイクロサービスが再起動され、変更内容が反映されます。

Flinkサービスのデプロイ​

  1. Swarm環境を初期化します。
docker swarm init
  1. ディレクトリを作成します。
mkdir -p /data/hap/script/volume/data
  1. Flinkイメージをダウンロードします(オフラインパッケージダウンロードはこちら)。
docker pull nocoly/flink:1.19.720
  1. 設定ファイルを作成します。
cat > /data/hap/script/flink.yaml <<EOF
version: '3'
services:
flink:
image: nocoly/flink:1.19.720
entrypoint: ["/bin/bash"]
command: ["/run.sh"]
environment:
ENV_FLINK_S3_ACCESSKEY: "mdstorage"
ENV_FLINK_S3_SECRETKEY: "eBxExGQJNhGosgv5FQJiVNqH"
ENV_FLINK_S3_SSL: "false"
ENV_FLINK_S3_PATH_STYLE_ACCESS: "true"
ENV_FLINK_S3_ENDPOINT: "sc:9010"
ENV_FLINK_S3_BUCKET: "mdoc"
ENV_FLINK_LOG_LEVEL: "INFO"
ENV_FLINK_JOBMANAGER_MEMORY: "4096m"
ENV_FLINK_TASKMANAGER_MEMORY: "16384m"
ENV_FLINK_TASKMANAGER_SLOTS: "50"
ENV_KAFKA_ENDPOINTS: "sc:9092"
ports:
- 58081:8081
volumes:
- ./volume/data/:/data/
extra_hosts:
- "sc:192.168.10.28" # HAPサーバーの実IPに変更
EOF
  1. 起動スクリプトを設定します。
cat > /data/hap/script/startflink.sh <<-EOF
docker stack deploy -c /data/hap/script/flink.yaml flink
EOF
chmod +x /data/hap/script/startflink.sh
  1. Flinkサービスを起動します。
bash /data/hap/script/startflink.sh
  • Flinkコンテナ起動後、初期化完了まで約5分要する場合があります。
  • 停止するには docker stack rm flink を実行します。