여기서는 2개의 25G LUN을 VG로 묶어서 50G로 만든 후 클러스터에 리소스를 등록하는 것을 보여주지만,
실무에서는 경우에 따라 SAN 스토리지에서 아주 많은 LUN을 할당하여 서버에 제공해 준다. 많은 LUN을 LVM으로 합쳐서 파일시스템 구성을 하려면 간단한 스크립트라도 동원을 해야 실수 없이 빠른 구성이 가능하다.
이 문서에서는 ESXi 상에서 돌아가는 RHEL OS 2대, NAS4Free(Storage) 1대를 이용해 RHCS를 구성된 클러스터 시스템을 볼륨을 추가해야 되는 상황이라고 가정하고 기술한다.
- 기존 정보 확인
- 기존 마운트된 볼륨 정보 확인 [root@RHEL63-1 ~]# df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_rhel631-lv_root 28G 13G 14G 48% / tmpfs 939M 32M 908M 4% /dev/shm /dev/sda1 485M 37M 423M 8% /boot /root/rhel-server-6.3-x86_64-dvd.iso 3.5G 3.5G 0 100% /mnt /dev/mapper/vg_1-lv_1 50G 291M 47G 1% /share --> EXT4 (DB Share Volume, 1번 node(DB Active)만 mount) /dev/mapper/vg_2-lv_1 50G 518M 50G 2% /share2 --> GFS2 (Web Share Volume, 1,2번 node 모두 mount) - 기존 pv 확인 [root@RHEL63-1 ~]# pvscan PV /dev/mapper/mpathd VG vg_2 lvm2 [50.00 GiB / 0 free] PV /dev/mapper/mpatha VG vg_1 lvm2 [50.00 GiB / 0 free] PV /dev/sda2 VG vg_rhel631 lvm2 [31.51 GiB / 0 free] Total: 5 [181.49 GiB] / in use: 5 [181.49 GiB] / in no VG: 0 [0 ] - 기존 멀티패스 정보 확인 [root@RHEL63-1 ~]# multipath -ll mpathd (3300000001f132b32) dm-3 FreeBSD,iSCSI DISK size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 4:0:0:1 sdc 8:32 active ready running `- 3:0:0:1 sde 8:64 active ready running mpatha (330000000c256818a) dm-2 FreeBSD,iSCSI DISK size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 4:0:0:0 sdb 8:16 active ready running `- 3:0:0:0 sdd 8:48 active ready running
- iSCSI 접속
- iSCSI 타겟에 신규 할당된 LUN 확인 (2개의 패스로 구성해서 2개의 패스로 보인다) [root@RHEL63-1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.0.161:3262 192.168.2.161:3262,3 iqn.2007-09.jp.ne.peach.istgt:vols3 192.168.0.161:3262,3 iqn.2007-09.jp.ne.peach.istgt:vols3 - 신규 LUN 접속 (2개의 패스에 연결) [root@RHEL63-1 ~]# iscsiadm --mode node --targetname iqn.2007-09.jp.ne.peach.istgt:vols3 --portal 192.168.0.161:3262 --login [root@RHEL63-1 ~]# iscsiadm --mode node --targetname iqn.2007-09.jp.ne.peach.istgt:vols3 --portal 192.168.2.161:3262 --login
- 볼륨 구성
- 추가된 볼륨 확인. mpathe(sdf,sdh-2패스), mpathf(sdg,sdi-2패스)로 2개의 볼륨이 확인된다. [root@RHEL63-1 ~]# multipath -ll mpathe (33000000019da2149) dm-6 FreeBSD,iSCSI DISK size=25G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 5:0:0:0 sdf 8:80 active ready running `- 6:0:0:0 sdh 8:112 active ready running mpathd (3300000001f132b32) dm-3 FreeBSD,iSCSI DISK size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 4:0:0:1 sdc 8:32 active ready running `- 3:0:0:1 sde 8:64 active ready running mpatha (330000000c256818a) dm-2 FreeBSD,iSCSI DISK size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 4:0:0:0 sdb 8:16 active ready running `- 3:0:0:0 sdd 8:48 active ready running mpathf (330000000c49f8bf1) dm-7 FreeBSD,iSCSI DISK size=25G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 5:0:0:1 sdg 8:96 active ready running `- 6:0:0:1 sdi 8:128 active ready running - PV 생성 [root@RHEL63-1 ~]# pvcreate /dev/mapper/mpathe /dev/mapper/mpathd - VG 생성 [root@RHEL63-1 ~]# vgcreate vg_3 /dev/mapper/mpathe /dev/mapper/mpathd Clustered volume group "vg_3" successfully created (CLVM을 사용 중이다.) - Free PE 값 확인 [root@RHEL63-1 ~]# vgdisplay vg_3 | grep Free Free PE / Size 12798 / 49.99 GiB - LV 생성 (여기선 Free PE 값 모두 사용_상황에 맞게 PE값 대입) [root@RHEL63-1 ~]# lvcreate -i 2 -l 12798 -n lv_1 vg_3 --> -i 2 (PV의 갯수 만큼 스트라이핑 적용) --> 환경에 따라 linear 방식으로 lv를 생성할 수도 있다. 상황에 맞게 구성. - 스트라이프 확인 [root@RHEL63-1 ~]# lvm lvs --segment LV VG Attr #Str Type SSize lv_1 vg_1 -wi-a--- 1 linear 50.00g lv_1 vg_2 -wi-ao-- 1 linear 50.00g lv_1 vg_3 -wi-a--- 2 striped 49.99g --> vg_3가 2개의 pv를 stripe로 묶은게 확인 됨 - Str 값. lv_root vg_rhel632 -wi-ao-- 1 linear 27.57g lv_swap vg_rhel632 -wi-ao-- 1 linear 3.94g - 파일 시스템 생성 [root@RHEL63-1 ~]# mkfs.ext4 /dev/vg_3/lv_1 - node2 서버에서도 볼륨이 잘 보이는지 확인. [root@RHEL63-2 ~]# lvscan | grep vg_3 ACTIVE '/dev/vg_3/lv_1' [49.99 GiB] inherit --> 만약 CLVM을 사용하지 않았다면 ACTIVE가 아닌 inactive로 확인될 것이다. 테스트 서버는 CLVM을 적용 중. - 마운트포인트 디렉토리 생성 [root@RHEL63-1 ~]# mkdir /share3 [root@RHEL63-2 ~]# mkdir /share3
- /etc/cluster/cluster.conf 수정 (node 1에서만)
<?xml version="1.0"?> <cluster config_version="75" name="mycluster"> --> version 번호 1 증가하기 <clusternodes> <clusternode name="node01" nodeid="1"> <fence> <method name="Method01"> <device name="vmfence" port="RHEL63-1" ssl="on" uuid="564d16d2-1684-83d6-50ea-81d4b8a77cef"/> </method> </fence> </clusternode> <clusternode name="node02" nodeid="2"> <fence> <method name="Method02"> <device name="vmfence" port="RHEL63-2" ssl="on" uuid="564d7ca4-ca7a-a599-ade5-a2ae362b0b06"/> </method> </fence> </clusternode> </clusternodes> <cman expected_votes="1" two_node="1"/> <fencedevices> <fencedevice agent="fence_vmware_soap" ipaddr="fence" login="root" name="vmfence" passwd="PASSWORD" power_wait="10"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="myfail" ordered="1" restricted="1"> <failoverdomainnode name="node01" priority="1"/> <failoverdomainnode name="node02" priority="1"/> </failoverdomain> </failoverdomains> <resources> <ip address="192.168.0.177/24" sleeptime="10"/> <fs device="/dev/vg_1/lv_1" fsid="28078" mountpoint="/share" name="iscsi01"/> <fs device="/dev/vg_3/lv_1" fsid="28079" mountpoint="/share3" name="iscsi02"/> --> 추가. fsid는 이 cluster.conf 의 다른 fsid와 겹치지 않게 임의의 번호로 설정 <script file="/etc/init.d/mysql" name="mysql"/> <clusterfs device="/dev/vg_2/lv_1" fsid="39669" fstype="gfs2" mountpoint="/share2" name="mygfs"/> <script file="/etc/init.d/httpd" name="apache"/> <ip address="192.168.0.178/24" sleeptime="10"/> <ip address="192.168.0.179/24" sleeptime="10"/> </resources> <service domain="myfail" name="svc01" recovery="relocate"> <script ref="mysql"/> <fs ref="iscsi01"/> <fs ref="iscsi02"/> ---> 추가 <ip ref="192.168.0.177/24"/> <clusterfs ref="mygfs"/> <script __independent_subtree="1" ref="apache"/> <ip __independent_subtree="1" ref="192.168.0.178/24"/> </service> <service domain="myfail" name="svc02" recovery="relocate"> <script __independent_subtree="1" ref="apache"/> <clusterfs ref="mygfs"/> <ip __independent_subtree="1" ref="192.168.0.179/24"/> </service> </rm> </cluster>
- 클러스터에 즉시 반영하기
[root@RHEL63-1 ~]# cman_tool version -r You have not authenticated to the ricci daemon on node01 Password: You have not authenticated to the ricci daemon on node02 Password: --> 각 노드의 ricci 비번을 묻는다. 비번 입력.
- 반영 확인 하기
[root@RHEL63-1 ~]# df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_rhel631-lv_root 28G 13G 14G 48% / tmpfs 939M 32M 908M 4% /dev/shm /dev/sda1 485M 37M 423M 8% /boot /root/rhel-server-6.3-x86_64-dvd.iso 3.5G 3.5G 0 100% /mnt /dev/mapper/vg_1-lv_1 50G 291M 47G 1% /share /dev/mapper/vg_2-lv_1 50G 518M 50G 2% /share2 /dev/mapper/vg_3-lv_1 50G 180M 47G 1% /share3 --> 새로운 볼륨이 클러스터에 의해 마운트 되었다.
- 클러스터 상태 확인
[root@RHEL63-1 ~]# clustat Cluster Status for mycluster @ Fri Aug 19 01:08:26 2016 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node01 1 Online, Local, rgmanager node02 2 Online, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:svc01 node01 started service:svc02 node02 started
- 서비스 절체 테스트 (절체 시 서비스 장애가 발생하므로 절체 테스트는 상황에 따라 진행)
- svc01을 node02로 넘김 [root@RHEL63-1 ~]# clusvcadm -r svc01 -m node02 Trying to relocate service:svc01 to node02...Success service:svc01 is now running on node02 - 클러스터 상태 확인 [root@RHEL63-1 ~]# clustat Cluster Status for mycluster @ Fri Aug 19 01:11:44 2016 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node01 1 Online, Local, rgmanager node02 2 Online, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:svc01 node02 started --> node02로 서비스 넘어감 service:svc02 node02 started - node01의 /share, /share2 볼륨이 클러스터에 의해 umount 됨. [root@RHEL63-1 ~]# df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_rhel631-lv_root 28G 13G 14G 48% / tmpfs 939M 32M 908M 4% /dev/shm /dev/sda1 485M 37M 423M 8% /boot /root/rhel-server-6.3-x86_64-dvd.iso 3.5G 3.5G 0 100% /mnt /dev/mapper/vg_2-lv_1 50G 518M 50G 2% /share2 - node02 에서 확인되는 마운트 정보 [root@RHEL63-2 ~]# df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_rhel632-lv_root 28G 6.6G 20G 26% / tmpfs 939M 32M 908M 4% /dev/shm /dev/sda1 485M 37M 423M 8% /boot /root/rhel-server-6.3-x86_64-dvd.iso 3.5G 3.5G 0 100% /mnt /dev/mapper/vg_2-lv_1 50G 518M 50G 2% /share2 /dev/mapper/vg_1-lv_1 50G 291M 47G 1% /share --> 마운트 확인 /dev/mapper/vg_3-lv_1 50G 180M 47G 1% /share3 --> 신규 볼륨 마운트 확인
이상이다.
RHCS 리소스에 볼륨 추가.