소규모 시스템에서 2대 이상의 웹서버 구성 시 고민될 문제는
스토리지 도입 여부, 비용문제로 인한 즉 웹소스 동기화에 대한 여부가 많은 것 같습니다.
예전에는 구성 상담 시 웹소스 변경 시 일반적으로 lsync, rsync 등을 이용하여
주기적인 스케쥴 설정을 사용하시길..
권해드린 경우가 많은데 과거 테스트를 진행 했던 DRBD에서 Active/Active 구성이
가능 하다는 것을 알게되어 이렇게 테스트를 진행해 보게 되었습니다.
DRBD를 이용하면 별도의 웹소스 동기화를 위한 고민이 필요 없을 뿐더러
Active/Active 구성으로, 장애로 인한 Primary/Secondary 우선순위가 깨졌을 시 발생할 수 있는
Split brain 문제에서도 어느정도 여유 있는 대처가 가능할 것 같다는 생각 입니다.(비용 절감의 문제)
일반적인 DRBD 구성에서는 heartbeat 등을 이용한 failover 구성 등이 필요 하지만
Active/Active 구성이기에 설정 또한 간편한 편,
준비물 : 서버 2대
테스트 환경 : HP DL120G6 * 2EA, OS : CentOS 6.7 64bit, httpd yum installed
node1 : 192.168.2.42
node2 : 192.168.2.75
최초 OS install 시 DRBD에서 사용 할 공간은 별도 파티셔닝 하지 않고, OS 부분만 설치 진행 합니다.
vi /etc/hosts
192.168.2.44 node1
192.168.2.75 node2
drbd 설치
(양 노드 함께 실행)
rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum install -y kmod-drbd84 drbd84-utils
modprobe drbd minor_count=1
vi /etc/drbd.d/drbd_disk1.res
resource drbd_disk1 { protocol C; startup { become-primary-on both; wfc-timeout 60; outdated-wfc-timeout 40; degr-wfc-timeout 60; } net { allow-two-primaries; after-sb-0pri discard-zero-changes; after-sb-1pri discard-secondary; after-sb-2pri disconnect; cram-hmac-alg sha1; shared-secret sync_disk; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } syncer { rate 100M; verify-alg sha1; } on node1 { device /dev/drbd0; disk /dev/sda4; address 192.168.2.42:7789; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sda4; address 192.168.2.75:7789; meta-disk internal; } } |
(양 노드 함께 실행)
fdisk를 이용해서 생성하지 않은 영역을 할당 (/dev/sda4)
(양 노드 함께 실행)
drbd meta data 생성
drbdadm create-md drbd_disk1
(양 노드 함께 실행)
/etc/init.d/drbd start
(node1에서)
drbdadm primary --force drbd_disk1
(양 노드 함께 실행)
sync상태 확인
drbd-overview
sync 완료 후 node2를 primary로 변경
drbdadm primary drbd_disk1
Cluster + GFS2 설치
(양 노드 함께 실행)
rpm -ivh http://mirror.premi.st/epel/6/i386/epel-release-6-8.noarch.rpm
yum groupinstall -y "High Availability" "Resilient Storage" "High Availability Management"
(양 노드 함께)
vi /etc/cluster/cluster.conf
<?xml version="1.0"?> <cluster config_version="1" name="drbd-cluster"> <rm log_level="4"/> <fence_daemon clean_start="1" post_fail_delay="0" post_join_delay="3"/> <clusternodes> <clusternode name="node1" nodeid="1" votes="1"> <fence> <method name="2"> <device name="LastResortNode01"/> </method> </fence> </clusternode> <clusternode name="node2" nodeid="2" votes="1"> <fence> <method name="2"> <device name="LastResortNode02"/> </method> </fence> </clusternode> </clusternodes> <cman expected_votes="1" two_node="1"/> <fencedevices> <fencedevice agent="fence_manual" name="LastResortNode01" nodename="node1"/> <fencedevice agent="fence_manual" name="LastResortNode02" nodename="node2"/> </fencedevices> <totem consensus="4800" join="60" token="10000" token_retransmits_before_loss_const="20"/> </cluster> |
(양 노드 함께 실행)
cluster manager 실행
/etc/init.d/cman start
chkconfig --level 2345 cman on
(node1에서)
GFS2 파일시스템 포맷
mkfs.gfs2 -p lock_dlm -t drbd-cluster:drbd_disk1 /dev/drbd0 -j 2
(양 node에서)
mkdir /storage
mount.gfs2 -o noatime,nodiratime /dev/drbd0 /storage
drbd-overview
이후 아파치를 설치하여 home directory를 /storage로 변경하여 웹소스를 업로드 하면
실시간으로 동기화 되는 것을 확인할 수 있습니다.
'기술자료 > 기술운영자료' 카테고리의 다른 글
Crontab 사용 방법 (0) | 2016.04.21 |
---|---|
윈도우 디렉토리 사용량 확인 가능한 TreeSize Free 소개 (0) | 2016.04.21 |
무료 윈도우 백업 소프트웨어 아이페리어스 소개 (0) | 2016.03.24 |
각종 라우터 또는 스위치 장비들의 Default 패스워드 리스트 (0) | 2016.03.21 |
랜섬웨어 치료방법 및 복구툴 소개 (0) | 2016.03.21 |