web-dev-qa-db-ja.com

gluster libgfapi HA

Gluster分散ストレージを使用してKVM_qemuを探索していました。私の目標は、完全なHAを備えたテストクラスターを構築することでした。つまり、VM用のHAとglusterストレージです。 3ノードのglusterクラスターをセットアップし、古いFuseメソッドの代わりにlibgfapiでqemu glusterドライバーを使用することを計画していますが、vmxmlファイルまたはqemuimage createコマンドでは、1つのglusterサーバーIPしか指定できないことに気付きました!!それで、そのサーバーがダウンした場合、ストレージは利用できなくなりますか?それでは、qemu libgfapiメソッドを使用しながらHAを提供するためのアプローチはどうあるべきですか? keeplivedを使用して仮想フローティングIPをglusterサーバーに割り当てますか?

アドバイスしてください..ありがとう

2
Alex

これは、最初に思われるほど懸念事項ではありません。

まず、クライアントのマウント中にGluster Host IPを指定する場合(Fuseまたはlibgfapiのいずれを使用する場合でも)、それをピアプロービングにのみ使用します。そのプロービングが完了すると、libfgapiは、プロービング時に提供するIP上で、プロービングされたすべてのピア間の通信を処理します。

これは、明示的なIPによるプロービングがダウンするホストまではすべて素晴らしいことです。これが起こらないようにするためにできることがいくつかあります。 Keepalivedまたはctdbは、クライアントからサーバーへのプローブにのみ使用するフローティングIPを提供できます。あるいは、DNSラウンドロビンは名前を使用してこれを実現します。

この名前またはフローティングIPは、実際にGlusterボリュームにデータを送信するために使用されることはありませんが、劣化した環境でも常にプロービングを実行できるようにするためにのみ使用されます。

Libvirtを使用すると、これは次のようになります。

<driver name='qemu' type='qcow2' cache='none'/>
 <source protocol='gluster' name='kvm/test.img'>
    <Host name='gluster-probe' port='24007'/>
 </source>
  <target dev='vda' bus='virtio'/>      
</disk> 

この場合、libvirtの外部にDNSラウンドロビンを実装しました。これにより、少なくとも1つが稼働していれば、この名前が常にglusterピアプール内のホストに解決されるようになります。 1つに接続した後、完全なリストを取得し、IPを介してそのリスト内のホストに接続し、その後、楽しく移動します。

2
Spooler
<driver name='qemu' type='qcow2' cache='none'/>
     <source protocol='gluster' name='kvm/test.img'>
        <Host name='192.168.60.11' port='24007'/>
        <Host name='192.168.60.12' port='24007'/>
        <Host name='192.168.60.13' port='24007'/>
     </source>
      <target dev='vda' bus='virtio'/>      
</disk> 

Glusterをkvmノードにインストールし、glusterピアプローブをkvmホストにすることができます。この後、kvmホストはクラスターのメンバーになり、xml config

<driver name='qemu' type='qcow2' cache='none'/>
     <source protocol='gluster' name='kvm/test.img'>
        <Host name='127.0.0.1' port='24007'/>
     </source>
      <target dev='vda' bus='virtio'/>      
</disk> 
1
Sergey Ovsienko