といっても実際はCTDB を稼働させ、そこでSambaをCTDBを連携させるようにしてやるだけ。
手順としては前回の続きから。
SELinuxの無効化
前回まではSELinux ONの状態で作業していたが今回は無効にする必要がある。
CTDBが作成するUNIX DOMAIN SOCKETへSambaがアクセスする際に、SELinuxが有効だとアクセスが拒否されてしまいSambaが起動できなくなってしまうためだ。
[root@rhel6-2 ~]# setenforce 0
[root@rhel6-2 ~]# getenforce
Disabled
[root@rhel6-3 ~]# setenforce 0
[root@rhel6-3 ~]# getenforce
Disabled
[root@rhel6-4 ~]# setenforce 0
[root@rhel6-4 ~]# getenforce
Disabled
CTDBとsambaのインストール
[root@rhel6-2 ~]# yum install samba
[root@rhel6-2 ~]# yum install ctdb
[root@rhel6-3 ~]# yum install samba
[root@rhel6-3 ~]# yum install ctdb
[root@rhel6-4 ~]# yum install samba
[root@rhel6-4 ~]# yum install ctdb
CTDB用の共有ファイルシステムを作成
CTDBを起動する全てのノードからアクセス可能な領域を作成する。これはGFS2のようなクラスタファイルシステム上である必要がある。
[root@rhel6-2 ~]# lvcreate -L 1G -n clvm-ctdb01 clvg01 Logical volume "clvm-ctdb01" created [root@rhel6-2 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert clvm-ctdb01 clvg01 -wi-a- 1.00g clvm01 clvg01 -wi-ao 50.00g lv_root vg_rhel62 -wi-ao 97.54g lv_swap vg_rhel62 -wi-ao 1.97g [root@rhel6-3 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert clvm-ctdb01 clvg01 -wi-a- 1.00g clvm01 clvg01 -wi-ao 50.00g lv_root vg_rhel63 -wi-ao 97.54g lv_swap vg_rhel63 -wi-ao 1.97g [root@rhel6-4 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert clvm-ctdb01 clvg01 -wi-a- 1.00g clvm01 clvg01 -wi-ao 50.00g lv_root vg_rhel64 -wi-ao 97.54g lv_swap vg_rhel64 -wi-ao 1.97g
GFS2フォーマットしてマウントする。
[root@rhel6-2 ~]# mkfs -t gfs2 -j 3 -p lock_dlm -t cluster01:gfs02 /dev/clvg01/clvm-ctdb01 This will destroy any data on /dev/clvg01/clvm-ctdb01. It appears to contain: symbolic link to `../dm-3' Are you sure you want to proceed? [y/n] y Device: /dev/clvg01/clvm-ctdb01 Blocksize: 4096 Device Size 1.00 GB (262144 blocks) Filesystem Size: 1.00 GB (262142 blocks) Journals: 3 Resource Groups: 4 Locking Protocol: "lock_dlm" Lock Table: "cluster01:gfs02" UUID: 7BA1391E-6D15-1E16-B364-FE3E872D619C [root@rhel6-2 ~]# mkdir /mnt/ctdb [root@rhel6-2 ~]# mount -t gfs2 /dev/clvg01/clvm-ctdb01 /mnt/ctdb [root@rhel6-3 ~]# mkdir /mnt/ctdb [root@rhel6-3 ~]# mount -t gfs2 /dev/clvg01/clvm-ctdb01 /mnt/ctdb [root@rhel6-4 ~]# mkdir /mnt/ctdb [root@rhel6-4 ~]# mount -t gfs2 /dev/clvg01/clvm-ctdb01 /mnt/ctdb
CTDBの設定
基本ファイルの編集
[root@rhel6-2 ~]# vim /etc/sysconfig/ctdb # You must specify the location of a shared lock file across all the # nodes for split brain prevention to work. # This must be on shared storage. # CTDB can operate without a reclock file, but this means that there is no # protection against a split brain. # It is strongly suggested to NOT run ctdb without a reclock file. CTDB_RECOVERY_LOCK="/mnt/ctdb/.CTDB_RECOVERY_LOCK" # Should ctdb do IP takeover? If it should, then specify a file # containing the list of public IP addresses that ctdb will manage # Note that these IPs must be different from those in $NODES above # there is no default. # The syntax is one line per public address of the form : # <ipaddress>/<netmask> <interface> # Example: 10.1.1.1/24 eth0 # CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses # should ctdb manage starting/stopping the Samba service for you? # default is to not manage Samba CTDB_MANAGES_SAMBA=yes # should ctdb manage starting/stopping Winbind service? # if left comented out then it will be autodetected based on smb.conf CTDB_MANAGES_WINBIND=no # the NODES file must be specified or ctdb won't start # it should contain a list of IPs that ctdb will use # it must be exactly the same on all cluster nodes # defaults to /etc/ctdb/nodes CTDB_NODES=/etc/ctdb/nodes # where to log messages # the default is /var/log/log.ctdb CTDB_LOGFILE=/var/log/log.ctdbCTDB_RECOVERY_LOCK・・・クラスタ化されたTDB。先ほど作ったGFS2上に作成する必要がある。
CTDB_PUBLIC_ADDRESSES・・・CTDBは仮想IPを制御してくれる。使いたいアドレスと割り当てるNICを列挙する。
CTDB_MANAGES_SAMBA・・・CTDBからSambaの起動停止を制御する。
CTDB_MANAGES_WINBIND・・・CTDBからWinbindの起動停止を制御する。
CTDB_NODES・・・CTDBに参加するノードのアドレスを列挙する。
CTDB_LOGFILE・・・ログファイルの場所。
参加ノードを列挙する。
[root@rhel6-2 ~]# vim /etc/ctdb/nodes 192.168.1.112 192.168.1.113 192.168.1.114
CTDBに制御させる仮想IPと割り当てるNICを列挙する。
[root@rhel6-2 ~]# vim /etc/ctdb/public_addresses 192.168.1.212/24 eth0 192.168.1.213/24 eth0 192.168.1.214/24 eth0
全ノードへ同じ設定を施す
[root@rhel6-2 ~]# scp /etc/sysconfig/ctdb rhel6-3:/etc/sysconfig [root@rhel6-2 ~]# scp /etc/sysconfig/ctdb rhel6-4:/etc/sysconfig [root@rhel6-2 ~]# scp /etc/ctdb/nodes rhel6-3:/etc/ctdb/ [root@rhel6-2 ~]# scp /etc/ctdb/nodes rhel6-4:/etc/ctdb/ [root@rhel6-2 ~]# scp /etc/ctdb/public_addresses rhel6-3:/etc/ctdb/ [root@rhel6-2 ~]# scp /etc/ctdb/public_addresses rhel6-4:/etc/ctdb/
以上でCTDBの設定は終了。
sambaの設定
設定ファイルを以下のように編集する(テストのなので細かい制御は行わない)
[root@rhel6-2 ~]# cat /etc/samba/smb.conf [global] guest ok = yes clustering = yes netbios name = scale-out-cifs-server ctdbd socket = /tmp/ctdb.socket log level = 3 [csmb] comment = Clustered Samba public = yes path = /mnt/gfs01/share writeable = yes
設定を配布する
[root@rhel6-3 ~]# scp /etc/samba/smb.conf rhel6-3:/etc/samba
[root@rhel6-4 ~]# scp /etc/samba/smb.conf rhel6-4:/etc/samba
パスワードの設定を行う。
[root@rhel6-2 ~]# pdbedit -a -u root
CTDBの起動(Sambaも合わせて起動される)
[root@rhel6-2 ~]# /etc/init.d/ctdb start
ctdbd サービスを起動中: [ OK ]
[root@rhel6-3 ~]# /etc/init.d/ctdb start
ctdbd サービスを起動中: [ OK ]
[root@rhel6-4 ~]# /etc/init.d/ctdb start
ctdbd サービスを起動中: [ OK ]
起動後の状態
[root@rhel6-2 ~]# ctdb status Number of nodes:3 pnn:0 192.168.1.112 OK (THIS NODE) pnn:1 192.168.1.113 OK pnn:2 192.168.1.114 OK Generation:322772619 Size:3 hash:0 lmaster:0 hash:1 lmaster:1 hash:2 lmaster:2 Recovery mode:NORMAL (0) Recovery master:0
CTDBによって割り当て足られ仮想IP
[root@rhel6-2 ~]# ip addr list eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:09:e8:ea brd ff:ff:ff:ff:ff:ff inet 192.168.1.112/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.214/24 brd 192.168.1.255 scope global secondary eth0 inet6 2001:c90:941:1984:a00:27ff:fe09:e8ea/64 scope global dynamic valid_lft 2591994sec preferred_lft 604794sec inet6 fe80::a00:27ff:fe09:e8ea/64 scope link valid_lft forever preferred_lft forever [root@rhel6-3 ~]# ip addr list eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:51:0e:49 brd ff:ff:ff:ff:ff:ff inet 192.168.1.113/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.213/24 brd 192.168.1.255 scope global secondary eth0 inet6 2001:c90:941:1984:a00:27ff:fe51:e49/64 scope global dynamic valid_lft 2591967sec preferred_lft 604767sec inet6 fe80::a00:27ff:fe51:e49/64 scope link valid_lft forever preferred_lft forever [root@rhel6-4 ~]# ip addr list eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:f8:f5:8e brd ff:ff:ff:ff:ff:ff inet 192.168.1.114/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.212/24 brd 192.168.1.255 scope global secondary eth0 inet6 2001:c90:941:1984:a00:27ff:fef8:f58e/64 scope global dynamic valid_lft 2591950sec preferred_lft 604750sec inet6 fe80::a00:27ff:fef8:f58e/64 scope link valid_lft forever preferred_lft forever仮想IPはランダムに分散される。1台のノードが落ちると別のノードが仮想IPを引き継ぐ。
sambaの起動状態
[root@rhel6-2 ~]# ps -ef |grep smb root 3668 1 0 Jul23 ? 00:00:00 smbd -D root 3680 3668 0 Jul23 ? 00:00:00 smbd -D root 6256 3668 0 Jul23 ? 00:00:00 smbd -D [root@rhel6-3 ~]# ps -ef |grep smb root 3505 1 0 Jul23 ? 00:00:00 smbd -D root 3517 3505 0 Jul23 ? 00:00:00 smbd -D root 5085 3505 0 Jul23 ? 00:00:00 smbd -D [root@rhel6-4 ~]# ps -ef |grep smb root 3796 1 0 Jul23 ? 00:00:00 smbd -D root 3809 3796 0 Jul23 ? 00:00:00 smbd -D root 4581 3796 0 Jul23 ? 00:00:03 smbd -D
動作確認
各サーバでsambaを起動できるので、
\\192.168.1.213
\\192.168.1.213
\\192.168.1.213
でアクセス可能になる。以下は初期状態でのアクセス。
1つの共有領域に対してファイル作成、コピー、削除等を行うと、残り2つの領域からもその操作を確認することが可能。
以上。
ここの例では細かい設定は省いて実装の流れを説明しているので、実際に使う場合は細かなところも忘れずに。
0 件のコメント:
コメントを投稿