JP2017162416A - レプリケーションプログラム、冗長化システム、およびレプリケーション方法 - Google Patents
レプリケーションプログラム、冗長化システム、およびレプリケーション方法 Download PDFInfo
- Publication number
- JP2017162416A JP2017162416A JP2016049018A JP2016049018A JP2017162416A JP 2017162416 A JP2017162416 A JP 2017162416A JP 2016049018 A JP2016049018 A JP 2016049018A JP 2016049018 A JP2016049018 A JP 2016049018A JP 2017162416 A JP2017162416 A JP 2017162416A
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- shared memory
- designation
- replication
- virtual machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010076 replication Effects 0.000 title claims abstract description 148
- 238000000034 method Methods 0.000 title claims description 117
- 238000012546 transfer Methods 0.000 claims abstract description 236
- 230000015654 memory Effects 0.000 claims abstract description 184
- 230000008569 process Effects 0.000 claims description 89
- 238000012545 processing Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 15
- 238000004519 manufacturing process Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】異なる仮想システムに属する同一のIPアドレスを有する仮想マシンの間のレプリケーションを効率的に行うこと。
【解決手段】図1の(1)で示すように、レプリケーションマネージャrpmが、レプリケーションの指示141_1、2を、それぞれ、ホストOS1、2に送信する。図1の(2)で示すように、ホストOSは、自身が動作する物理マシンpm上で動作するゲストOSとの共有メモリに、指定に応じた記憶領域を設定する。図1の(3)で示すように、ホストOSは、自身が管理するゲストOSが転送元装置に指定された場合、ゲストOSによって転送用の共有メモリに書込まれたデータを、管理LAN111を介して宛先装置に送信する。また、図1の(4)で示すように、ホストOSは、自身が管理するゲストOSが転送先装置に指定された場合、管理LAN111を介して受信したデータを、受信用の共有メモリに書込む。
【選択図】図1
【解決手段】図1の(1)で示すように、レプリケーションマネージャrpmが、レプリケーションの指示141_1、2を、それぞれ、ホストOS1、2に送信する。図1の(2)で示すように、ホストOSは、自身が動作する物理マシンpm上で動作するゲストOSとの共有メモリに、指定に応じた記憶領域を設定する。図1の(3)で示すように、ホストOSは、自身が管理するゲストOSが転送元装置に指定された場合、ゲストOSによって転送用の共有メモリに書込まれたデータを、管理LAN111を介して宛先装置に送信する。また、図1の(4)で示すように、ホストOSは、自身が管理するゲストOSが転送先装置に指定された場合、管理LAN111を介して受信したデータを、受信用の共有メモリに書込む。
【選択図】図1
Description
本発明は、レプリケーションプログラム、冗長化システム、およびレプリケーション方法に関する。
従来、仮想マシンの個数や仮想マシンのIP(Internet Protocol)アドレスの情報等を含むリソース構成と、仮想マシン上で動作するアプリケーションソフトウェアの構成とを一つにまとめた仮想システムテンプレートを物理マシンに適用して、仮想システムを構築する技術がある。例えば、パブリックネットワークで接続された2つの物理マシンのそれぞれに同一の仮想システムテンプレートを適用することにより、一方の物理マシンで本番系の仮想システムを運用させつつ、他方の物理マシンで待機系の仮想システムを運用させることができる。また、データをリアルタイムにコピーする、レプリケーションと呼ばれる技術がある。
関連する先行技術として、例えば、運用系サーバ装置が自らのデータベースの更新を行うとともに共有メモリに変更のあったデータを書込み、待機系サーバ装置が、共有メモリに書込まれたデータを自らのデータベースに反映するものがある。また、現用系システムの更新されたメモリ上のデータと外部記憶装置のファイルの更新履歴を取得し、通信媒体を介して現用系システムから待機系システムにデータと更新履歴を転送して、待機系システムのメモリと外部記憶装置のファイルに反映させる技術がある。
しかしながら、従来技術によれば、異なる仮想システムに属する同一のIPアドレスを有する仮想マシンの間のレプリケーションを行うことが困難である。具体的には、レプリケーションを行うために2つの仮想マシンを接続することになるが、同一の仮想システムテンプレートから設定された仮想マシンは、同一のローカルIPアドレスを有するため、直接接続することができない。そこで、例えば、2つの仮想システムのうちの一方の仮想システムの内部に、他方の仮想システムを構築することも考えられるが、この場合、仮想システムテンプレートの変更を伴う。そして、仮想システムテンプレートの内容を把握していない者が、仮想システムテンプレートの変更を行うことは困難である。また、例えば、パブリックネットワークを介して2つの仮想マシンを接続することも考えられるが、セキュリティ上好ましくない。また、例えば、Twice NAT(Network Address Translation)を設定することにより、ローカルIPアドレスの衝突を回避することも考えられるが、IPアドレスを書き換える際にパケットのコピーが行われるため、レプリケーションにかかる負荷が増大する。
1つの側面では、本発明は、異なる仮想システムに属する同一のIPアドレスを有する仮想マシンの間のレプリケーションを効率的に行うことができるレプリケーションプログラム、冗長化システム、およびレプリケーション方法を提供することを目的とする。
本発明の一側面によれば、レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、指示に転送元装置の指定が含まれる場合には指定に応じた記憶領域を、コンピュータ上で動作する転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、指示に転送先装置の指定が含まれる場合には指定に応じた記憶領域を、コンピュータ装置上で動作する転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、転送元装置として指定された仮想マシンによって転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して宛先装置に送信し、管理用のネットワークを介して受信したデータを、転送先装置として指定された受信用の共有メモリに書込むレプリケーションプログラム、冗長化システム、およびレプリケーション方法が提案される。
本発明の一態様によれば、異なる仮想システムに属する同一のIPアドレスを有する仮想マシンの間のレプリケーションを効率的に行うことができるという効果を奏する。
以下に図面を参照して、開示のレプリケーションプログラム、冗長化システム、およびレプリケーション方法の実施の形態を詳細に説明する。
(実施の形態1の説明)
図1は、実施の形態1にかかる冗長化システム100の動作例を示す説明図である。図1に示す冗長化システム100は、レプリケーションを指示する指示装置となる物理マシンpmmと、物理マシンpm1、pm2とを有する。ここで、レプリケーションとは、データをリアルタイムでコピーする技術である。対象となるデータはどのようなものでもよく、例えば、DB(DataBase)の内容であったり、ファイルであったりしてもよい。
図1は、実施の形態1にかかる冗長化システム100の動作例を示す説明図である。図1に示す冗長化システム100は、レプリケーションを指示する指示装置となる物理マシンpmmと、物理マシンpm1、pm2とを有する。ここで、レプリケーションとは、データをリアルタイムでコピーする技術である。対象となるデータはどのようなものでもよく、例えば、DB(DataBase)の内容であったり、ファイルであったりしてもよい。
また、物理マシンpmm、pm1、pm2は、ネットワークとして管理LAN(Local Area Network)111によってそれぞれ接続される。また、物理マシンpm1、2は、さらに、業務LAN112によってそれぞれ接続される。ここで、業務LAN112は、ゲストOS間を接続して業務データを転送するためのネットワークであり、ルータやゲートウェイを経由してパブリックネットワークに接続されたクライアント端末と接続する。一方、管理LAN111は、業務LAN112とは別のネットワークである。
物理マシンpm1、2は、仮想マシン(Virtual Machine:VM)を利用者に提供するコンピュータである。物理マシンpm1、2は、例えば、サーバである。また、例えば、物理マシンpm1、2は、データセンター(Data Center:DC)内にある。VMは、ハードウェア資源を用いて仮想的に作成されたコンピュータである。VMは、仮想的に作成したコンピュータであればどのようなものでもよい。VMを制御するプログラムとしては、ハイパーバイザがある。ハイパーバイザは、ハードウェアを直接制御する機能を持ち、ファームウェア層で、仮想化マシンアーキテクチャーを提供するプログラムである。
ハイパーバイザは、作成したVMの各々のVM上で、OS(Operating System)を動作させることができる。各々のVM上では、ゲストOSが動作する。また、ある1つのVM上では、ホストOSが動作する。ホストOSは、ハイパーバイザを管理するOSである。
また、VMの個数や各VMが用いるメモリ量といったVMに関する情報および各VMのネットワークのIPアドレスの情報といったリソース構成と、VM上で動作するアプリケーションソフトウェア構成とを一つにまとめた仮想システムテンプレートがある。仮想システムテンプレートの開発者は、仮想システムテンプレートから仮想システムを配備して運用する運用者とは別であり、運用者は仮想システムテンプレートの内部を知らなくてよい。例えば、2つの物理マシンpmに同一の仮想システムテンプレートを適用して、本番系のデータベースサーバを有する仮想システムと、待機系のデータベースサーバを有する仮想システムとを運用することができる。
しかしながら、同じ仮想システムテンプレートから配備された本番系と待機系との仮想システムにおいて、本番系のDBを有するVMと待機系のDBを有するVMとを接続してレプリケーションを行うことが困難である。なぜならば、レプリケーションを行うために、2つのVMの間をオンデマンドで接続することになるが、2つのVMが、同じ仮想システムテンプレートから配備されたため、同一のプライベートIPアドレスを有するためである。また、2つのVMが、DC内のサーバのハードウェアを利用する際には、会社内でシステムを運用するオンプレミスのように、物理構成を変更することもできない。
同じ仮想システムテンプレートから配備された2つのVMの間を接続する技術としては、例えば、本番系のネットワークに、待機系の仮想システムを構築することが考えられる。しかしながら、この場合、仮想システムテンプレートの変更を伴うため、仮想システムテンプレート自体をアップデートする場合には適用できない。また、仮想システムテンプレートを購入して、本番系および待機系の仮想システムを運用する運用者は、仮想システムテンプレートの内部の構成を把握していないため、仮想システムテンプレートの変更を行うことは困難である。
また、同じ仮想システムテンプレートから配備された2つのVMの間を接続する技術としては、業務LAN112経由でレプリケーションを行うことが考えられる。しかしながら、本番系のDBの内容が、パブリックネットワークを介して転送されることになるため、セキュリティ上好ましくない。
また、本番系のホストOSと待機系のホストOSとでTwice NATを設定することにより、ローカルIPアドレスの衝突を回避することも考えられる。しかしながら、IPアドレスを書き換える際にパケットのコピーが行われるため、レプリケーションにかかる負荷が増大する。
そこで、本実施の形態では、レプリケーションの転送元と転送先でゲストOSとホストOS間で共有する記憶領域となる共有メモリを設定し、ホストOSが、共有メモリのデータを転送元から転送先に管理LAN111で転送することについて説明する。
図1を用いて、冗長化システム100の動作を説明する。物理マシンpmm、pm1、pm2上では、それぞれ、ハイパーバイザhvm、hv1、hv2が動作する。そして、図1では、物理マシンpmm上で動作するソフトウェアとして、レプリケーションマネージャrpmが示される。レプリケーションマネージャrpmは、冗長化システム100におけるレプリケーションを管理するソフトウェアである。レプリケーションマネージャrpmは、VM上で動作してもよいし、物理マシンpmm上で動作してもよい。レプリケーションマネージャrpmがVM上で動作する場合には、ハイパーバイザhvm上にVMが作成され、作成されたVM上でレプリケーションマネージャrpmが動作する。また、レプリケーションマネージャrpmが物理マシンpmm上で動作する場合には、物理マシンpmm上でOSが動作し、OS上でレプリケーションマネージャrpmが動作する。レプリケーションマネージャrpmの機能については、図3で説明する。
また、図1では、物理マシンpm1上で動作するソフトウェアとして、ホストOS1と、ゲストOS11とが示される。また、図1では、物理マシンpm2上で動作するソフトウェアとして、ホストOS2と、ゲストOS21とが示される。以下の記載において、「_x」が付与された符号は、ホストOSxに関する符号であることを示す。同様に、「_xy」が付与された符号は、ゲストOSxyに関する符号であることを示す。
ここで、ゲストOS11、21は、管理LAN111へのアクセスに制限があり、管理LAN111にはアクセスできない。従って、管理LAN111は、セキュアな通信を行うことができる。
ここで、ゲストOS11は、本番系のDBシステムを運用しており、ゲストOS21は、待機系のDBシステムを運用しているとする。本実施の形態では、データのレプリケーションとして、本番系と待機系の間でのDBのレプリケーションを例として説明する。そして、以下の記載では、レプリケーションの転送元となるDBを、「マスタDB」と呼称し、レプリケーションの転送先となるDBを、「スレーブDB」と呼称する。
ここで、MySQLにおける2つのDBの間のレプリケーションについて説明する。マスタDBを有するマスタサーバは、マスタDBに対して実行された更新クエリをBinlogという記憶領域に格納する。Binlogの詳細については図6で説明する。次に、マスタサーバは、スレーブDBを有するスレーブサーバにBinlogを送信する。スレーブサーバは、受信したBinlogをRelaylogとして保存する。そして、スレーブサーバは、Relaylogから更新クエリをスレーブDBに対して実行する。これにより、マスタDBとスレーブDBとの内容が同一となる。図1の説明では、MySQLにおけるDBのレプリケーションを適用した例を用いて説明する。
図1の例では、ゲストOS11は、レプリケーションの転送元となるデータを格納する記憶領域となる拡張Binlog121_11と、マスタDB122_11とを有する。ここで、拡張Binlog121は、マルチテナントや更新クエリのアトミック性確保のためにBinlogを拡張したものである。図1の例では、拡張Binlog121_11は、アドレス0x11…を先頭アドレスとしてゲストOS11のメモリ空間にマッピングされている。
また、ゲストOS21は、レプリケーションの転送先となるデータを格納する記憶領域となるRelaylog131_21と、スレーブDB132_21とを有する。図1の例では、Relaylog131_21は、アドレス0x22…を先頭アドレスとしてゲストOS21のメモリ空間にマッピングされている。
ここで、図1の(1)で示すように、レプリケーションマネージャrpmが、レプリケーションの指示141_1、2を、それぞれ、ホストOS1、ホストOS2に送信する。レプリケーションの指示には、レプリケーションの宛先装置にデータを転送する転送元装置、または転送先装置であるゲストOSの指定と、レプリケーションの対象となるゲストOSに応じた記憶領域を示す情報とを含む。ここで、転送元装置の指定には、宛先装置となるホストOSを識別する情報も含まれる。
図1の例では、ホストOS1に送信する指示141_1には、転送元装置としてゲストOS11の指定と、レプリケーションの対象となるゲストOS11に応じた記憶領域のメモリアドレス0x11…とが含まれる。また、指示141_1には、宛先装置を識別する情報としてホストOS2の指定も含まれる。また、ホストOS2に送信する指示141_2には、転送先装置としてゲストOS21の指定と、レプリケーションの対象となるゲストOS21に応じた記憶領域のメモリアドレス0x22…とが含まれる。
指示141を受け付けたことに応じて、図1の(2)で示すように、ホストOSは、自身のホストOSが動作する物理マシンpm上で動作するゲストOSとの共有メモリに、指定に応じた記憶領域を設定する。例えば、ホストOS1は、メモリアドレス0x11…から始まる拡張Binlog121_11を転送用の共有メモリに設定する。ここで、図1以降の点線で示した拡張Binlog121やRelaylog131は、ホストOSとゲストOSとで共有した記憶領域であることを示す。同様に、ホストOS2は、メモリアドレス0x22…から始まるRelaylog131_21を受信用の共有メモリに設定する。
次に、図1の(3)で示すように、ホストOSは、指示141により転送元装置に指定された自身の管理するゲストOSによって共有メモリに書込まれたデータを、管理LAN111を介して転送先装置に送信する。ここで、管理LAN111は、ライブマイグレーション等に使われるゲストOSのアクセスの制限があるLANであるため、ホストOS以外は管理LANを覗き見することができず、セキュアな通信が可能である。
図1の例では、指示141_1によりゲストOS11が転送元装置に指定されているため、ホストOS1は、ゲストOS11によって拡張Binlog121_11に書込まれた更新クエリを、管理LAN111を介して宛先装置となるホストOS2に送信する。
また、図1の(4)で示すように、ホストOSは、管理LAN111を介して受信したデータを、指示141により転送先装置に指定された自身の管理するゲストOSと共有する受信用の共有メモリに書込む。図1の例では、ホストOS2は、管理LAN111を介して受信した更新クエリを、Relaylog131_21に書込む。この後、ゲストOS21は、Relaylog131_21に書込まれた更新クエリをスレーブDB132_21に対して実行する。
以上により、冗長化システム100は、同一のIPアドレスを有するゲストOS11とゲストOS21との間のレプリケーションを効率的に行うことができる。具体的には、冗長化システム100は、業務LAN112を用いず管理LAN111を用いてデータを転送するためにセキュアに行え、また、パケットの変換もしないために負荷を増大させることもなく、レプリケーションを行うことができる。また、冗長化システム100は、仮想システムテンプレートの変更や特別なハードウェアを用意することなく、レプリケーションを行うことができる。
なお、1つの物理マシンpmに存在するゲストOSがレプリケーションの転送元装置および転送先装置に指定されてもよい。この場合、ホストOSは、自身にデータを送信してもよいし、メモリコピーを行ってもよい。メモリコピーを行う構成については、実施の形態2で説明する。また、1つの物理マシンpmに存在するゲストOSが、あるレプリケーションの転送元装置または転送先装置に指定されるとともに、他のレプリケーションの転送元装置または転送先装置に指定されてもよい。この場合、1つの物理マシンpmに、マスタDB122とスレーブDB132とが混在する場合がある。1つの物理マシンpmにマスタDB122とスレーブDB132とが混在する場合の構成については、実施の形態3で説明する。
また、上述した説明では、仮想化マシンアーキテクチャーを提供する技術として、ハイパーバイザ型を適用したシステムに本実施の形態を適用した例について説明したが、これに限らない。例えば、ホストOSの1アプリケーションとしてVMを動作させる、ホスト型を適用したシステムに対しても本実施の形態を適用することができる。次に、物理マシンpmm、pm1、pm2のハードウェア構成について、図2を用いて説明する。
図2は、物理マシンのハードウェア構成例を示す説明図である。物理マシンpmm、pm1、pm2が有するハードウェアは、全て同一でよいため、図2の説明では、単に、物理マシンpmとして説明する。図2において、物理マシンpmは、CPU(Central Processing Unit)201と、ROM(Read−Only Memory)202と、RAM(Random−Access Memory)203と、を含む。また、物理マシンpmは、ディスクドライブ204およびディスク205と、通信インターフェース206、207とを含む。また、CPU201〜ディスクドライブ204、通信インターフェース206、207はバス208によってそれぞれ接続される。
CPU201は、物理マシンpmの全体の制御を司る演算処理装置である。また、物理マシンは、複数のCPUを有してもよい。ROM202は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
ディスクドライブ204は、CPU201の制御に従ってディスク205に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ204には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク205は、ディスクドライブ204の制御で書込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ204が磁気ディスクドライブである場合、ディスク205には、磁気ディスクを採用することができる。また、ディスクドライブ204が光ディスクドライブである場合、ディスク205には、光ディスクを採用することができる。また、ディスクドライブ204がソリッドステートドライブである場合、ディスク205には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース206、207は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース206は、管理LAN111を介して他の装置に接続される。また、通信インターフェース207は、業務LAN112を介して他の装置に接続される。通信インターフェース206、207には、例えば、モデムやLANアダプタなどを採用することができる。
また、冗長化システム100の管理者が、物理マシンを直接操作する場合、物理マシンpmは、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。なお、物理マシンpmmは、業務LAN112には接続していないため、通信インターフェース207がなくてもよい。
(冗長化システム100の機能構成例)
図3は、冗長化システム100の機能構成例を示す説明図である。冗長化システム100は、レプリケーション設定部301と、共有メモリ設定部302と、送信部303と、書込み部304と、ログ生成部305と、ログ実行部306とを含む。ここで、レプリケーション設定部301は、物理マシンpmmのレプリケーションマネージャrpmが有する機能である。共有メモリ設定部302〜書込み部304は、物理マシンpm1、pm2上で動作するホストOSが有する機能である。ログ生成部305は、物理マシンpm1、pm2上で動作するゲストOSのうちのマスタDB122を有するOSが有する機能である。また、ログ生成部305は、フラグ書込み部307を有する。ログ実行部306は、物理マシンpm1、pm2上で動作するゲストOSのうちのスレーブDB132を有するOSが有する機能である。
図3は、冗長化システム100の機能構成例を示す説明図である。冗長化システム100は、レプリケーション設定部301と、共有メモリ設定部302と、送信部303と、書込み部304と、ログ生成部305と、ログ実行部306とを含む。ここで、レプリケーション設定部301は、物理マシンpmmのレプリケーションマネージャrpmが有する機能である。共有メモリ設定部302〜書込み部304は、物理マシンpm1、pm2上で動作するホストOSが有する機能である。ログ生成部305は、物理マシンpm1、pm2上で動作するゲストOSのうちのマスタDB122を有するOSが有する機能である。また、ログ生成部305は、フラグ書込み部307を有する。ログ実行部306は、物理マシンpm1、pm2上で動作するゲストOSのうちのスレーブDB132を有するOSが有する機能である。
ここで、図3の例では、物理マシンpm1は、ホストOS1、ゲストOS11に加え、ゲストOS12、13を動作させている。図3では図示していないが、ゲストOS12、13も、拡張Binlog121、マスタDB122、ログ生成部305を有する。同様に、物理マシンpm2は、ホストOS2、ゲストOS21に加え、ゲストOS22、23を動作させている。図3では図示していないが、ゲストOS22、23も、Relaylog131、スレーブDB132、ログ実行部306を有する。
また、実施の形態1では、図3で示すように、ホストOS1が、共有化される拡張Binlog121を有し、ホストOS2が、共有化されるRelaylog131を有するものとする。ホストOSは、拡張Binlog121やRelaylog131を、ゲストOSごとに有する。図3の例では、ホストOS1は、ゲストOS11の拡張Binlog121_11と、ゲストOS12の拡張Binlog121_12と、ゲストOS13の拡張Binlog121_13とを有する。また、ホストOS2は、ゲストOS21のRelaylog131_21と、ゲストOS22のRelaylog131_22と、ゲストOS23のRelaylog131_23とを有する。
また、レプリケーションマネージャrpmは、レプリケーション管理テーブル311とDB管理テーブル312とにアクセス可能である。レプリケーション管理テーブル311とDB管理テーブル312とは、物理マシンpmmのRAM203、ディスク205といった記憶装置に格納される。
また、ホストOSは、共有メモリ管理テーブル313にアクセス可能である。共有メモリ管理テーブル313は、物理マシンpm1、pm2のRAM203、ディスク205といった記憶装置に格納される。
レプリケーション設定部301は、レプリケーションを指示するユーザuが操作する端末からレプリケーションリクエストを受け付けたことに応じて、レプリケーションの設定を行う。設定した内容は、レプリケーション設定部301に格納される。
共有メモリ設定部302は、指示141を物理マシンpmmから受け付けたことに応じて、指示141に含まれる指定に応じた共有メモリを、物理マシンpm上で動作するゲストOSと共有する共有メモリに設定する。具体的には、共有メモリ設定部302は、指示141により自身の管理するゲストOSが転送元装置に指定された場合、指示141に含まれる指定に応じた共有メモリを、ゲストOSと共有する転送用の共有メモリに設定する。また、共有メモリ設定部302は、指示141により自身の管理するゲストOSが転送先装置に指定された場合、指示141に含まれる指定に応じた共有メモリを、ゲストOSと共有する受信用の共有メモリに設定する。設定した共有メモリの情報は、共有メモリ管理テーブル313に格納される。
送信部303は、指示141により自身の管理するゲストOSが転送元装置に指定された場合、ゲストOSによって転送用の共有メモリに書込まれたデータを、管理LAN111を介して宛先装置に送信する。具体的には、図3の例では、ホストOS1が管理するゲストOS11が、指示141_1により転送元装置に指定されており、ホストOS2が、宛先装置に指定されている。この場合、送信部303_1は、マスタDB122_11に対して実行された更新クエリの全体が拡張Binlog121_11に書込まれたことに応じて、更新クエリの全体を管理LAN111を介してホストOS2に送信する。ここで、更新クエリの一部を送信してしまうと、スレーブDB132が破壊される恐れがある。従って、本実施の形態では、更新クエリの全体を送信することを担保するために、フラグ書込み部307が、拡張Binlog121の書込みを監視する。
書込み部304は、指示141により自身の管理するゲストOSが転送先装置に指定された場合、管理LAN111を介して受信したデータを、受信用の共有メモリに書込む。具体的には、図3の例では、ゲストOS11が、指示141_1により転送元装置に指定されており、ホストOS2が管理するゲストOS21が、指示141_2により転送先装置に指定されている。この場合、書込み部304_2は、管理LAN111を介して受信したデータを、Relaylog131_21に書込む。
図3における以降の説明では、指示141に、レプリケーションを指示するユーザを識別する情報が含まれている場合の機能例について説明する。ユーザを識別する情報は、ユーザを一意に特定できるものであればどのような情報でもよく、例えば、ユーザID(IDentify)である。以下、ユーザを識別する情報を、ユーザIDとする。
共有メモリ設定部302は、指示141を物理マシンpmmから受け付けたことに応じて、自身の物理マシンpm上で動作する複数のOSのうちのユーザのOSの共有メモリを設定する。例えば、図3の例で、ゲストOS11〜ゲストOS13のうち、ユーザuのOSは、ゲストOS11であるとする。この場合、共有メモリ設定部302は、ゲストOS11の共有メモリとなる拡張Binlog121_11を転送用の共有メモリに設定する。
そして、送信部303は、指示141により自身が管理するゲストOSが転送元装置に指定された場合、ゲストOSによって転送用の共有メモリに書込まれたデータとユーザIDとを、管理LAN111を介して宛先装置に送信する。例えば、送信部303_1は、拡張Binlog121_11のエントリと、ユーザuのユーザIDとを、管理LAN111を介してホストOS2に送信する。
また、書込み部304は、指示141により自身が管理するゲストOSが転送先装置に指定された場合、管理LAN111を介して受信したデータを、複数のOSのうちの、受信したユーザIDにより特定されたゲストOSの受信用の共有メモリに書込む。例えば、ホストOS2が、拡張Binlog121_11のエントリとユーザuのユーザIDとを、管理LAN111を介して受信したとする。そして、ゲストOS21〜ゲストOS23のうち、ユーザuのOSは、ゲストOS21であるとする。この場合、書込み部304_2は、Relaylog131_21に、拡張Binlog121_11のエントリを書込む。なお、このとき書込むデータは、拡張Binlog121_11の拡張した情報を除く部分である。具体的な書込みの処理については、図12で説明する。
ログ生成部305は、マスタDB122に対して実行された更新クエリを拡張Binlog121に書込む。更新クエリは、例えば、Insert文、Update文、Delete文等である。
ログ実行部306は、Relaylog131に書込まれた更新クエリを、スレーブDB132に対して実行する。
フラグ書込み部307は、更新クエリのアトミック性を担保するため、拡張Binlog121への書込みを監視し、拡張Binlog121のエントリ全体を書き終えた場合に、エントリ全体の書込みが完了したことを示すフラグを書込む。具体的な処理は、図10で説明する。
図4は、レプリケーション管理テーブル311の記憶内容の一例を示す説明図である。レプリケーション対象となるDBの転送元と転送先との組み合わせを管理するテーブルである。また、レプリケーション管理テーブル311のエントリは、レプリケーションの指示を受け付けた際に生成される。図4に示すレプリケーション管理テーブル311は、エントリ401_1、2を有する。
レプリケーション管理テーブル311は、転送元DBIDと、転送先DBIDと、転送モードというフィールドを含む。転送元DBIDフィールドには、レプリケーションの転送元となるDBを識別する情報が格納される。転送先DBIDフィールドには、レプリケーションの転送先となるDBを識別する情報が格納される。転送モードフィールドには、データを転送する転送モードを識別する情報が格納される。具体的には、転送モードには、マスタDBに書込まれたことを割込みにより検出し、書込まれたデータをスレーブDBに転送するモードである「割込み」と、一定間隔ごとに転送元DBのデータを転送先DBに転送するモードである「タイマー」とがある。
例えば、エントリ401_1は、転送元DBがマスタDB122であり、転送先DBがスレーブDB132であり、転送モードが割込みであることを示す。
図5は、DB管理テーブル312の記憶内容の一例を示す説明図である。DB管理テーブル312は、レプリケーション対象となるDBを個別に管理するテーブルである。DB管理テーブル312のエントリの1つが、1つのDBに対応する。そして、DB管理テーブル312のエントリは、DBを配備する際に登録される。図5に示すDB管理テーブル312は、エントリ501_1〜4を有する。
DB管理テーブル312は、DBIDと、ホストIDと、ゲストIDと、ログアドレスと、ログサイズと、ユーザIDというフィールドを含む。DBIDフィールドには、DBを識別する情報が格納される。ホストIDフィールドには、DBを有するゲストOSを管理するホストOSを識別する情報が格納される。ゲストIDフィールドには、DBを有するゲストOSを識別する情報が格納される。ログアドレスフィールドには、ゲストOS上でのログのメモリアドレスが格納される。また、ログアドレスフィールドには、DBの種別を示す情報が併せて格納されてもよい。ログサイズフィールドには、ログのサイズが格納される。ユーザIDフィールドには、レプリケーションを指示したユーザを識別する情報が格納される。
例えば、エントリ501_1は、レプリケーションで用いられるマスタDB122についてのエントリである。そして、エントリ501_1は、ゲストOS11上でのログとなる拡張Binlog121のアドレスがADDR1であり、拡張Binlog121のサイズがSize1であり、レプリケーションを指示したユーザが、User1であることを示す。
図6は、拡張Binlog121の記憶内容の一例を示す説明図である。拡張Binlogは、Binlogを拡張したものである。図6に示す拡張Binlog121_11は、エントリ601_1、2を有する。
拡張Binlog121は、イベントヘッダと、イベントデータと、ユーザIDと、完了フラグというフィールドを含む。イベントヘッダフィールドおよびイベントデータフィールドは、拡張する前のBinlogが有するフィールドである。具体的には、イベントヘッダフィールドには、更新リクエストのタイムスタンプやタイプが格納される。また、イベントデータフィールドには、Queryの中身が格納される。
ユーザIDフィールドには、マルチテナントのためのユーザを識別する情報が格納される。ユーザIDフィールドを追加した理由として、一般に、物理マシン上には複数のVMが配備され、各VMには別のユーザのDBが配備されることがある。そこで、適切にユーザを区分してレプリケーションを行うため、本実施の形態のように、Binlogを拡張してユーザIDを書込むことで、書込み部304でユーザIDに対応するRelaylog131を特定することができる。
完了フラグフィールドには、Binlogのエントリの生成が完了したか否かを示す情報が格納される。具体的には、完了フラグフィールドには、Binlogのエントリの生成が完了したことを示す「True」か、Binlogのエントリの生成が完了していないことを示す「False」かが格納される。完了フラグフィールドには、初期値として、「False」が格納される。
完了フラグフィールドを追加した理由として、更新リクエストからBinlogのエントリが生成される際に、途中までしか生成されていない状態でスレーブDB132に反映するとスレーブDB132が破壊される恐れがある。そこで、ログ生成部305で更新リクエストが完全に書込まれた時に、Binlogの完了フラグをTrueに設定することで、更新リクエストのアトミック性を確保することができる。
例えば、エントリ601_1は、User1のDBに対する更新リクエストに対するエントリの生成が完了していることを示す。
図7は、共有メモリ管理テーブル313の記憶内容の一例を示す説明図である。共有メモリ管理テーブル313は、共有メモリに設定されたログを管理するテーブルである。また、共有メモリ管理テーブル313のエントリは、レプリケーションマネージャrpmから共有メモリ設定の指示を受けた際に作成される。図7に示す共有メモリ管理テーブル313_1は、エントリ701_1、2を有する。また、図7に示す共有メモリ管理テーブル313_2は、エントリ702_1を有する。
共有メモリ管理テーブル313は、ゲストアドレスと、ホストアドレスと、サイズと、転送モードと、ユーザIDと、宛先ホストIDというフィールドを含む。このうち、ゲストアドレスフィールド、サイズ、転送モード、ユーザIDは、レプリケーションマネージャrpmから通知される値である。そして、ゲストアドレスフィールド、サイズ、ユーザIDには、DB管理テーブル312のログアドレス、ログサイズ、ユーザIDの各フィールドと同一の値が格納される。また、転送モードフィールドには、共有メモリ管理テーブル313を有する物理マシンpmが転送元側となる場合、レプリケーション管理テーブル311の転送モードフィールドと同一の値が格納される。一方、共有メモリ管理テーブル313を有する物理マシンpmが転送先側となる場合、転送モードフィールドには、「None」が設定される。
ホストアドレスフィールドには、共有メモリに設定されたログのホストOS上でのメモリアドレスが格納される。宛先ホストIDフィールドには、共有メモリ管理テーブル313を有する物理マシンpmが転送元側となる場合、転送先側となるホストを識別する情報が格納される。一方、共有メモリ管理テーブル313を有する物理マシンpmが転送先となる、宛先ホストIDフィールドには、「None」が設定される。
上述したように、転送モード、宛先ホストIDの各フィールドは、転送元側だけで利用するフィールドであるため、ホストOSは、Noneが設定されているエントリが、転送先となるエントリであることを識別することができる。
例えば、エントリ701_1は、図3で示した拡張Binlog121_11の設定である。具体的には、エントリ701_1は、ユーザIDがUser1であり、ホストアドレスaddr1であり、サイズがSize1となる拡張Binlog121_11を、割込みによりホストOS2に転送することを示す。
また、エントリ702_1は、図3で示したRelaylog131_21の設定である。具体的には、エントリ702_1は、ユーザIDがUser1であり、ホストアドレスaddr2であり、サイズがSize2となるRelaylog131_21に、転送元側から受信した拡張Binlog121_11のエントリを書込むことを示す。
次に、冗長化システム100が実行する処理を、図8〜図12を用いて説明する。
図8は、レプリケーション設定処理手順の一例を示すフローチャートである。レプリケーション設定処理は、レプリケーションを設定する処理である。レプリケーション設定処理は、レプリケーション設定部301が有する機能を実現する処理であり、また、レプリケーションマネージャrpmが実行する処理である。
レプリケーションマネージャrpmは、管理者からレプリケーションリクエストを受け付ける(ステップS801)。ここで、レプリケーションリクエストには、マスタDBとなるDBIDと、スレーブDBとなるDBIDと、転送モードとが含まれる。
次に、レプリケーションマネージャrpmは、レプリケーション管理テーブル311にエントリがあるか否かを判断する(ステップS802)。なお、初期状態ではレプリケーション管理テーブル311にはエントリが1つもない状態である。レプリケーション管理テーブル311にエントリがない場合(ステップS802:No)、レプリケーションマネージャrpmは、レプリケーション管理テーブル311にエントリを追加する(ステップS803)。
ステップS803の終了後、またはレプリケーション管理テーブル311にエントリがある場合(ステップS802:Yes)、レプリケーションマネージャrpmは、DB管理テーブル312にマスタDB122のエントリがあり、かつスレーブDB132のエントリがあるか否かを判断する(ステップS804)。前述した2つのエントリがある場合(ステップS804:Yes)、レプリケーションマネージャrpmは、ホストOS1に、引数がゲストID、ログアドレス、サイズ、ユーザID、転送モード、宛先ホストIDとなる共有メモリ設定処理の実行指示を送信する(ステップS805)。また、レプリケーションマネージャrpmは、ホストOS2に、引数がゲストID、ログアドレス、サイズ、ユーザID、None、Noneとなる共有メモリ設定処理の実行指示を送信する(ステップS806)。ステップS806の終了後、レプリケーションマネージャrpmは、レプリケーション設定処理を終了する。
一方、DB管理テーブル312にマスタDB122のエントリがない、またはスレーブDB132のエントリがない場合(ステップS804:No)、レプリケーションマネージャrpmは、レプリケーション設定処理をエラー終了する。レプリケーション設定処理を実行することにより、レプリケーションマネージャrpmは、冗長化システム100内におけるレプリケーションの設定を行うことができる。
図9は、共有メモリ設定処理手順の一例を示すフローチャートである。共有メモリ設定処理は、共有メモリを設定する処理である。共有メモリ設定処理は、共有メモリ設定部302が有する機能を実現する処理であり、また、ホストOSが実行する処理である。また、共有メモリ設定処理は、引数として、ゲストID、ログアドレス、サイズ、ユーザID、転送モード、宛先ホストIDとを受け付ける。
ホストOSは、レプリケーション管理テーブル311にエントリがあるか否かを判断する(ステップS901)。レプリケーション管理テーブル311にエントリがない場合(ステップS901:No)、ホストOSは、レプリケーション管理テーブル311にエントリを追加する(ステップS902)。このとき、追加されるエントリの内容は、引数として得たログアドレス、サイズ、ユーザID、転送モード、宛先ホストIDである。この段階で、追加されるエントリのホストアドレスフィールドは空白である。
ステップS902の処理終了後、またはレプリケーション管理テーブル311にエントリがある場合(ステップS901:Yes)、ホストOSは、ハイパーバイザhvに引数がログアドレス、サイズとなる共有メモリの設定要求を行う(ステップS903)。そして、ホストOSは、ハイパーバイザhvから、共有メモリのホストアドレスを取得する(ステップS904)。次に、ホストOSは、エントリに、取得したホストアドレスを設定する(ステップS905)。そして、ホストOSは、転送モードが割込みか否かを判断する(ステップS906)。転送モードが割込みである場合(ステップS906:Yes)、ホストOSは、共有メモリに書込んだ時にトラップを通知するように設定する(ステップS907)。ステップS907の処理終了後、ホストOSは、共有メモリ設定処理を終了する。
一方、転送モードが割込みでない場合(ステップS906:No)、すなわち、転送モードがタイマー、またはNoneである場合、ホストOSは、共有メモリ設定処理を終了する。共有メモリ設定処理を実行することにより、ホストOSは、共有メモリを設定することができる。
ここで、転送元と転送先とについて、共有メモリ設定処理が実行される際の例を説明する。転送元装置に指定されたゲストOSを管理するホストOS1は、共有メモリ設定処理を実行することにより、図7で示したエントリ701_1を生成するとともに、拡張Binlog121_11を転送用の共有メモリに設定する。また、転送先装置に指定されたゲストOSを管理するホストOS2は、共有メモリ設定処理を実行することにより、図7で示したエントリ702_1を生成するとともに、Relaylog131_21を受信用の共有メモリに設定する。
図10は、フラグ書込み処理手順の一例を示すフローチャートである。フラグ書込み処理は、拡張Binlog121の完了フラグを書込む処理である。フラグ書込み処理は、フラグ書込み部307が有する機能を実現する処理であり、ゲストOSが実行する処理である。
ゲストOSは、ログ生成部305により拡張Binlogのエントリが生成されるまで待ち受ける(ステップS1001)。次に、ゲストOSは、生成されたBinlogのエントリが完全に書込まれたか否かを判断する(ステップS1002)。生成されたBinlogのエントリが完全に書込まれていない場合(ステップS1002:No)、ゲストOSは、ステップS1001の処理に移行する。一方、生成されたBinlogのエントリが完全に書込まれた場合(ステップS1002:Yes)、ゲストOSは、拡張Binlogの完了フラグをTrueに設定する(ステップS1003)。ステップS1003の処理終了後、ゲストOSは、フラグ書込み処理を終了する。フラグ書込み処理を実行することにより、ゲストOSは、更新リクエストのアトミック性を確保することができる。
図11は、ログ送信処理手順の一例を示すフローチャートである。ログ送信処理は、ログを送信する処理である。ログ送信処理は、送信部303が有する機能を実現する処理であり、ホストOSが実行する処理である。
ホストOSは、共有メモリ管理テーブル313から、宛先ホストIDを取得する(ステップS1101)。次に、ホストOSは、宛先ホストIDを有するホストOSの書込み部304に管理LAN111を介して接続する(ステップS1102)。そして、ホストOSは、共有メモリ管理テーブル313から、ホストアドレスを取得する(ステップS1103)。次に、ホストOSは、転送モードを確認する(ステップS1104)。転送モードが割込みである場合(ステップS1104:割込み)、ホストOSは、ログ生成部305の書込みをトラップする(ステップS1105)。一方、転送モードがタイマーである場合(ステップS1104:タイマー)、ホストOSは、一定間隔ごとに拡張Binlog121の内容を読み出す(ステップS1106)。
ステップS1105またはステップS1106の処理終了後、ホストOSは、拡張Binlog121の完了フラグを確認する(ステップS1107)。拡張Binlog121の完了フラグがFalseである場合(ステップS1107:False)、ホストOSは、ステップS1104の処理に移行する。一方、拡張Binlog121の完了フラグがTrueである場合(ステップS1107:True)、ホストOSは、拡張Binlog121を、宛先ホストIDを有するホストOSの書込み部304に送信する(ステップS1108)。次に、ホストOSは、書込み部304からのAckを待ち受ける(ステップS1109)。Ackを受け付けた後、ホストOSは、拡張Binlog121のエントリを消去する(ステップS1110)。ステップS1110の処理終了後、ホストOSは、ログ送信処理を終了する。ログ送信処理を実行することにより、転送元となったホストOSは、マスタDB122に書込まれたデータを転送先に送信することができる。
図12は、ログ書込み処理手順の一例を示すフローチャートである。ログ書込み処理は、ログを受信してRelaylog131に書込む処理である。ログ書込み処理は、書込み部304が有する機能を実現する処理であり、ホストOSが実行する処理である。
ホストOSは、送信部303からの接続を待ち受ける(ステップS1201)。送信部303から接続された場合に、ホストOSは、送信部303から拡張Binlog121を管理LAN111を介して受信する(ステップS1202)。次に、ホストOSは、受信した拡張Binlog121のユーザIDに対応するRelaylog131を特定する(ステップS1203)。そして、ホストOSは、受信した拡張Binlog121からユーザIDと完了フラグとを除いたエントリの内容を、特定したRelaylog131に書込む(ステップS1204)。次に、ホストOSは、ログ実行部306の処理完了を待ち受ける(ステップS1205)。ログ実行部306が処理完了した後、ホストOSは、送信部303にAckを送信する(ステップS1206)。
ステップS1206の処理終了後、ホストOSは、ログ書込み処理を終了する。ログ書込み処理を実行することにより、ホストOSは、マスタDB122に書込まれたデータを転送元から受信することができる。
以上説明したように、冗長化システム100は、レプリケーションの転送元と転送先とにおいて、ゲストOSとホストOS間の共有メモリを設定し、転送元のホストOSが、共有メモリのデータを転送先に管理LAN111を介して転送する。これにより、冗長化システム100は、同一のIPアドレスを有するゲストOS11とゲストOS21との間のレプリケーションを効率的に行うことができる。具体的には、冗長化システム100は、業務LAN112を用いず管理LAN111を用いてデータを転送するためにセキュアに行え、また、パケットの変換もしないために負荷を増大させることもなく、レプリケーションを行うことができる。また、冗長化システム100は、仮想システムテンプレートの変更や特別なハードウェアを用意することなく、レプリケーションを行うことができる。
また、冗長化システム100は、指示141に含まれるユーザIDにより特定したユーザのゲストOSの共有メモリを設定し、転送元では共有メモリのデータとユーザIDとを送信し、転送先では受信したユーザIDの共有メモリに受信したデータを書込んでもよい。これにより、冗長化システム100は、マルチテナントに対応することができる。一方で、冗長化システム100において、レプリケーションを指示するユーザが1人であることが予めわかっている場合には、拡張Binlog121、DB管理テーブル312、共有メモリ管理テーブル313のユーザIDフィールドを設けなくてもよい。
また、冗長化システム100は、マスタDB122に対して実行された更新クエリの全体が転送元のゲストOSの間の共有メモリに書込まれたことに応じて、管理LAN111を介して、転送先のホストOSに送信してもよい。これにより、更新クエリのアトミック性を担保でき、スレーブDB132が破壊されることを防ぐことができる。
また、冗長化システム100に含まれるゲストOSのIPアドレスは、仮想システムテンプレートにより設定されたものであってもよい。冗長化システム100は、仮想システムテンプレートの適用により同一のIPアドレスを有するゲストOS同士のレプリケーションを効率的に行うことができる。また、仮想システムテンプレートを適用しない例であっても、本実施の形態を適用することができる。例えば、レプリケーションを管理するユーザが、管理の簡便化のため、本番系の仮想システムのネットワーク設定と、待機系の仮想システムのネットワーク設定とを同一にしている場合である。この場合であっても、本実施の形態を適用して、異なる仮想システムに属する同一IPアドレスを有するゲストOS同士のレプリケーションを効率的に行うことができる。
(実施の形態2の説明)
実施の形態2にかかる冗長化システムは、マスタDBを有するゲストOSとスレーブDBを有するゲストOSとが、同一の物理マシン上で動作する構成と、異なる物理マシン上で動作する構成とが混在する際にも対応できるシステムである。このような場合、実施の形態2にかかる冗長化システムは、2つの構成を判定して、メモリ間のコピーと、管理LAN111を介する転送とを使い分ける。実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
実施の形態2にかかる冗長化システムは、マスタDBを有するゲストOSとスレーブDBを有するゲストOSとが、同一の物理マシン上で動作する構成と、異なる物理マシン上で動作する構成とが混在する際にも対応できるシステムである。このような場合、実施の形態2にかかる冗長化システムは、2つの構成を判定して、メモリ間のコピーと、管理LAN111を介する転送とを使い分ける。実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
図13は、実施の形態2にかかる冗長化システム1300の動作例を示す説明図である。図13に示す冗長化システム1300において、物理マシンpm1は、ホストOS1と、ゲストOS11と、ゲストOS12とを動作させる。また、物理マシンpm2は、ホストOS2と、ゲストOS21とを動作させる。なお、図13には図示していないが、冗長化システム1300内には物理マシンpmmが存在する。
ゲストOS11は、ゲストOS11の利用者となるクライアントから届いた更新リクエストから、拡張Binlog121_11のエントリを生成する。ホストOS1は、拡張Binlog121_11に書込まれたことを検出すると、宛先ホストIDと、自身のIDとを比較する。
宛先ホストIDと、自身のIDとが同一、すなわち、図13の例では、マスタDB122_11に対応するスレーブDBが、スレーブDB132_12であるとする。この場合、ホストOS1は、拡張Binlog121_11に書込まれたデータをRelaylog131_12にコピーする。そして、ゲストOS12は、Relaylog131_12にコピーされたSQLを実行してスレーブDB132_12に反映する。
一方、図13の例について、宛先ホストIDと自身のIDとが異なる、すなわち、マスタDB122_11に対応するスレーブDBが、スレーブDB132_21であるとする。この場合、ホストOS1は、管理LAN111経由で拡張Binlog121_11に書込まれたデータをホストOS2に送信する。ホストOS2は、受信したデータを、Relaylog131_21に書込む。そして、ゲストOS21は、Relaylog131_21にコピーされたSQLを実行してスレーブDB132_21に反映する。次に、冗長化システム1300の機能構成例を、図14を用いて説明する。
図14は、冗長化システム1300の機能構成例を示す説明図である。冗長化システム1300は、レプリケーション設定部301と、共有メモリ設定部302と、書込み部304と、ログ生成部305と、ログ実行部306と、判定部1401と、コピー部1402と、送信部1403と、を含む。ここで、共有メモリ設定部302、書込み部304、判定部1401〜送信部1403は、物理マシンpm1、pm2上で動作するホストOSが有する機能である。
ここで、図14の例では、物理マシンpm1は、ホストOS1、ゲストOS11、12を動作させている。そして、ゲストOS11は、マスタDB122_11を有し、ゲストOS12は、スレーブDB132_11を有する。また、物理マシンpm2は、ホストOS2、ゲストOS21を動作させている。
図14の例では、ホストOS1が、共有化される拡張Binlog121_11と、共有化されるRelaylog131_12を有するものとする。
判定部1401は、更新リクエストを受け付けた際に、転送先のDBが転送元のDBと同じ物理マシン上に配備されているか、それとも別の物理サーバ上に配備されているかを判定する。
コピー部1402は、転送先のDBが転送元のDBと同じ物理マシン上に配備されていると判定部1401が判定した場合、転送用の共有メモリに書込まれたデータを、受信用の共有メモリにコピーする。例えば、転送先のDBが転送元のDBと同じ物理マシン上に配備されていると判定部1401_1が判定したとする。この場合、コピー部1402_1は、転送用の共有メモリとなる拡張Binlog121_11のエントリを、受信用の共有メモリとなるRelaylog131にコピーする。
送信部1403は、転送先のDBが転送元のDBとは別の物理サーバ上に配備されていると判定部1401が判定した場合、ゲストOSによって転送用の共有メモリに書込まれたデータを、管理LAN111を介して宛先装置に送信する。
図15は、判定処理手順の一例を示すフローチャートである。判定処理は、マスタDBを有するゲストOSとスレーブDBを有するゲストOSとが同一の物理マシン上で動作するか否かを判定する処理である。判定処理は、判定部1401が有する機能を実現する処理であり、ホストOSが実行する処理である。
ホストOSは、共有メモリ管理テーブル313から、宛先ホストIDを取得する(ステップS1501)。次に、ホストOSは、取得した宛先ホストIDが自身のホストIDと同一か否かを判断する(ステップS1502)。取得した宛先ホストIDが自身のホストIDと同一である場合(ステップS1502:Yes)、ホストOSは、ログコピー処理を実行する(ステップS1503)。ログコピー処理の詳細は、図16で説明する。また、ここで、転送元装置に指定する指示と、転送先装置に指定する指示とは、一つのデータとして結合されたものでもよいし、データとしては別々ではあるが、関連付けられたものでもよい。
一方、取得した宛先ホストIDが自身のホストIDとは異なる場合(ステップS1502:No)、ホストOSは、ログ送信処理を実行する(ステップS1504)。ログ送信処理は、図11で説明したものと同一である。
ステップS1503の処理、またはステップS1504の処理終了後、ホストOSは、判定処理を終了する。判定処理を実行することにより、ホストOSは、マスタDBを有するゲストOSとスレーブDBを有するゲストOSとが同一の物理マシン上で動作するか否かを判定することができる。
図16は、ログコピー処理手順の一例を示すフローチャートである。ログコピー処理は、ログをコピーする処理である。ログコピー処理は、コピー部1402が有する機能を実現する処理であり、ホストOSが実行する処理である。
ホストOSは、共有メモリ管理テーブル313から、ホストアドレスを取得する(ステップS1601)。次に、ホストOSは、転送モードを確認する(ステップS1602)。転送モードが割込みである場合(ステップS1602:割込み)、ホストOSは、ログ生成部305の書込みをトラップする(ステップS1603)。一方、転送モードがタイマーである場合(ステップS1602:タイマー)、ホストOSは、一定間隔ごとに拡張Binlog121の内容を読み出す(ステップS1604)。
ステップS1603またはステップS1604の処理終了後、ホストOSは、拡張Binlog121の完了フラグを確認する(ステップS1605)。拡張Binlog121の完了フラグがFalseである場合(ステップS1605:False)、ホストOSは、ステップS1602の処理に移行する。一方、拡張Binlog121の完了フラグがTrueである場合(ステップS1605:True)、ホストOSは、拡張Binlog121のユーザIDに対応するRelaylog131を特定する(ステップS1606)。
次に、ホストOSは、拡張Binlog121からユーザIDと完了フラグとを除いたエントリの内容をRelaylog131にコピーする(ステップS1607)。そして、ホストOSは、ログ実行部306の処理完了を待ち受ける(ステップS1608)。ログ実行部306が処理完了した後、拡張Binlog121のエントリを消去する(ステップS1609)。ステップS1609の処理終了後、ホストOSは、ログコピー処理を終了する。ログコピー処理を実行することにより、ホストOSは、マスタDB122に書込まれたデータをスレーブDB132に書込むことができる。
以上説明したように、冗長化システム1300は、転送元装置の指定を受けたゲストOSを管理するホストOSが、自身が管理する他のゲストOSが転送先装置の指定を受けたか否かに応じて、メモリ間のコピーと管理LAN111を介する転送を使い分けてもよい。これにより、冗長化システム1300は、メモリ間のコピーを使う場合には、管理LAN111にかかる負荷を抑制することができ、また、管理LAN111を介さない分、レプリケーションにかかる時間を短縮することができる。また、冗長化システム1300は、転送元のDBや転送先のDBがマイグレーションした場合にも対応することができる。
(実施の形態3の説明)
実施の形態3にかかる冗長化システムは、1つの物理マシンpmに、マスタDB122とスレーブDB132とが混在する際にも対応できるシステムである。実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
実施の形態3にかかる冗長化システムは、1つの物理マシンpmに、マスタDB122とスレーブDB132とが混在する際にも対応できるシステムである。実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
図17は、実施の形態3にかかる冗長化システム1700の動作例を示す説明図である。図17に示す冗長化システム1700において、物理マシンpm1は、ゲストOS11を動作させる。また、物理マシンpm2は、ゲストOS21とゲストOS22とを動作させる。また、物理マシンpm3は、ゲストOS31を動作させる。なお、図17には図示していないが、冗長化システム1700内には物理マシンpmmが存在し、物理マシンpm1、pm2、pm3は、ホストOSを動作させる。
図17で示すように、ゲストOS11が有するマスタDB122_11と、ゲストOS21が有するスレーブDB132_21との間でレプリケーションが行われる。また、ゲストOS22が有するマスタDB122_22と、ゲストOS31が有するスレーブDB132_31との間でレプリケーションが行われる。このように、物理マシンpm2が、スレーブDB132_21と、マスタDB122_22とを有する構成となっている。次に、冗長化システム1700の機能構成例を、図18を用いて説明する。
図18は、冗長化システム1700の機能構成例を示す説明図である。図18では、物理マシンpmm、pm1、pm3の機能構成例は図3で示したものと同一であるため、図示を省略してある。
ホストOS2は、共有メモリ設定部302_2と、送信部1801_2と、書込み部1802_2とを有する。
また、ホストOSは、共有メモリ管理テーブル1811_2にアクセス可能である。共有メモリ管理テーブル1811_2は、物理マシンpm2のRAM203、ディスク205といった記憶装置に格納される。共有メモリ管理テーブル1811の記憶内容の一例は、図19で説明する。
送信部1801_2は、共有メモリ管理テーブル1811_2の転送モードがNoneでないエントリの中から対象となる転送用の共有メモリを特定して、特定した転送用の共有メモリに書込まれたデータを、管理LAN111を介して宛先装置に送信する。
書込み部1802_2は、共有メモリ管理テーブル1811_2の転送モードがNoneであるエントリの中から対象となる受信用の共有メモリを特定して、管理LAN111を介して受信したデータを、特定した受信用の共有メモリに書込む。
図19は、共有メモリ管理テーブル1811の記憶内容の一例を示す説明図である。図19では、共有メモリ管理テーブル1811_2を用いて説明する。図19で示す共有メモリ管理テーブル1811_2は、エントリ1901_1〜3を有する。
共有メモリ管理テーブル1811には、転送元装置の指定と転送先装置の指定とが混在している。具体的には、エントリ1901_1、3は、転送モードがNoneでないため、転送元装置の指定を受けたエントリである。一方、エントリ1901_2は、転送モードがNoneであるため転送先装置の指定を受けたエントリである。送信部1801、書込み部1802は、共有メモリ管理テーブル1811のエントリの転送モードフィールドを参照することにより、転送元装置の指定なのか、転送先装置の指定なのかを特定することができる。また、送信部1801、書込み部1802は、共有メモリ管理テーブル1811のエントリの宛先ホストIDフィールドを参照して、転送元装置の指定なのか、転送先装置の指定なのかを特定してもよい。
以上説明したように、冗長化システム1700によれば、1つの物理マシンに、マスタDB122とスレーブDB132とが混在する際にもレプリケーションを行うことができる。
なお、実施の形態1〜3において、共有メモリに書込まれるデータが、更新クエリであったが、どのようなデータでもよい。例えば、本番系のデータを、単に、待機系のデータにバックアップするシステムに対しても、実施の形態1〜3を適用することができる。また、この場合、共有メモリに書込まれるデータに対してアトミック性を確保しなくてよく、本番系の共有メモリに書込まれたデータを、随時、待機系の共有メモリに書込めばよい。
なお、本実施の形態で説明した冗長化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本レプリケーションプログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本レプリケーションプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態1〜3に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行させることを特徴とするレプリケーションプログラム。
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行させることを特徴とするレプリケーションプログラム。
(付記2)前記指示は、ユーザを識別する情報をさらに含み、
前記設定する処理は、
前記指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する複数の仮想マシンのうちの前記転送元装置として指定された前記ユーザの仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記転送先装置として指定された前記ユーザの仮想マシンと共有する受信用の共有メモリに設定し、
前記送信する処理は、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータと前記ユーザを識別する情報とを、前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、受信した前記ユーザを識別する情報により特定されており前記転送先装置として指定されたユーザの仮想マシンと共有する受信用の共有メモリに書込む、
ことを特徴とする付記1に記載のレプリケーションプログラム。
前記設定する処理は、
前記指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する複数の仮想マシンのうちの前記転送元装置として指定された前記ユーザの仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記転送先装置として指定された前記ユーザの仮想マシンと共有する受信用の共有メモリに設定し、
前記送信する処理は、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータと前記ユーザを識別する情報とを、前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、受信した前記ユーザを識別する情報により特定されており前記転送先装置として指定されたユーザの仮想マシンと共有する受信用の共有メモリに書込む、
ことを特徴とする付記1に記載のレプリケーションプログラム。
(付記3)前記コンピュータに、
前記指示により前記仮想マシンが前記転送元装置に指定された場合、前記指示により前記コンピュータが前記宛先装置に指定されたか否かを判定し、
前記コンピュータが前記宛先装置に指定されたと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記受信用の共有メモリにコピーし、
前記コンピュータが前記宛先装置に指定されていないと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記管理用のネットワークを介して前記宛先装置に送信する、
処理を実行させることを特徴とする付記1または2に記載のレプリケーションプログラム。
前記指示により前記仮想マシンが前記転送元装置に指定された場合、前記指示により前記コンピュータが前記宛先装置に指定されたか否かを判定し、
前記コンピュータが前記宛先装置に指定されたと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記受信用の共有メモリにコピーし、
前記コンピュータが前記宛先装置に指定されていないと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記管理用のネットワークを介して前記宛先装置に送信する、
処理を実行させることを特徴とする付記1または2に記載のレプリケーションプログラム。
(付記4)前記送信する処理は、
前記コンピュータが有するデータベースに対して実行された更新クエリの全体が前記転送用の共有メモリに書込まれたことに応じて、前記更新クエリの全体を前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込み、
前記コンピュータに、
前記受信用の共有メモリに前記データが書込まれた場合、前記データを更新クエリの全体として前記コンピュータが有するデータベースに対して実行する、
処理を実行させることを特徴とする付記1〜3のいずれか一つに記載のレプリケーションプログラム。
前記コンピュータが有するデータベースに対して実行された更新クエリの全体が前記転送用の共有メモリに書込まれたことに応じて、前記更新クエリの全体を前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込み、
前記コンピュータに、
前記受信用の共有メモリに前記データが書込まれた場合、前記データを更新クエリの全体として前記コンピュータが有するデータベースに対して実行する、
処理を実行させることを特徴とする付記1〜3のいずれか一つに記載のレプリケーションプログラム。
(付記5)前記仮想マシンのIPアドレスは、前記コンピュータ上で動作させる仮想マシンのネットワークのIPアドレスの設定情報を有するテンプレートにより設定されたものであることを特徴とする付記1〜4のいずれか一つに記載のレプリケーションプログラム。
(付記6)レプリケーションを指示する指示装置と2つの物理マシンとがそれぞれ接続する冗長化システムであって、
前記指示装置は、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を、前記2つの物理マシンのそれぞれに送信し、
前記2つの物理マシンのうち、前記転送元装置に指定された仮想マシンを動作する第1の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送元装置の指定に応じた記憶領域を、前記仮想マシンと共有する転送用の共有メモリに設定し、
前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記2つの物理マシンのうち、前記転送先装置に指定された仮想マシンを動作する第2の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送先装置の指定に応じた記憶領域を、前記仮想マシンと共有する受信用の共有メモリに設定し、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込む、
ことを特徴とする冗長化システム。
前記指示装置は、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を、前記2つの物理マシンのそれぞれに送信し、
前記2つの物理マシンのうち、前記転送元装置に指定された仮想マシンを動作する第1の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送元装置の指定に応じた記憶領域を、前記仮想マシンと共有する転送用の共有メモリに設定し、
前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記2つの物理マシンのうち、前記転送先装置に指定された仮想マシンを動作する第2の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送先装置の指定に応じた記憶領域を、前記仮想マシンと共有する受信用の共有メモリに設定し、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込む、
ことを特徴とする冗長化システム。
(付記7)コンピュータが、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行することを特徴とするレプリケーション方法。
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行することを特徴とするレプリケーション方法。
1、2 ホストOS
11、12、13、21、22、23 ゲストOS
100、1300、1700 冗長化システム
111 管理LAN
112 業務LAN
121 拡張Binlog
122 マスタDB
131 Relaylog
132 スレーブDB
301 レプリケーション設定部
302 共有メモリ設定部
303、1403 送信部
304 書込み部
305 ログ生成部
306 ログ実行部
307 フラグ書込み部
311 レプリケーション管理テーブル
312 DB管理テーブル
313 共有メモリ管理テーブル
1401 判定部
1402 コピー部
11、12、13、21、22、23 ゲストOS
100、1300、1700 冗長化システム
111 管理LAN
112 業務LAN
121 拡張Binlog
122 マスタDB
131 Relaylog
132 スレーブDB
301 レプリケーション設定部
302 共有メモリ設定部
303、1403 送信部
304 書込み部
305 ログ生成部
306 ログ実行部
307 フラグ書込み部
311 レプリケーション管理テーブル
312 DB管理テーブル
313 共有メモリ管理テーブル
1401 判定部
1402 コピー部
Claims (6)
- コンピュータに、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行させることを特徴とするレプリケーションプログラム。 - 前記指示は、ユーザを識別する情報をさらに含み、
前記設定する処理は、
前記指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する複数の仮想マシンのうちの前記転送元装置として指定された前記ユーザの仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記転送先装置として指定された前記ユーザの仮想マシンと共有する受信用の共有メモリに設定し、
前記送信する処理は、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータと前記ユーザを識別する情報とを、前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、受信した前記ユーザを識別する情報により特定されており前記転送先装置として指定されたユーザの仮想マシンと共有する受信用の共有メモリに書込む、
ことを特徴とする請求項1に記載のレプリケーションプログラム。 - 前記コンピュータに、
前記指示により前記仮想マシンが前記転送元装置に指定された場合、前記指示により前記コンピュータが前記宛先装置に指定されたか否かを判定し、
前記コンピュータが前記宛先装置に指定されたと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記受信用の共有メモリにコピーし、
前記コンピュータが前記宛先装置に指定されていないと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記管理用のネットワークを介して前記宛先装置に送信する、
処理を実行させることを特徴とする請求項1または2に記載のレプリケーションプログラム。 - 前記送信する処理は、
前記コンピュータが有するデータベースに対して実行された更新クエリの全体が前記転送用の共有メモリに書込まれたことに応じて、前記更新クエリの全体を前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込み、
前記コンピュータに、
前記受信用の共有メモリに前記データが書込まれた場合、前記データを更新クエリの全体として前記コンピュータが有するデータベースに対して実行する、
処理を実行させることを特徴とする請求項1〜3のいずれか一つに記載のレプリケーションプログラム。 - レプリケーションを指示する指示装置と2つの物理マシンとがそれぞれ接続する冗長化システムであって、
前記指示装置は、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を、前記2つの物理マシンのそれぞれに送信し、
前記2つの物理マシンのうち、前記転送元装置に指定された仮想マシンを動作する第1の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送元装置の指定に応じた記憶領域を、前記仮想マシンと共有する転送用の共有メモリに設定し、
前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記2つの物理マシンのうち、前記転送先装置に指定された仮想マシンを動作する第2の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送先装置の指定に応じた記憶領域を、前記仮想マシンと共有する受信用の共有メモリに設定し、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込む、
ことを特徴とする冗長化システム。 - コンピュータが、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行することを特徴とするレプリケーション方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016049018A JP2017162416A (ja) | 2016-03-11 | 2016-03-11 | レプリケーションプログラム、冗長化システム、およびレプリケーション方法 |
US15/444,967 US20170262183A1 (en) | 2016-03-11 | 2017-02-28 | Non-transitory computer-readable storage medium, redundant system, and replication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016049018A JP2017162416A (ja) | 2016-03-11 | 2016-03-11 | レプリケーションプログラム、冗長化システム、およびレプリケーション方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017162416A true JP2017162416A (ja) | 2017-09-14 |
Family
ID=59786543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016049018A Pending JP2017162416A (ja) | 2016-03-11 | 2016-03-11 | レプリケーションプログラム、冗長化システム、およびレプリケーション方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170262183A1 (ja) |
JP (1) | JP2017162416A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10721125B2 (en) * | 2017-07-20 | 2020-07-21 | Vmware, Inc. | Systems and methods for update propagation between nodes in a distributed system |
US11656898B2 (en) * | 2018-03-20 | 2023-05-23 | Mitsubishi Electric Corporation | Information processing device, method, and program |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5347982B2 (ja) * | 2010-01-18 | 2013-11-20 | 富士通株式会社 | 仮想ネットワーク制御プログラム、仮想ネットワーク制御方法および管理装置 |
JP2014142720A (ja) * | 2013-01-22 | 2014-08-07 | Fujitsu Ltd | 仮想マシン移動方法、情報処理装置及びプログラム |
-
2016
- 2016-03-11 JP JP2016049018A patent/JP2017162416A/ja active Pending
-
2017
- 2017-02-28 US US15/444,967 patent/US20170262183A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170262183A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196237B (zh) | 计算系统中的容器迁移 | |
JP6615796B2 (ja) | マルチテナントアプリケーションサーバ環境におけるパーティションマイグレーションのためのシステムおよび方法 | |
US11853789B2 (en) | Resource manager integration in cloud computing environments | |
US11368407B2 (en) | Failover management using availability groups | |
JP2011076605A (ja) | 仮想マシン・イメージの実行方法及びシステム | |
US10452502B2 (en) | Handling node failure in multi-node data storage systems | |
WO2019057055A1 (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
US10715472B2 (en) | System and method for unit-of-order routing | |
KR102035071B1 (ko) | 주문형 가상 클러스터 구축 시스템 및 방법 | |
JP2013152666A (ja) | 管理システム、画像形成装置、管理システムの制御方法、画像形成装置の制御方法、プログラム | |
CN112035062B (zh) | 云计算的本地存储的迁移方法、计算机设备及存储介质 | |
JP6393612B2 (ja) | システムのバックアップ装置及びバックアップ方法 | |
CN113746641B (zh) | 一种基于分布式存储的odx协议处理方法 | |
EP4118522B1 (en) | Multi-service storage layer for storing application-critical data | |
JP2017162416A (ja) | レプリケーションプログラム、冗長化システム、およびレプリケーション方法 | |
JP5655612B2 (ja) | 情報処理システム、情報処理方法、及び制御プログラム | |
JP2009251756A (ja) | クライアント装置、分散ファイルシステム、共有リソース多重化方法およびプログラム | |
US11363113B1 (en) | Dynamic micro-region formation for service provider network independent edge locations | |
CN114500577A (zh) | 数据访问系统及数据访问方法 | |
WO2016046951A1 (ja) | 計算機システム及びそのファイル管理方法 | |
JP2012141727A (ja) | 仮想マシンシステム、及びその制御方法 | |
JP5780297B2 (ja) | ポート番号特定システム、ポート番号特定システム制御方法およびその制御用プログラム | |
JP4300133B2 (ja) | クラスタメモリファイルシステム | |
US11809404B1 (en) | Mixed-mode replication for sharded database systems | |
WO2023000705A1 (zh) | 应用程序虚拟化方法、系统、电子设备及存储介质 |