SQL Server 2019 では、R / Python のアプリケーションを展開するための機能が新しく追加されました。
How to deploy an app on SQL Server 2019 big data cluster (preview)
このアプリケーションがどういうものなのかドキュメントを見ながら試してみました。
基本操作は「mssql-ctl-pre」という、新しいコマンドラインツールから実施することになります。
アプリケーションの展開をし、実行するための手順としては、次の 3 つの手順が必要となります。
- Big Data Cluster の Web インタフェースへのログイン
- アプリケーションとしてスクリプトを登録
- アプリケーションの実行
最初に、アプリケーションの展開を実施するために、Big Data Cluster にログインをします。
mssqlctl-pre login -e https://<ip-address-of-service-proxy-lb> -u <user-name> -p <password>
この時は、サービスプロキシの URL にアクセスをすることになりますが、ポート番号まで指定する必要があります。
ここでアクセスする必要があるのは、Big Data Cluster の管理ポータルにアクセスする際の「管理ポータルのサービス IP:30777」と同じ情報になります。
- ip-address-of-service-proxy-lb : 管理ポータルにアクセスするためのホスト情報 (IP or ホスト名:30777)
- user-name : 管理ポータルにアクセスする際のユーザー名 (CONTROLLER_USERNAME)
- password : 上記ユーザーのパスワード
これで、ログインができれば、次のようなコマンドで Big Data Cluster 上にアプリケーションの展開が可能となります。
事前に作成していたコードを Big Data Cluster に展開をすることになります。
ドキュメントのサンプルは、x と y を入力値として受け取り、計算結果を返すシンプルなものですね。
mssqlctl-pre app create --name add-app --version v1 --runtime Python --code ./add.py --inputs x=int,y=int --outputs result=int
アプリケーションを作成すると、アプリケーション用の Pod が Big Data Cluster 上に展開されます。
今回の Big Data Cluster は 2 ノード構成のため、各ノードに Pod が展開されているのかと。
これで、アプリケーションを実行することが可能となります。
mssqlctl-pre app run --name add-app --version v1 --inputs x=1,y=2
このアプリケーションですが、Swagger で定義された API を使用しているようでして、Swagger Inspector のようなものを使用してテストをすることもできるようになっています。
コードから展開したアプリにアクセスをして利用することも可能なようです。
Add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3, [Net.SecurityProtocolType]::Tls, [Net.SecurityProtocolType]::Tls11, [Net.SecurityProtocolType]::Tls12 $cred = New-Object System.Management.Automation.PSCredential("<ユーザー>", (ConvertTo-SecureString -String "<パスワード>" -AsPlainText -Force)) $body = @{ x =100 y= 20 } $hader = @{ "content-type" = 'application/json'; } $ret = Invoke-WebRequest -Uri https://<big Data Cluster Service Proxy>:30777/api/app/add-app/v1/run -Method Post -Credential $cred ` -Headers $hader ` -Body ($body | ConvertTo-Json) $ret.Content | ConvertFrom-Json
Big Data Cluster 上のデータを公開するための外部インタフェースのアプリケーションを簡単に展開できる機能が CTP 2.1 で追加された、アプリケーション展開なのでしょうね。