「Samba 3.2 のクラスタ機能検証手順」の版間の差分

提供:Samba-JP
ナビゲーションに移動検索に移動
編集の要約なし
編集の要約なし
318行目: 318行目:
: * node.conn[0].startup
: * node.conn[0].startup


* gfs の設定:
* gfs の設定:/etc/hosts の設定
: 自身の名前解決が可能なように設定を行います。
<pre>
127.0.0.1 localhost
192.168.135.21 samba32a.local samba32a

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
</pre>

* gfs の設定:/etc/cluster/cluster.conf の設定
: /etc/cluster ディレクトリを作成の上、/etc/cluster/cluster.conf ファイルを以下のように作成します。
<pre>
<cluster name="cluster1" config_version="3">

<cman two_node="1" expected_votes="1"/>

<clusternodes>
<clusternode name="samba32a" votes="1" nodeid="1">
<fence>
<method name="single">
<device name="manual" ipaddr="192.168.135.21"/>
</method>
</fence>
</clusternode>

<clusternode name="samba32b" votes="1" nodeid="2">
<fence>
<method name="single">
<device name="manual" ipaddr="192.168.135.22"/>
</method>
</fence>
</clusternode>
</clusternodes>

<fencedevices>
<fencedevice name="manual" agent="fence_manual"/>
</fencedevices>

</cluster>
</pre>

* パーティションの作成
: parted をインストールの上、パーティションを作成します。
<pre>
samba32a:~# apt-get install parted
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libparted1.8-10
Suggested packages:
libparted1.8-dev libparted1.8-i18n parted-doc
The following NEW packages will be installed:
libparted1.8-10 parted
0 upgraded, 2 newly installed, 0 to remove and 95 not upgraded.
Need to get 261kB of archives.
After this operation, 569kB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 http://ftp.jp.debian.org lenny/main libparted1.8-10 1.8.8.git.2008.03.24-9
[197kB]
Get:2 http://ftp.jp.debian.org lenny/main parted 1.8.8.git.2008.03.24-9 [64.0kB]
Fetched 261kB in 1s (199kB/s)
Selecting previously deselected package libparted1.8-10.
(Reading database ... 19195 files and directories currently installed.)
Unpacking libparted1.8-10 (from .../libparted1.8-10_1.8.8.git.2008.03.24-9_i386.
deb) ...
Selecting previously deselected package parted.
Unpacking parted (from .../parted_1.8.8.git.2008.03.24-9_i386.deb) ...
Processing triggers for man-db ...
Setting up libparted1.8-10 (1.8.8.git.2008.03.24-9) ...
Setting up parted (1.8.8.git.2008.03.24-9) ...
samba32a:~#
samba32a:~# parted /dev/sda
GNU Parted 1.8.8
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
parted: invalid token: gpt
Yes/No? y
New disk label type? [gpt]?
(parted) mkpart primary
File system type? [ext2]? gfs
parted: invalid token: gfs
File system type? [ext2]? ext3
Start? 0
End? 512MB
(parted) p
Model: IET VIRTUAL-DISK (scsi)
Disk /dev/sda: 537MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags
1 17.4kB 512MB 512MB primary

(parted) q
Information: You may need to update /etc/fstab.

samba32a:~#
</pre>

* gfs のフォーマット
: 以下のようにして、フォーマットを行います。
<pre>
samba32a:~# gfs_mkfs -p lock_dlm -t cluster1:gfs -j 2 /dev/sda1
This will destroy any data on /dev/sda1.

Are you sure you want to proceed? [y/n] y

Device: /dev/sda1
Blocksize: 4096
Filesystem Size: 59412
Journals: 2
Resource Groups: 8
Locking Protocol: lock_dlm
Lock Table: cluster1:gfs

Syncing...
All Done
samba32a:~#
</pre>






2008年10月5日 (日) 17:15時点における版

Samba 3.2 系列の新機能の一つにクラスタ機能があります。

以下、Debian 開発版(コードネーム lenny)を用いた、クラスタ機能の検証手順を解説します。

なお、lenny を用いた理由は、検証に必要なパッケージがすべてデフォルトで用意されているためです。

検証環境は、メモリ 128MB の VMware 仮想マシンです。

