a2 Tech blog

試したこと・調べたこと・感じたことを発信するITエンジニアの日記です。仕事とは直接関係ないけど興味あることを模索していきます。

SQL Server on Linux on Azure VM を試してみる

f:id:ninna2:20170430222728j:plain

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(パブリックプレビュー版)で公開されています。色々な機能を試す前に今回はまず立ち上げることをやってみたいと思います。LinuxSQL Serverを体験することができる日が来るとは10年前では考えられなかったですね。MicrosoftLinuxの流れは本物ですね。

SQL Server v.Next パブリック プレビュー

SQL Server v.Next—SQL Server on Linux | Microsoft

手元にLinuxマシンがなかったのと、さくっと試したかったので今回はAzure上のRedhat Enterprise LinuxSQL Server on Linuxを試して行きたいと思います。Azureで作ってしまうので、Linuxへインストールしてるぞっていう感じが半減ぐらいですが・・・

それでは、やってみたいと思います。

Overview

全体の流れを先に書いておきます。

  1. 準備(Azureアカウントなど)
  2. Azure Virtual Machine 作成
  3. Azure Virtual Machine 設定変更
  4. Azure Virtual Machine への接続
  5. SQL Serverの初期セットアップ
  6. SQL Server on Linuxに接続

大まかな流れは、Microsoftの公式ページを参考にしています。

docs.microsoft.com

とりあえずAzure上のLinuxに構築されたSQL Serverに外部からアクセスできることを今回のゴールにします。細かい機能などを試すのはまた今度です。だいぶ長い説明になりますが30分ぐらいで出来た内容になります。

準備

今回は、Azure上にSQL Serverを構築します。ですのでAzureアカウントの登録を最初にしておいてください。無料枠あります。お試しアカウントでも良いですし、サブスクリプションを持っていれば簡単に始められますのでさくっと登録してみてください。

azure.microsoft.com

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になっているのですが対応バージョンが上がったようです。

f:id:ninna2:20170430195139j:plain:w360

基本項目の入力を行っていきます。名前、ディスクの種類、ユーザ名、SSH公開キー、サブスクリプション、リソースグループ、Locationと順番に埋めていきましょう。名前は、自分の好きな名前を付けてください。ユニークになるようにしないといけないです。ディスクの種類は、SSDでいいと思います。わざわざHDDを選ぶ必要もないかと思います。ユーザ名は、SSHでアクセスするために使用するユーザ名です。好きな名前を付ければよいと思います。だいたい、サンプルで記載されているものは、“azureadmin”みたいな名前になっていることが多いので、迷う方はその名前でいいと思います。

f:id:ninna2:20170430234723j:plain:w360

SSH公開キーを入力しないといけないので、別途公開キーを作成します。方法はいくつかあります。私が生成した方法を記載しておきます。端末はWindwosです。まずGit for Windows(https://git-scm.com/download/)をインストールします。私の場合は、もともとVisual Studio Codeを使っていたのもあってインストール済みでした。インストールできたら、Git Bashを開き下記コマンドを入力します。

ssh-keygen

設定するパスワードなどいくつか聞かれるので入力すれば生成完了です。"C:\Users\UserName.ssh"に公開キーができるので、その中身をコピーして貼り付けます。

サブスクリプション、リソースグループは各自で適切なものを選択ください。Locationですが、東日本で選択しようとするとエラーが出ました。リージョンは、米国東部/米国中東部/ヨーロッパ西部/東南アジア/米国西部2/米国中西部だけのようです。お試しなのでどこでもよいので選択します。

f:id:ninna2:20170501001014j:plain:w360

次にプランを選んでいきます。

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かそれ以上と書かれているのでその通りに従いましょう。

f:id:ninna2:20170501001753j:plain

オプション設定はすべてデフォルトのままで変更してません。こだわりがなければ、とりあえずデフォルトでいいかと思います。さて、ここまでできればいよいよVMの作成です。作成ボタンを押してから5分~10分ぐらいデプロイに時間にかかります。

f:id:ninna2:20170501002305j:plain

ダッシュボードにクルクル表示されるので気長に待ちましょう。

Azure Virtual Machine 設定変更

VMができると何やらたくさんいろいろなものが出来上がります。いろいろ気になりますが、とりあえずそれぞれを細かく見ていくのはまたの機会にすることとしてSQL Serverに接続するために必要な設定を入れていきます。

f:id:ninna2:20170501002841j:plain

VMに設定しないといけないものは1つだけです。ネットワークのアクセス許可を与えてあげる必要があります。初期の状態では、SSHでAzure VMにはつながりますが、外部からSQL Serverに直接つなぐことはできませんので、SQL Serverへの接続ポート(デフォルトは1433ですね)のアクセス許可をしていきます。

Azure Portalから先ほど作成したAzure VMを選択します。ネットワークインターフェースから表示されているインターフェースを選択します。おそらく1つだけ表示されているので迷うことはないかと思います。ネットワークインターフェースの概要から、ネットワークセキュリティグループのリンクを選択します。そうするとネットワークセキュリティグループに行けます。(すべてのリソースから、直接ネットワークセキュリティグループに遷移してもOKです)

この中で、受信セキュリティ規則という項目があるので、横のアイコンをクリックして追加していきます。"+追加"で必要な情報を入力していきます。名前は何でもよいです。サービスは“MS SQLを選択してください。そうすると1433ポートが勝手にポート番号に入力されます。これで、外部から1433に対してアクセス許可するセキュリティルールができました。

f:id:ninna2:20170501004211j:plain

Azure Virtual Machine への接続

Azure VMへはSSHクライアントから接続します。私は、Visual Studio CodeのターミナルをGit Bashに設定しているので、Visual Studio Codeから接続しました。VSCodeのターミナルをGit Bashに設定する方法は下記が参考になると思います。

qiita.com

さて、早速接続してみましょう。ユーザ名は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も対応してるので、それもいつか試してみたいなぁ。