« Unified Accessテスト用Scale 5.0.4.3のインストール | トップページ | Scale 5.0.4.3にS3 Objectノードをインストールする »

2020年3月31日 (火)

Scale 5.0.4.3にNFS CESをインストール

まずはNFSノードを構成する

今回構成するScale Clusterは以下のとおり。
NSD Servers:
snode-0: 192.168.1.91
snode-1: 192.168.1.92
NFS Protocol Nodes:
pnode-1: 192.168.1.96
pnode-2: 192.168.1.97
nfsgroup1 (CES IP): 192.168.1.98
なお、NSD ServerとProtocol Nodeはそれぞれ別々のESXiサーバー上にVMとして構成している。

特に確認したいのはFilesetを作らなくてもNFS共有できることの確認。

CESで共有するディレクトリーの設定をする。GPFSのマウントポイントの下にnfsディレクトリを作成し、それをcesSharedRootに設定する。
[root@snode-0 ~]# ls /gpfs/gpfsfs01
[root@snode-0 ~]# mkdir /gpfs/gpfsfs01/nfs

ガイドに従ってクラスターをシャットダウンしてからcesSharedRootの変更を行う。
[root@snode-0 ~]# mmshutdown -a
2020年 3月 26日 木曜日 12:18:56 JST: mmshutdown: Starting force unmount of GPFS file systems
2020年 3月 26日 木曜日 12:19:01 JST: mmshutdown: Shutting down GPFS daemons
2020年 3月 26日 木曜日 12:20:09 JST: mmshutdown: Finished
[root@snode-0 ~]# mmchconfig cesSharedRoot=/gpfs/gpfsfs01/nfs
mmchconfig: Command successfully completed
mmchconfig: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.

念の為、確認。
[root@snode-0 ~]# mmlsconfig
Configuration data for cluster gpfscluster1.snode-0:
----------------------------------------------------
clusterName gpfscluster1.snode-0
clusterId 17390685069738965895
autoload no
dmapiFileHandleSize 32
minReleaseLevel 5.0.4.0
ccrEnabled yes
cipherList AUTHONLY
cesSharedRoot /gpfs/gpfsfs01/nfs
adminMode central

File systems in cluster gpfscluster1.snode-0:
---------------------------------------------
/dev/gpfsfs01

クラスターの再起動。
[root@snode-0 ~]# mmstartup -a
2020年 3月 26日 木曜日 17:56:00 JST: mmstartup: Starting GPFS ...

無事に立ち上がったことを確認する。
[root@snode-0 ~]# mmgetstate -a

Node number Node name GPFS state
-------------------------------------------
1 snode-0 active
2 snode-1 active
3 pnode-1 active
4 pnode-2 active
[root@snode-0 ~]#

Protocol NodeにはScale Server Licenseが必要だということが判明した。というか、Scale Clientに何かしらの機能を持たせる場合にはServer Licenseが必要。Server LicenseがないままCESをイネーブルしようとするとエラーになる。
[root@snode-0 ~]# mmchlicense server --accept -N pnode-1,pnode-2

The following nodes will be designated as possessing server licenses:
pnode-1
pnode-2
mmchlicense: Command successfully completed
mmchlicense: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.

ClientにてCESをイネーブルする。
[root@snode-0 ~]# mmchnode --ces-enable -N pnode-1,pnode-2
2020年 3月 30日 月曜日 13:46:19 JST: mmchnode: Processing node pnode-1
2020年 3月 30日 月曜日 13:46:26 JST: mmchnode: Processing node pnode-2
mmchnode: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.

念の為の確認。
[root@snode-0 ~]# mmces node list
Node Number Node Name Node Groups Node Flags
------------- ----------- ------------- ------------
3 pnode-1 none
4 pnode-2 none
[root@snode-0 ~]#

可用性を実装するために、これらのCESノードをグループ化する。グループ名はnfs-group-1で実行。しかし、、、
[root@snode-0 ~]# mmchnode --ces-group nfs-group-1 -N pnode-1,pnode-2
2020年 3月 30日 月曜日 14:45:30 JST: mmchnode: Processing node pnode-1
mmchnode: Invalid group name nfs-group-1
2020年 3月 30日 月曜日 14:45:30 JST: mmchnode: Processing node pnode-2
mmchnode: Invalid group name nfs-group-1
mmchnode: Command failed. Examine previous error messages to determine cause.

いろいろ試してみて、どうやら'-'がNG文字のようだ。以下で実行し直し。
[root@snode-0 ~]# mmchnode --ces-group nfsgroup1 -N pnode-1,pnode-2
2020年 3月 30日 月曜日 14:52:42 JST: mmchnode: Processing node pnode-1
2020年 3月 30日 月曜日 14:52:42 JST: mmchnode: Processing node pnode-2
mmchnode: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
[root@snode-0 ~]#

確認すると2つのCESノードが同じグループに入った。
[root@snode-0 ~]# mmces node list
Node Number Node Name Node Groups Node Flags
------------- ----------- ------------- ------------
3 pnode-1 nfsgroup1 none
4 pnode-2 nfsgroup1 none
[root@snode-0 ~]#