iscsi ターゲットの作成

クラスタ機能を利用するには、共有ディスクが必要です。

Samba のクラスタ機能は、共有ディスクの実装に依存しませんが、比較的手軽にできる共有ディスクとして、ここでは iSCSI のターゲットを動作させることにします。

以下、 base-system のインストールのみを行った lenny を前提として手順を紹介します。

/etc/apt/sources.list は

iscsi1:~# cat /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian lenny main
deb http://security.debian.org/ lenny/updates main

のように設定しています。

  • telnetd のインストール
リモートマシンから設定を行うため、「telnetd」をインストールしました。なお ssh にしなかったのは、インストールするパッケージを最低限にしたかったためです。
iscsi1:~# apt-get install telnetd
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  openbsd-inetd
The following NEW packages will be installed:
  openbsd-inetd telnetd
0 upgraded, 2 newly installed, 0 to remove and 101 not upgraded.
Need to get 0B/75.5kB of archives.
After this operation, 238kB of additional disk space will be used.
Do you want to continue [Y/n]?
Selecting previously deselected package openbsd-inetd.
(Reading database ... 11668 files and directories currently installed.)
Unpacking openbsd-inetd (from .../openbsd-inetd_0.20080125-1_i386.deb) ...
Selecting previously deselected package telnetd.
Unpacking telnetd (from .../telnetd_0.17-36_i386.deb) ...
Processing triggers for man-db ...
Setting up openbsd-inetd (0.20080125-1) ...
Stopping internet superserver: inetd.
Not starting internet superserver: no services enabled.
Setting up telnetd (0.17-36) ...
Adding user telnetd to group utmp
  • 作業用ユーザの作成
telnetでログインするために、「local」というユーザーを作成しました。
iscsi1:~# useradd -u 501 -m local
iscsi1:~# passwd local
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
  • ホスト名の設定
ここではホスト名を「iscsi1」に設定しました。
echo iscsi1 > /etc/hostname
  • IP アドレスの設定
検証だけなら DHCP でも動作しますが、ここでは一応 192.168.135.20 というアドレスを付与しました。
 # The loopback network interface
 auto lo
 iface lo inet loopback
 
 # The primary network interface
 auto eth0
 #iface eth0 inet dhcp
 iface eth0 inet static
         address 192.168.135.20
         netmask 255.255.255.0
         network 192.168.135.0
       broadcast 192.168.135.255
         gateway 192.168.135.2
  • 再起動
IP アドレスの設定などを反映させるため、一度再起動します。
実際には、再起動しなくても設定の反映はできますが、気持ち悪いので……
  • パッケージのインストール
iscsitarget-modules-xxx および iscsitarget パッケージをインストールします。
iscsi1:~# apt-get install iscsitarget
(エラーで終了しますが、インストールはできています)
iscsi1:~# apt-get install iscsitarget-modules-2.6.26-1-686
Reading package lists... Done
Building dependency tree
Reading state information... Done
iscsitarget is already the newest version.
The following extra packages will be installed:
  linux-image-2.6.26-1-686
Suggested packages:
  linux-doc-2.6.26
The following NEW packages will be installed:
  iscsitarget-modules-2.6.26-1-686 linux-image-2.6.26-1-686
0 upgraded, 2 newly installed, 0 to remove and 101 not upgraded.
Need to get 20.1MB of archives.
After this operation, 57.4MB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 http://ftp.jp.debian.org lenny/main linux-image-2.6.26-1-686 2.6.26-5 [20.
1MB]
Get:2 http://ftp.jp.debian.org lenny/main iscsitarget-modules-2.6.26-1-686 2.6.2
6+0.4.16+svn162-4 [37.5kB]
Fetched 20.1MB in 16s (1250kB/s)
Preconfiguring packages ...
Selecting previously deselected package linux-image-2.6.26-1-686.
(Reading database ... 11705 files and directories currently installed.)
Unpacking linux-image-2.6.26-1-686 (from .../linux-image-2.6.26-1-686_2.6.26-5_i
386.deb) ...
Done.
Selecting previously deselected package iscsitarget-modules-2.6.26-1-686.
Unpacking iscsitarget-modules-2.6.26-1-686 (from .../iscsitarget-modules-2.6.26-
1-686_2.6.26+0.4.16+svn162-4_i386.deb) ...
Setting up linux-image-2.6.26-1-686 (2.6.26-5) ...
Running depmod.
Running mkinitramfs-kpkg.
Running postinst hook script update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.26-1-686
Found kernel: /boot/vmlinuz-2.6.24-1-686
Updating /boot/grub/menu.lst ... done

