SQL Server on Linux on Azure VM を試してみる
2017/4/20にMicrosoft Data Ampというオンラインイベントがありましたが、日本では4/24に都内で同イベントが開催されたので参加してきました。Data Ampでの発表内容はMicrosoftのページやまとめてくれているブログなどを参考にしてもらえればと思います。
Microsoft Data Amp | Microsoft
次期SQL Server(SQL Server vNext)としてSQL Server 2017が発表されました。SQL Server on Linuxが面白そうなので触ってみたいと思います。現在、CTP2.0(パブリックプレビュー版)で公開されています。色々な機能を試す前に今回はまず立ち上げることをやってみたいと思います。LinuxでSQL Serverを体験することができる日が来るとは10年前では考えられなかったですね。Microsoft ♡ Linuxの流れは本物ですね。
SQL Server v.Next パブリック プレビュー
SQL Server v.Next—SQL Server on Linux | Microsoft
手元にLinuxマシンがなかったのと、さくっと試したかったので今回はAzure上のRedhat Enterprise LinuxでSQL Server on Linuxを試して行きたいと思います。Azureで作ってしまうので、Linuxへインストールしてるぞっていう感じが半減ぐらいですが・・・
それでは、やってみたいと思います。
Overview
全体の流れを先に書いておきます。
- 準備(Azureアカウントなど)
- Azure Virtual Machine 作成
- Azure Virtual Machine 設定変更
- Azure Virtual Machine への接続
- SQL Serverの初期セットアップ
- SQL Server on Linuxに接続
大まかな流れは、Microsoftの公式ページを参考にしています。
とりあえずAzure上のLinuxに構築されたSQL Serverに外部からアクセスできることを今回のゴールにします。細かい機能などを試すのはまた今度です。だいぶ長い説明になりますが30分ぐらいで出来た内容になります。
準備
今回は、Azure上にSQL Serverを構築します。ですのでAzureアカウントの登録を最初にしておいてください。無料枠あります。お試しアカウントでも良いですし、サブスクリプションを持っていれば簡単に始められますのでさくっと登録してみてください。
Azure Virtual Machine 作成
Azure PortalからAzure Virtual Machineを作成していきます。
“+新規"から"Coumpute"で"すべて表示"と進んでいきます。フィルタに"SQL Server 2017”と入力すると、“SQL Server 2017 CTP 2.0 on Red Hat Enterprise Linux 7.3”と候補が出てくるので選択します。ここから作成していきます。4/30時点では、Red Hat Enterprise Linux 7.3がベースとなっているようですね。Microsoft公式(2017-3-17)では、Red Hat Enterprise Linux 7.2になっているのですが対応バージョンが上がったようです。
基本項目の入力を行っていきます。名前、ディスクの種類、ユーザ名、SSH公開キー、サブスクリプション、リソースグループ、Locationと順番に埋めていきましょう。名前は、自分の好きな名前を付けてください。ユニークになるようにしないといけないです。ディスクの種類は、SSDでいいと思います。わざわざHDDを選ぶ必要もないかと思います。ユーザ名は、SSHでアクセスするために使用するユーザ名です。好きな名前を付ければよいと思います。だいたい、サンプルで記載されているものは、“azureadmin”みたいな名前になっていることが多いので、迷う方はその名前でいいと思います。
SSH公開キーを入力しないといけないので、別途公開キーを作成します。方法はいくつかあります。私が生成した方法を記載しておきます。端末はWindwosです。まずGit for Windows(https://git-scm.com/download/)をインストールします。私の場合は、もともとVisual Studio Codeを使っていたのもあってインストール済みでした。インストールできたら、Git Bashを開き下記コマンドを入力します。
ssh-keygen
設定するパスワードなどいくつか聞かれるので入力すれば生成完了です。"C:\Users\UserName.ssh"に公開キーができるので、その中身をコピーして貼り付けます。
サブスクリプション、リソースグループは各自で適切なものを選択ください。Locationですが、東日本で選択しようとするとエラーが出ました。リージョンは、米国東部/米国中東部/ヨーロッパ西部/東南アジア/米国西部2/米国中西部だけのようです。お試しなのでどこでもよいので選択します。
次にプランを選んでいきます。
On the Size blade, choose a machine size. For development and functional testing, we recommend a VM size of DS2 or higher. For performance testing, use DS13 or higher.
機能確認であれば、DS2かそれ以上と書かれているのでその通りに従いましょう。
オプション設定はすべてデフォルトのままで変更してません。こだわりがなければ、とりあえずデフォルトでいいかと思います。さて、ここまでできればいよいよVMの作成です。作成ボタンを押してから5分~10分ぐらいデプロイに時間にかかります。
ダッシュボードにクルクル表示されるので気長に待ちましょう。
Azure Virtual Machine 設定変更
VMができると何やらたくさんいろいろなものが出来上がります。いろいろ気になりますが、とりあえずそれぞれを細かく見ていくのはまたの機会にすることとしてSQL Serverに接続するために必要な設定を入れていきます。
VMに設定しないといけないものは1つだけです。ネットワークのアクセス許可を与えてあげる必要があります。初期の状態では、SSHでAzure VMにはつながりますが、外部からSQL Serverに直接つなぐことはできませんので、SQL Serverへの接続ポート(デフォルトは1433ですね)のアクセス許可をしていきます。
Azure Portalから先ほど作成したAzure VMを選択します。ネットワークインターフェースから表示されているインターフェースを選択します。おそらく1つだけ表示されているので迷うことはないかと思います。ネットワークインターフェースの概要から、ネットワークセキュリティグループのリンクを選択します。そうするとネットワークセキュリティグループに行けます。(すべてのリソースから、直接ネットワークセキュリティグループに遷移してもOKです)
この中で、受信セキュリティ規則という項目があるので、横のアイコンをクリックして追加していきます。"+追加"で必要な情報を入力していきます。名前は何でもよいです。サービスは“MS SQL”を選択してください。そうすると1433ポートが勝手にポート番号に入力されます。これで、外部から1433に対してアクセス許可するセキュリティルールができました。
Azure Virtual Machine への接続
Azure VMへはSSHクライアントから接続します。私は、Visual Studio CodeのターミナルをGit Bashに設定しているので、Visual Studio Codeから接続しました。VSCodeのターミナルをGit Bashに設定する方法は下記が参考になると思います。
さて、早速接続してみましょう。ユーザ名はAzure VMを作成した際に決めたユーザ名(例:azureadmin)、パブリックIPアドレスはAzure VMの概要に記載されています。
ssh -l <ユーザー名> <パブリックIPアドレス>
つながりましたか?
SQL Serverの初期セットアップ
SQL Server 2017 CTP 2.0 on Red Hat Enterprise Linux 7.3 としてAzure VMを作成しているので、SQL Server on Linuxの基本的なインストールは完了している状態でVMが生成されています。ただ、この状態だとSQL Serverの初期設定ができていないのでSQL Serverにアクセスすることができません。まず、初期設定をしていきましょう。
Microsoft公式には、下記のコマンドをたたいてねと書かれているのですが、間違っているような・・・そんなコマンドないですね。
sudo /opt/mssql/bin/sqlservr-setup
Linux版の手順に書かれているコマンドが正しそうなので、そちらを使います。
sudo /opt/mssql/bin/mssql-conf setup
実行するとライセンスの承諾とAdministratorのパスワード入力が求められます。
[azureadmin@a2h10-vnext bin]$ sudo /opt/mssql/bin/mssql-conf setup Do you accept the license terms? [Yes/No]:yes Setting up Microsoft SQL Server Enter the new SQL Server system administrator password: Confirm the new SQL Server system administrator password: Starting Microsoft SQL Server... Enabling Microsoft SQL Server to run at boot... Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service. Setup completed successfully.
成功しました。ちなみに、Administrator(sa)のパスワードは、下記の複雑さが求められます。1回私もエラーになってしまいました。
SA account (Minimum length 8 characters, including uppercase and lowercase letters, base 10 digits and/or non-alphanumeric symbols).
SQL Server on Linuxへの接続
さぁセットアップ完了しました。SQL Server On Linuxに接続します。接続はまずはやっぱりSSMS(SQL Server Management Studio)からでしょうかね。下記からダウンロードしてインストールします。どのバージョンでも構わないので、すでにインストール済みのものでとりあえずOKです。
Download SQL Server Management Studio (SSMS)
SQL Server On Linux は当たり前ですが、Windwos認証なんて概念はないのでSQL Server認証で接続します。saアカウントで初期設定したパスワードを入力して接続してみてください。つながるはずです。
繋がりましたか?
Azure上でSQL Server on Linuxはサクッと動かせました。これで色々機能を試していけるのでしばらく遊んでみようかと思います。Dockerも対応してるので、それもいつか試してみたいなぁ。