none
SQLServerでの複数インスタンスにIPアドレスを割り振る方法

    質問

  • 実現する方法について、ご教授いただけないでしょうか。

    1台の物理サーバにSQLServerをインストールし、複数のインスタンスを作成したいと考えています。 SQLServerでは、インスタンス毎にIPアドレスを割り振ることができますが、SQL Serverに、
    仮想IPが増やせる機能があるのでしょうか。 それともOS(ネットワークカード)に設定されているIPが一覧表示され、選択できるのでしょうか。 ※1台の物理サーバに10~50個のインスタンスを作成したいと考えており、それぞれのインスタンスに
    IP割り振りができるのか知りたいです。 またそれぞれにIPを割り振る上での注意点がありましたら、お教えください



    2017年12月20日 5:23

すべての返信

  • > ※1台の物理サーバに10~50個のインスタンスを作成したいと考えており、それぞれのインスタンスにIP割り振りができるのか知りたいです。

    普通に、複数の名前付きインスタンスに SQL Server Browser を利用した動的ポート番号によるアクセスを考えてはいかがですか。そうすれば IP は一つですみます。


    #そもそもなぜそんなに多くのインスタンスが必要なのか、どこかに勘違い・思い違いがあるのではないかという気がしますが・・・

    2017年12月20日 5:58
  • ご回答ありがとうございます。1つの拠点にSQLServerを置き、複数のお客様から接続させることを考えています。ネットワーク経路を限定させたいため、お客様毎にインスタンスを作成し、IPアドレスを割り振り、通信経路を限定させたいです。

    もちろんポートで分けることも可能ですが、インスタンス毎にIPを割り振りをしたいと考えています。

    2017年12月20日 7:09
  • >SQL Serverに、仮想IPが増やせる機能があるのでしょうか。

    私の知る限りありません。おそらく無いでしょう。

    それともOS(ネットワークカード)に設定されているIPが一覧表示され、選択できるのでしょうか。

    基本的に構成マネージャーでは、仮想IPアドレスも含めてOSに設定されているIPがアドレスが一覧で表示されますが、その情報はレジストリにあるようです。
    構成マネージャーに表示されるこのIPアドレスの一覧を変更するには、レジストリの操作が必要なようです。

    (参考)
    SQL Server 構成マネージャーで表示される IP アドレスの追加方法
    https://blog.engineer-memo.com/2012/04/21/sql-server-%E6%A7%8B%E6%88%90%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B-ip-%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E8%BF%BD/

    インスタンスを複数作成することはできますが、そのインスタンスに設定するIPアドレスは、あくまでOSが管理しているIPアドレス(そうでないとOS自体が通信できない)になります。すなわち、複数インスタンスにそれぞれIPアドレスを割り当てようとすれば、その複数インスタンス分のIPアドレスが必要になります。

    インスタンスがIPアドレスを使う前に、OSとしてそのIPアドレスで通信する必要があります。ネットワークアダプターにはMACアドレスが必要です。複数のIPアドレスで通信したいのであれば、それだけのMACアドレスが必要になります。つまり、それだけのネットワークアダプターを用意しなければならないことになります。

    通常、このような場合にはIPアドレスではなく、同じIPアドレスでポート番号を変えることによって、インスタンスを識別して通信します。動的ポートの場合には、SurferOnWwwさんが書かれているように、SQL Server Browserを利用し、接続先のインスタンスを見つけられるようにします。固定ポートの場合には、SQL Server Browserは必要ありません。固定ポートを指定して接続する手続きを踏むからです。

    固定ポートの場合、ファイアウォールで許可するポートを絞れるようになります。動的ポートの場合にはポートによるアクセス制限ができませんから、プログラム名等で制限をかけることになります。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月20日 7:17
  • ご回答ありがとうございます。1つの拠点にSQLServerを置き、複数のお客様から接続させることを考えています。ネットワーク経路を限定させたいため、お客様毎にインスタンスを作成し、IPアドレスを割り振り、通信経路を限定させたいです。

    その要求ですと、1台の物理サーバーで処理しきれるかという問題もあると思います。また、それぞれのインスタンス毎に要求される性能が異なるかもしれません。
    実現されたいことの詳細はわかりませんが、現在はクラウド上にSQL Serverを複数構築する選択肢も取れますので、そちらも検討されてみてはいかがでしょうか?

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月20日 7:26
  • フォーラムオペレーターの栗下 望です。
    koutasuen さん、こんにちは。

    ご質問いただいた内容については「SQL Server」フォーラムのほうが情報が集まりやすいかと思いましたので、
    スレッドの移動をさせていただきました。

    ・SQL Server > SQL Server

    ご自身のスレッドを見失った時は「クイック アクセス」の「マイ スレッド」から確認いただけます。

    どうぞよろしくお願いいたします。


    MSDN/TechNet Community Support 栗下 望


    2017年12月20日 7:32
    モデレータ
  • > ネットワーク経路を限定させたいため、お客様毎にインスタンスを作成し、IPアドレスを割り振り、通信経路を限定させたいです。

    Windows Server は 1 台でそれに複数のインスタンスをインストールするのですよね? で、各インスタンスに個別の IP アドレスを割り振り、客はそれにインターネット経由アクセスするのですか?

    100% 絶対不可能・・・とまで言い切る自信はないですが、それに近いぐらい無理な話ではないかと思うのですが。

    仮にもしそういうことができたとしても、SQL Server Browser を利用した動的ポート番号によるアクセスと何が違うかと言うと NIC が違うぐらいで、あまり意味はなさそうに思えますけど、いかがですか?

    2017年12月20日 7:53
  • やきです。

    一つのNICに複数のIPを降ってみてはいかがでしょうか?

    ・ncpa.cpl より目的のイーサネットのプロパティ - IPv4 (v6ならv6) - [詳細設定] - IPアドレス欄で[追加]
    ・SQLServer構成マネージャーより、目的のインスタンスが特定のIPだけ応答するよう構成

    以上、参考まで。

    2017年12月20日 7:59
  • 1つの NIC に複数の IP アドレスを割り当てること自体は可能ですよ。

    参考:http://www.atmarkit.co.jp/ait/articles/0509/03/news023.html

    L2 では同じ MAC アドレスなので同じエンドポイントとして扱われますが、L3 以上では IP アドレスごとに異なるエンドポイントとして扱えます。このようにして追加した IP アドレスを SQL サーバーのインスタンスに設定すれば OK です。


    hebikuzure

    2017年12月20日 8:03
  • >L2 では同じ MAC アドレスなので同じエンドポイントとして扱われますが、L3 以上では IP アドレスごとに異なるエンドポイントとして扱えます。

    なるほど。確かに言われてみればそうですね。誤ったことを言ってしまいました。ごめんなさい。
    やきさん、Hebikuzure aka Murachi Akiraさん、フォローありがとうございました。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年12月20日 8:32