Setting up iscsitarget-modules-2.6.26-1-686 (2.6.26+0.4.16+svn162-4) ...
iscsi1:~#
  • 再起動の実行
ここで、ホスト名の変更の反映、カーネルモジュールの組み込みなどを行うために、一度再起動を実行します。
実際は、コマンドを駆使すれば再起動は不要ですが、気持ち悪いので、やっといたほうが無難でしょう。
  • ループバックデバイスの作成
以下のようにして、イメージファイルを作成の上、ループバックデバイスを作成します。なお、再起動するたびにループバックデバイスの構成を行う必要があります。
※うまく自動化する方法あるんでしょうか?
iscsi1:~# dd if=/dev/zero of=/var/lib/iscsi1.img bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 3.21413 s, 167 MB/s
iscsi1:~# losetup /dev/loop0 /var/lib/iscsi1.img
iscsi1:~# losetup -a
/dev/loop0: [0301]:98270 (/var/lib/iscsi1.img)
/dev/loop/0: [0301]:98270 (/var/lib/iscsi1.img)
これで、/dev/loop0 に 512MB の仮想パーティションが存在することになりました。実際に存在するパーティションを用いる場合、この作業は省略できます。
  • /etc/ietd.conf を編集します
ここでは、必要最低限の設定として、認証なしで、今作成したループバックデバイスを公開する設定を行います。各パラメータの詳細については、ietd.conf(5) などを参照してください。
Target iqn.2008-09.com.monyo:iscsi1
    Lun 0 Path=/dev/loop0,Type=fileio
    MaxConnections 1
  • iscsitarget の再起動
iscsitarget サービスの再起動を行い、設定を反映します。
iscsi1:~# /etc/init.d/iscsitarget stop
Removing iSCSI enterprise target devices: succeeded.
Stopping iSCSI enterprise target service: succeeded.
Removing iSCSI enterprise target modules: succeeded.
iscsi1:~# /etc/init.d/iscsitarget start
Starting iSCSI enterprise target service: succeeded.

Samba サーバ1の構築

引き続き、Samba サーバを構築します。

同じく、base-system のインストールのみを行った lenny から構築する方法を紹介します。

  • telnetd のインストール
  • 作業用ユーザの作成
  • ホスト名の設定
ここではホスト名を「samba32a」に設定しました。
echo samba32a > /etc/hostname
  • IP アドレスの設定
検証だけなら DHCP でも動作しますが、ここでは一応 192.168.135.21 というアドレスを付与しました。
  • 再起動
IP アドレスの設定などを反映させるため、一度再起動します。
実際には、再起動しなくても設定の反映はできますが、気持ち悪いので……
  • iSCSI / gfs / Samba 関連パッケージのインストール
以下、順次パッケージのインストールを行っていきます。
クラスタファイルシステムとしては、gfs を用いました。gfs は依存パッケージが多いので、できれば ocfs2 でやりたかったんですが、ocfs2 自体の構築はできたものの、ctdb が「」というエラーでファイルのロックに失敗してしまうため、あきらめました。
samba32a:~# apt-get install open-iscsi
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  open-iscsi
0 upgraded, 1 newly installed, 0 to remove and 101 not upgraded.
Need to get 540kB of archives.
After this operation, 1315kB of additional disk space will be used.
Get:1 http://ftp.jp.debian.org lenny/main open-iscsi 2.0.869.2-2.1 [540kB]
Fetched 540kB in 1s (279kB/s)
Selecting previously deselected package open-iscsi.
(Reading database ... 11687 files and directories currently installed.)
Unpacking open-iscsi (from .../open-iscsi_2.0.869.2-2.1_i386.deb) ...
Processing triggers for man-db ...
Setting up open-iscsi (2.0.869.2-2.1) ...
Starting iSCSI initiator service: iscsid.
Setting up iSCSI targets:
iscsiadm: No records found!
.
Mounting network filesystems:.
samba32a:~# apt-get install gfs-tools cman clvm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  binutils bochsbios debootstrap dpkg file gfs2-tools libasound2 libbrlapi0.5
  libcman2 libdb4.5 libdevmapper1.02.1 libdirectfb-1.0-0 libdlm2 libgnutls26
  libicu38 libmagic1 libnet-snmp-perl libnet-telnet-perl libnspr4-0d
  libnss3-1d libopenais2 libpcap0.8 libsdl1.2debian libsdl1.2debian-alsa
  libsqlite3-0 libsvga1 libsysfs2 libts-0.0-0 libvdemgmt0 libvdeplug2 libvirt0
  libx86-1 libxenstore3.0 libxml2 linux-image-2.6.26-1-486 lvm2 lzma
  mime-support openais openbios-sparc openhackware perl perl-base perl-doc
  perl-modules proll psmisc python python-minimal python2.5 python2.5-minimal
  qemu redhat-cluster-modules-2.6.26-1-486 sgml-base sharutils svgalibg1 vde2
  vgabios xml-core
