RHCS 클러스터링을 구성하기 위해선 최소 노드 2대가 필요하며 각 노드 서버에는 NIC가 Service(VIP), IPMI, Heartbeat, Storage(HBA를 사용할 경우 제외) 분리 운영 되어야 한다. 이 문서는 클러스터 노드 2대와 iscsi 스토리지 1대를 기준으로 하였으며, 별도 표기가 없는 한 클러스터는 각각의 노드에 동일하게 셋업을 한다. 그리고 Selinux 와 iptables를 내리고 진행한다.
0. iSCSI-Stoage 서버 설정
iSCSI-Storage 서버는 스토리지 및 luci 서버로 동작되도록 설정 한다.
iscsi와 luci 관련 패키지 설치
[root@iSCSI-Stoate ~]# yum install -y luci scsi-target-utils.x86_64
[root@iSCSI-Stoate ~]# chkconfig luci on ; chkconfig tgtd on
[root@iSCSI-Stoate ~]# /etc/init.d/luci start ; /etc/init.d/tgtd start
[root@iSCSI-Stoate ~]# tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2014-04.net:target0
[root@iSCSI-Stoate ~]# tgtadm --lld iscsi --op show --mode target
[root@iSCSI-Stoate ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
[root@iSCSI-Stoate ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address ALL (ip 필터링을 할 경우 ip 지정)
[root@iSCSI-Stoate ~]# tgt-admin --dump > /etc/tgt/targets.conf
[root@iSCSI-Stoate ~]# tgtadm --lld iscsi --op delete --mode target --tid 1 (만약 지워야 할 경우 이렇게..)
iSCSI-Storage 서버의 ip는 192.168.0.91/24 이다.
iSCSI는 3260 port, luci는 8084 port를 LISTEN 하게 된다.
1. 시스템 정보
1.1. H/W 정보
CPU : Intel Xeon E3-1220V2 (Ivy Bridge) * 1EA
M/B : SuperMicro X9SCL-F (IPMI Lan 1 port) * 1EA
RAM : DDR3 8G PC3-12800 ECC/unberffered * 1EA
SSD : Sandisk Ultra Plus (128GB) * 1EA
NIC : ipTIME PX1000 * 2EA
1.2. OS 정보
RHEL 6.5 x86_64
2. OS 설치 및 기본 설정.
2.1. OS 설치
RHEL 6.5 x86_64를 각각의 노드와 iscsi 스토리지 서버에 설치를 한다. 설치 방법은 생략한다. - 기본적인 선택 사항으로 설치
호스트명은 아래와 같다.
iscsi 스토리지 : iscsi-storage
node01 : RHCS-NODE01
node02 : RHCS-NODE02
2.2. 기본 설정
2.2.1. ip 설정
[root@RHCS-NODE01 ~]# ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 64:e5:99:f4:74:63 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.71/24 brd 192.168.10.255 scope global eth0
inet6 fe80::66e5:99ff:fef4:7463/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 64:e5:99:f4:74:62 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:25:90:da:f4:c4 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.71/24 brd 192.168.0.255 scope global eth2
inet 192.168.0.69/24 scope global secondary eth2
inet6 fe80::225:90ff:feda:f4c4/64 scope link
valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:25:90:da:f4:c5 brd ff:ff:ff:ff:ff:ff
eth0 : heartbeat 및 ipmi lan ip 이다.
eth2 : service(VIP) 이다. 192.168.0.69가 httpd 서비스를 위한 얼리어스 된 가상 IP 이며 cluster 구동시 active node에게 자동으로 할당됨
2.2.2. host 설정
[root@RHCS-NODE01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.91 iscsi-storage
192.168.0.71 node01.cluster.com
192.168.0.72 node02.cluster.com
192.168.10.11 fence01
192.168.10.12 fence02
192.168.10.71 node01-hb
192.168.10.72 node02-hb
2.2.3. yum 설정
서브스크립션이 없을 경우 자체 DVD 또는 로컬 yum 서버로 yum repository를 구성 해야된다.
여기선 DVD iso 파일을 마운트 하여서 yum 구성을 하였다.
- iso 파일을 적당한 곳에 마운트
[root@RHCS-NODE01 ~]# mount -o loop ~/rhel-server-6.5-x86_64-dvd.iso /mnt
- repository 설정
[root@RHCS-NODE01 ~]# vi /etc/yum.repos.d/rhel65.repo
[rhel-dvd]
name=Red Hat Enterprise Linux $releasever - $basearch - DVD
baseurl=file:///mnt/Server
gpgcheck=0
[rhel-ha]
name=Red Hat Enterprise Linux $releasever - $basearch - HA
baseurl=file:///mnt/HighAvailability
gpgcheck=0
- repository 제대로 설정 되었는지 리스트 확인
[root@RHCS-NODE01 ~]# yum repolist
2.3. 패키지 설치
2.3.1. 클러스터 관련 yum 패키지 설치
[root@RHCS-NODE01 ~]# yum -y groupinstall "High Availability" "High Availability Management"
-> "High Availability Management" 은 konga(luci) 관련된 패키지이므로 web gui 설정환경인 luci를 사용하지 않는다면 설치를 안해도 됨. 즉, 클러스터 노드에는 설치하지 않아도 된다.
2.3.2. iscsi 관련 패키지 인스톨
[root@RHCS-NODE01 ~]# yum install -y iscsi-initiator-utils.x86_64
2.4. iscsi 인식
2.4.1. iSCSI 서버에서 제공하는 iSCSI 대상자 찾기
[root@RHCS-NODE01 ~]# iscsiadm --mode discovery --type sendtargets --portal iscsi-storage
2.4.2. iSCSI 서버에 있는 하나 이상의 iSCSI 대상에 로그인(연결)
[root@RHCS-NODE01 ~]# iscsiadm --mode node --targetname iqn.2014-04.net:target0 --portal iscsi-storage --login
2.4.3. iSCSI 연결상태 확인
oot@RHCS-NODE01 ~]# /etc/init.d/iscsi status
iSCSI Transport Class version 2.0-870
version 6.2.0-873.2.el6
Target: iqn.2014-04.net:target0
Current Portal: 192.168.0.91:3260,1
Persistent Portal: 192.168.0.91:3260,1
.
.
[root@RHCS-NODE01 ~]# iscsiadm -m node
192.168.0.91:3260,1 iqn.2014-04.net:target0
2.5. IPMI 연결 확인
ipmitool-1.8.11-16.el6.x86_64 rpm 패키지가 설치 되어 있어야 한다. 기본적으로 설치되어 있음.
- 상태확인
[root@RHCS-NODE01 ~]# ipmitool -l lan -H 192.168.10.11 -I lanplus -U ADMIN -P '!test123' chassis power status
- 전원 끄기
[root@RHCS-NODE01 ~]# ipmitool -l lan -H 192.168.10.11 -I lanplus -U ADMIN -P '!test123' chassis power off
- reboot
[root@RHCS-NODE01 ~]# ipmitool -l lan -H 192.168.10.11 -I lanplus -U ADMIN -P '!test123' chassis power reset
2.6.. acpid off
클러스터 노드에 문제가 발생했을 경우 해당 노드의 fence 장치에 신호를 보내 fencing 하기 위해선 acpi 기술을 사용하지 않아야 된다.
레드햇은 아래 3가지 방법을 권장사항으로 제시한다.
2.6.1. 메인보드 설정
메인보드 Bios에서 acpi 관련 ACPIC Function, Soft-Off by PWR-BTTN, Instant-Off 옵션은 끄기
2.6.2. 커널 옵션 추가
grub.conf 에서 acpi=off 옵션을 추가
2.6.3. 관련 데몬 멈춤
acpid 데몬 off -> chkconfig acpid off
2.7. ricci 시작하기
* luci는 클러스터 구성과 관리를 GUI 웹환경에서 쉽게하기 위한 툴이다.
luci는 서버, ricci는 클라이언트이다. ricci에 의해 업데이트된 클러스터 정보를 전달할때 TCP 11111 포트를 통한다.
luci(web gui) 환경으로 설정할게 아니라면 설치를 안해도 된다.
또한 luci로 설정을 하더라도 클러스터 구성 설정이 모두 끝난 다음에는 ricci를 구동하지 않아도 된다.
2.7.1. ricci 데몬 구동
[root@RHCS-NODE02 ~]# /etc/init.d/ricci start
passwd 를 물어보면 luci(web gui)서버와 통신할때 필요한 비번을 입력한다.
2.7.2. ricci 비번 설정
[root@RHCS-NODE02 ~]# passwd ricci
3. 클러스터 생성하기
3.1. luci 서버에 접속하기
여기서 luci 서버는 iSCSI-Storage가 맡아서 운영되므로 아래 주소로 윈도우즈 PC 웹브라우져를 통해 접속한다.
https://192.168.0.91:8084
3.2. 클러스터 설정
1) Nodes
Node Name : node01-hb
Number of votes : 1
ricci host : node01-hb
ricci port : 11111
- Fence Devices
Name : f1
Type : IPMI Lan
2) Fence Device
Name : f1
IP Address of Hostname : fence01
Login : ADMIN
Password : !test123
Power Wait (seconds) : 10
3) Failover Domains
Name : FO
Prioritized : 이곳에 체크
Members : node01-hb, node02-hb 그리고 Member에 체크, Priority는 각각 1
4) Resources
Name / IP Type
192.168.0.69/24 IP Address
hddp Script
iscsi File System
5) Service Groups
Name : svc01
위 Resources 에 설정한 3가지를 Add Resource 버튼을 눌러서 등록한다.
그리고 Name 부분의 svc01을 눌러 세부 정보에서 Status의 node01-hb를 선택하고 Play 버튼을 누른다.
그러면 node01-hb에 의해 active 상태로 서비스가 운영되게 된다.
아래처럼 확인하면 된다.
[root@RHCS-NODE01 ~]# clustat
Cluster Status for cs01 @ Sun May 11 23:39:00 2014
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
node01-hb 1 Online, Local, rgmanager
node02-hb 2 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:svc01 node01-hb started
## 기타 추가할 문서 내용.. 이 문서는 정리가 아직 덜 됨.
# /etc/cluster/cluster.conf 파일의 내용을 변경하고선 하는 명령어로 ricci 데몬이 올라가 있을경우 한곳의 node 에서만 변경후 이 명령을 해주면 다른 노드에까지 반영된다.
[root@RHCS-NODE01 ~]# cman_tool version -r
# 서비스 svc01을 node01-hb 노드로 클러스터를 시작하라.
[root@RHCS-NODE01 ~]# clusvcadm -e svc01 -m node01-hb
# 서비스 svc01을 node02-hb 로 넘겨라
[root@RHCS-NODE02 ~]# clusvcadm -r svc01 -m node02-hb
# 클러스터 상태보기
[root@RHCS-NODE01 ~]# clustat -i 1
# 서비스 svc01 클러스터링을 disable(멈춰라)
[root@RHCS-NODE01 ~]# clusvcadm -d svc01
[root@RHCS-NODE01 ~]# vi /etc/fstab --> lvm이 reboot 후 inactive 되는 경우 넣어 줌.
none none nfs _netdev 0 0
-> 혹은 /etc/rc.local 에 vgchange -a y vg01 을 추가한다.
* 만약 클러스터 노드의 OS를 재설치 후 기존 iscsi 스토리지의 lvm을 재 사용할경우 pvscan ,vgscan, lvscan을 해줘야 인식이 된다.