AzureVM

書きかけ

AzureのIaaS を使用して、 SQL Serverを運用したい時に見るべき資料が散逸しているようなので整理してみたいと思います。
AzureのIaaS、つまり Azure Virtual Machine (Azure VM)を使用して、SQL Serverを構築し、可用性担保のためにAlwaysON可用性グループを構築、チューニングをするための資料となります。

資料としては、次の内容が把握できると、構築して、運用設計して、性能チューニングして、運用・監視して、障害対応とIaaSでのSQL Server運用に関して必要なことが網羅できていることになります。

  1. ライセンスのお話
  2. 構築し終わると完成するインフラ環境と登場するコンポーネントのお話
  3. 構築手順のお話
  4. 性能チューニングのお話
  5. 運用(バックアップ設計、ログ管理)のお話
  6. 性能監視、障害監視のお話
  7. AlwaysONのお話
  8. 障害対応(フェイルオーバー)のお話
  9. 障害対応(そのほか)のお話

1. ライセンスのお話

AzureでSQL Serverを運用するには、「ライセンス付きのAzureVMのイメージを使う」か「ライセンスをクラウドに持ち込む」かのどちらかになります。

  • 「ライセンス付きのAzureVMのイメージを使う」
    仮想マシンのイメージ費用にSQL Serverのライセンス費が付加されていて、追加費用が不要となっています。SQL Server付きのイメージでない他のイメージでは、その付加がされていないので、「ライセンスをクラウドに持ち込む」が必要になります。
    SQL Server ライセンス付きのAzure VMイメージ一覧にあるイメージを使うとOKです。
    ちなみに、そのイメージを使って起動した仮想マシン上であれば、SQL Serverをインストールし直してもライセンスはそのまま有効になっています。つまり、イメージでは英語版のSQL Serverがインストールされていますが、インストールし直して日本語版を利用することができます。利用方法は、ムッシュBlog(ライセンスの話 / Agentの話)を参照してください。
  • 「ライセンスをクラウドに持ち込む」
    すでに持っている(もしくはこれから買う)SQL ServerのライセンスをAzure上で使用するには、SA契約のライセンスモビリティ権を使用することになるのでSA契約が別途必要になります。
    そのあたりの説明は、SQL Server公式ブログ「既存の SQL Server ライセンスを使用し、Azure 仮想マシン上に SQL Server をインストールするためには。」でも説明されています。

4. 性能チューニングのお話

構築が完了したら次に実施する必要があるのが性能チューニングです。

  • ストレージの設定を見直す必要があります。検証中
  • メモリ:最大値と最小値を固定にします
  • tempdbにデータファイルを追加し10個にし、それぞれ2GBにします
  • トランザクションログファイルは1個で、ログファイルサイズを必要な十分なサイズ(30GB?)にします。
  • データベースファイルを10個にし、それぞれの容量を1000GBにします。(将来的な自動拡張の防止)
    バックアップなどから復元した後、データファイルを追加した時は、データを平準化させるために再構築が必要です。
  • 起動パラメターを設定し、起動時にメモリを確保するように設定します。Lock Page in Memory
  • トランザクションログとtempdbをデータベースファイル以外に配置することを検討します。

AzureVM

この手順で、VNCまたは、WindowsのRDPで、Linux Azure仮想マシンにリモートデスクトップ接続できるようになります。

AzureギャラリーのCentOS 7.1を使用します。
おそらく他のRedHatベースのLinuxディストリビューション(たとえば、Oracle Linuxなど)でも恐らく動作すると思います。
image

手順

  1. Linux 仮想マシンにログインします。
  2. GNOME Desktopをコマンドでインストールします。
    sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
  3. TigerVNCをインストールします。

    sudo yum install tigervnc-server xorg-x11-fonts-Type1
  4. vncserver.serviceファイルをコピーします。

    sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
  5. viで、「/etc/systemd/system/vncserver@:1.service」を編集します。そのファイルの「<USER>」タグをLinuxユーザー名に置き換えます。

    # Clean any existing files in /tmp/.X11-unix environment
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i"
    PIDFile=/home//.vnc/%H%i.pid
    ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
  6. もし、Firewallが動作していたら、ポートを開けます。

    firewall-cmd --permanent --zone=public --add-port=5901/tcp 
    firewall-cmd --permanent --zone=public --add-port=3389/tcp 
    firewall-cmd –reload
  7. コマンドを使用して、XRDPをインストールします。

    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 
    sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm 
    sudo yum install xrdp 
    sudo chcon -t bin_t /usr/sbin/xrdp* 
    sudo systemctl start xrdp.service 
    sudo systemctl enable xrdp.service 
    sudo systemctl start xrdp-sesman.service
  8. VNCServerを起動します。

    vncserver

    VNCのパスワードを入力します。

  9. VNCServerとXRDPが起動していることを、「netstat -ant」で確認します。

    image
  10. Linux仮想マシン用のRDPとVNCのエンドポイントを追加します。

    特定のリモートサブネットからのみ接続できるようにACLを使用してもOKです。

    Azure管理ポータルでLinux仮想マシンにアクセスし、エンドポイントをクリックします。RDPとVNC用のエンドポイント、3389と5901を追加します(RDPはランダムポートでOKですが、VNCは同じポートにしないといけません)。

    imageimage

  11. VNC Viewerを使用して、接続テストをします。

    image
  12. 次に、Remote Desktop Connectionを試します。

    SNAGHTML2dc85768

    image

元ネタ

MSDN Blog:Remote Desktop to your Linux Azure Virtual Machine

AzureVM

Windows Azure Virtual Machine上のSQL ServerのTempDBのデータファイル数とディスク数はいくつにするのがベストなのかをWindows Azure CATチームがBlogに「Scaling-out SQL Server disks and data files on Windows Azure Virtual Machines…a real-world example」投稿してくれています。詳細や検証データは、元記事を参照してください。

前提条件

使用する仮想マシンは、エクストララージ(XL / 8コア)でWindows Server 2008 R2とSQL Server 2012の組み合わせの仮想マシンです。ストレージアカウントは、デフォルト設定でジオレプリケーションを有効にしたままにしています。

制限事項

Windows Azure Storage Scalability and Performance Targets]によると、Windows Azure ストレージBlobは、書き込み性能として、[最大60MB/秒、最大500トランザクション/秒]と定義されています。

結論

データファイル数は8個に分割し、4つのディスクに2つずつ配置するのがベストなDisk I/O性能となります。

この設定でDisk以外のところに性能ボトルネックが発生するので、Disk数を増やしても効果が無いことがわかりました。