Suggested packages:
  binutils-doc libasound2-plugins gnutls-bin libcrypt-des-perl
  libdigest-hmac-perl libdigest-sha1-perl libio-socket-inet6-perl
  linux-doc-2.6.26 dmsetup libterm-readline-gnu-perl
  libterm-readline-perl-perl groff python-doc python-tk python-profiler
  python2.5-doc binfmt-support sudo samba sgml-base-doc mailx vde2-cryptcab
  kvm debhelper
Recommended packages:
  redhat-cluster-modules
The following NEW packages will be installed:
  binutils bochsbios clvm cman debootstrap file gfs-tools gfs2-tools
  libasound2 libbrlapi0.5 libcman2 libdb4.5 libdirectfb-1.0-0 libdlm2 libicu38
  libmagic1 libnet-snmp-perl libnet-telnet-perl libnspr4-0d libnss3-1d
  libopenais2 libpcap0.8 libsdl1.2debian libsdl1.2debian-alsa libsqlite3-0
  libsvga1 libsysfs2 libts-0.0-0 libvdemgmt0 libvdeplug2 libvirt0 libx86-1
  libxenstore3.0 libxml2 linux-image-2.6.26-1-486 lzma mime-support openais
  openbios-sparc openhackware perl perl-doc perl-modules proll psmisc python
  python-minimal python2.5 python2.5-minimal qemu
  redhat-cluster-modules-2.6.26-1-486 sgml-base sharutils svgalibg1 vde2
  vgabios xml-core
The following packages will be upgraded:
  dpkg libdevmapper1.02.1 libgnutls26 lvm2 perl-base
5 upgraded, 57 newly installed, 0 to remove and 96 not upgraded.
Need to get 61.1MB/72.7MB of archives.
After this operation, 196MB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 http://ftp.jp.debian.org lenny/main perl-modules 5.10.0-14 [3192kB]
Get:2 http://ftp.jp.debian.org lenny/main perl 5.10.0-14 [4547kB]
(省略)
Setting up sgml-base (1.26) ...
Setting up xml-core (0.11) ...
samba32a:~#apt-get install samba ctdb
Samba パッケージのインストール時の質問には、以下のように答えます。
* ワークグループ名: SAMBA32GFS
* WINS の設定を DHCP から取得:しない
  • iSCSI イニシエータの設定:ディスクの認識
以下のようにして、ディスクの認識を行います。
samba32a:~# iscsiadm -m node --targetname iqn.2008-09.com.monyo:iscsi1 -p 192.16
8.135.20 --op new
New iSCSI node [tcp:[hw=default,ip=,net_if=default,iscsi_if=default] 192.168.135
.20,3260,-1 iqn.2008-09.com.monyo:iscsi1] added
samba32a:~# iscsiadm -m node --targetname iqn.2008-09.com.monyo:iscsi1 -p 192.16
8.135.20 -l
Logging in to [iface: default, target: iqn.2008-09.com.monyo:iscsi1, portal: 192
.168.135.20,3260]
Login to [iface: default, target: iqn.2008-09.com.monyo:iscsi1, portal: 192.168.
135.20,3260]: successful
samba32a:~# fdisk -l

Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0001c09b

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         993     7976241   83  Linux
/dev/hda2             994        1044      409657+   5  Extended
/dev/hda5             994        1044      409626   82  Linux swap / Solaris