このCESグループ(nfsgroup1)にCES IPを割り当てる。このCES IPはFloating IPとなっていて、Scale内部のポリシーに従ってグループ内のどれかのCESノードにマップされる。CESノードが死んだときにはIPを自動再割当てしてくれるので可用性が確保できる。しかし、、、
[root@snode-0 ~]# mmces address add --ces-ip 192.168.1.98 --ces-group nfsgroup1
Cannot resolve 192.168.1.98; Name or service not known
mmces address add: Incorrect value for --ces-ip option
Usage:
mmces address add [--ces-node Node] [--attribute Attribute] [--ces-group Group]
{--ces-ip {IP[,IP...]}

mmces address add: Command failed. Examine previous error messages to determine cause.
エラーになる。IPアドレスがresolveできない???これはなんだ?どうやら、ここで使うIPアドレスはhostnameと紐付けされていなければならないそうだ。そこで、/etc/hostsに以下を追記した(Cluster内のすべてのNodeで実行した)。参考情報:IPアドレスのResolveについて
192.168.1.98 nfsgroup1

この後再実行。
[root@snode-0 ~]# mmces address add --ces-ip 192.168.1.98 --ces-group nfsgroup1

エラーメッセージ無しで戻ってきた。念の為の確認。
[root@snode-0 ~]# mmces address list
Address Node Ces Group Attributes
-------------- --------- ----------- ------------
192.168.1.98 pnode-2 nfsgroup1 none
[root@snode-0 ~]#

次に認証方式の定義。
[root@snode-0 ~]# mmuserauth service create --data-access-method file --type userdefined

Executing command on pnode-1

File authentication configuration completed successfully.

NFSサービスをEnableにする。
[root@snode-0 ~]# mmces service enable NFS
pnode-2: Redirecting to /bin/systemctl start nfs-ganesha.service
pnode-1: Redirecting to /bin/systemctl start nfs-ganesha.service
mmchconfig: Command successfully completed
mmchconfig: Propagating the cluster configuration data to all
affected nodes. This is an asynchronous process.
pnode-2: NFS: service succesfully started.
pnode-1: NFS: service succesfully started.

表示内容を読む限りNFS Serviceはスタートしたみたい。これでは、すべてのCESノードでNFSがスタートしてしまう。本当はStartはNode選択的に行いたかった。CESノードのうち半数はNFS、のこりはObjectと、振り分けを考えているから。
念の為service startも実行してみる。やはりalready running....CESノードに選択的にサービススタートする方法を考察する必要がある。

追記:特定のCESノードを特定のプロトコルのみで構成する方法は現在は無いらしい(専門家に確認)

[root@snode-0 ~]# mmces service start NFS -N pnode-1,pnode-2
pnode-2: NFS: service already running.
pnode-1: NFS: service already running.

先に作成し共有宣言したdirectoryをExportする。
[root@snode-0 ~]# mmnfs export add /gpfs/gpfsfs01/nfs
mmnfs: The NFS export was created successfully
mmnfs: Restarting NFS services.

念の為の確認。
[root@snode-0 ~]# mmces service list -a
Enabled services: NFS
pnode-2: NFS is running
pnode-1: NFS is running
[root@snode-0 ~]# mmuserauth service list
FILE access configuration : USERDEFINED
PARAMETERS VALUES
-------------------------------------------------

OBJECT access not configured
PARAMETERS VALUES
-------------------------------------------------

[root@snode-0 ~]# mmnfs export list

Path Delegations Clients
------------------ ----------- -------
/gpfs/gpfsfs01/nfs NONE *

[root@snode-0 ~]#

アクセスタイプをRWに設定する。こうしないとNFSクライアントからアクセスできない(access denied)。まずは現状確認。
[root@snode-0 gpfsfs01]# mmnfs export list --nfsdefs /gpfs/gpfsfs01/nfs

Path Delegations Clients Access_Type Protocols Transports Squash Anonymous_uid Anonymous_gid SecType PrivilegedPort DefaultDelegations Manage_Gids NFS_Commit Pseudo Path
------------------ ----------- ------- ----------- --------- ---------- ----------- ------------- ------------- ------- -------------- ------------------ ----------- ---------- ------------------
/gpfs/gpfsfs01/nfs NONE * NONE 3,4 TCP ROOT_SQUASH -2 -2 SYS FALSE NONE FALSE FALSE /gpfs/gpfsfs01/nfs

以下を実行する。参考情報:NFS Mount時の問題について
[root@snode-0 gpfsfs01]# mmnfs export change /gpfs/gpfsfs01/nfs --nfschange "*(Access_Type=RW,Squash=NO_ROOT_SQUASH)"
mmnfs: The NFS export was changed successfully.

念の為の確認。
[root@snode-0 gpfsfs01]# mmnfs export list --nfsdefs /gpfs/gpfsfs01/nfs

Path Delegations Clients Access_Type Protocols Transports Squash Anonymous_uid Anonymous_gid SecType PrivilegedPort DefaultDelegations Manage_Gids NFS_Commit Pseudo Path
------------------ ----------- ------- ----------- --------- ---------- -------------- ------------- ------------- ------- -------------- ------------------ ----------- ---------- ------------------
/gpfs/gpfsfs01/nfs NONE * RW 3,4 TCP NO_ROOT_SQUASH -2 -2 SYS FALSE NONE FALSE FALSE /gpfs/gpfsfs01/nfs

[root@snode-0 gpfsfs01]#

NFSクライアントからアクセスしてみる。
#mkdir /mnt/nfsclient
# mount -t nfs 192.168.1.98:/gpfs/gpfsfs01/nfs /mnt/nfsclient

無事NFSマウントが成功した。おつかれ。

 

参考情報:NFSパラメータについて  以下参考情報より転記。
Squashについて
root_squash: uid/gidが0、つまりrootユーザからのリクエストをanonymousに格下げ(squash)する。デフォルト有効で無効にするにはno_root_squashを指定する。
all_squash: root以外のユーザからのリクエストもanonymousに格下げ(squash)する。デフォルトはno_all_squash

« Unified Accessテスト用Scale 5.0.4.3のインストール | トップページ | Scale 5.0.4.3にS3 Objectノードをインストールする »

ソフトウエア導入」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« Unified Accessテスト用Scale 5.0.4.3のインストール | トップページ | Scale 5.0.4.3にS3 Objectノードをインストールする »