Disk /dev/sda: 536 MB, 536870912 bytes
17 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 1037 * 512 = 530944 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table
  • iSCSI イニシエータの設定:ディスクの自動認識
以下のようにして、再起動時に iSCSI ターゲットおよびディスクの認識が自動で行われるようにします。
samba32a:~# vi /etc/iscsi/nodes/iqn.2008-09.com.monyo\:iscsi1/192.168.135.20\,3260
以下の項目を manual から automatic に変更します。
* node.startup
* node.conn[0].startup
  • gfs の設定:/etc/hosts の設定
自身の名前解決が可能なように設定を行います。
127.0.0.1       localhost
192.168.135.21  samba32a.local samba32a

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
  • gfs の設定:/etc/cluster/cluster.conf の設定
/etc/cluster ディレクトリを作成の上、/etc/cluster/cluster.conf ファイルを以下のように作成します。
<cluster name="cluster1" config_version="3">

<cman two_node="1" expected_votes="1"/>

<clusternodes>
<clusternode name="samba32a" votes="1" nodeid="1">
        <fence>
                <method name="single">
                        <device name="manual" ipaddr="192.168.135.21"/>
                </method>
        </fence>
</clusternode>

<clusternode name="samba32b" votes="1" nodeid="2">
        <fence>
                <method name="single">
                        <device name="manual" ipaddr="192.168.135.22"/>
                </method>
        </fence>
</clusternode>
</clusternodes>

<fencedevices>
        <fencedevice name="manual" agent="fence_manual"/>
</fencedevices>

</cluster>
  • パーティションの作成
parted をインストールの上、パーティションを作成します。
samba32a:~# apt-get install parted
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libparted1.8-10
Suggested packages:
  libparted1.8-dev libparted1.8-i18n parted-doc
The following NEW packages will be installed:
  libparted1.8-10 parted
0 upgraded, 2 newly installed, 0 to remove and 95 not upgraded.
Need to get 261kB of archives.
After this operation, 569kB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 http://ftp.jp.debian.org lenny/main libparted1.8-10 1.8.8.git.2008.03.24-9
 [197kB]
Get:2 http://ftp.jp.debian.org lenny/main parted 1.8.8.git.2008.03.24-9 [64.0kB]
Fetched 261kB in 1s (199kB/s)
Selecting previously deselected package libparted1.8-10.
(Reading database ... 19195 files and directories currently installed.)
Unpacking libparted1.8-10 (from .../libparted1.8-10_1.8.8.git.2008.03.24-9_i386.
deb) ...
Selecting previously deselected package parted.
Unpacking parted (from .../parted_1.8.8.git.2008.03.24-9_i386.deb) ...
Processing triggers for man-db ...
Setting up libparted1.8-10 (1.8.8.git.2008.03.24-9) ...
Setting up parted (1.8.8.git.2008.03.24-9) ...
samba32a:~#
samba32a:~# parted /dev/sda
GNU Parted 1.8.8
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
parted: invalid token: gpt
Yes/No? y
New disk label type?  [gpt]?
(parted) mkpart primary
File system type?  [ext2]? gfs
parted: invalid token: gfs
File system type?  [ext2]? ext3
Start? 0
End? 512MB
(parted) p
Model: IET VIRTUAL-DISK (scsi)
Disk /dev/sda: 537MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  512MB  512MB               primary

(parted) q
Information: You may need to update /etc/fstab.

samba32a:~#
  • gfs のフォーマット
以下のようにして、フォーマットを行います。
samba32a:~# gfs_mkfs -p lock_dlm -t cluster1:gfs -j 2 /dev/sda1
This will destroy any data on /dev/sda1.

Are you sure you want to proceed? [y/n] y

Device:                    /dev/sda1
Blocksize:                 4096
Filesystem Size:           59412
Journals:                  2
Resource Groups:           8
Locking Protocol:          lock_dlm
Lock Table:                cluster1:gfs

Syncing...
All Done
samba32a:~#


参考にしたページ