티스토리 뷰
오늘은 분산, 복제 파일시스템인 glusterfs에 대해서 알아보도록 하겠습니다.
일반적으로 HDFS 와 같은 메타데이타를 관리하는 서버를 두는 분산 방식은 2가지 위험성을 가지고 있다고 합니다.
- Performance Bottleneck
- Inconsistency Risks
글러스터FS 는 위의 두가지 위험성을 제거한 분산 파일 시스템 방식입니다. 메타데이타를 관리하는 서버가 없으면 어떻게
파일의 위치를
찾을 수 있을것인가? 하는 의문이 있을 수가 있는데요. 이를 해결하기 위해서 데이타를 저장하고 읽어올 수 있는 방식이 아니라
'수학적
계산'을 통해서 파일의 위치를 찾을 수 있는 Elastic Hashing
Algorithm 을 사용한다고 합니다.
이에 더해서 Gluster Native FUSE 방식이라고 해서 가상 마운트 방식을 지원합니다.
- 일반적인 마운트 방식과 100% 동일
- 작은 파일 관련해서도 더욱 빠른 속도를 보여줍니다. (HDFS 는 1MB 의 크기 제한이 존재합니다)
- 글러스터를 제거해도 파일의 원본이 깨지지 않고 남아있습니다.
- 분산 환경이 노드를 추가해도 능률 향상이 Log 의 곡선을 그리는데 비해서 글러스터는 '선형'으로 빨라집니다.
$ sudo apt-get install glusterfs-server
* glusterfs의 원활한 관리 및 추가적인 기능을 이용하기 위해서, glusterfs를 설치하기 전에 다음의 패키지를 설치하는 것을 권장한다.$ sudo apt-get install openssh-server wget nfs-common
step2. 방화벽 설정
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24047 -j ACCEPT # (24047 -> 24009 + 모든 볼륨의 brick 갯수) $ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT $ iptables -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT $ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT # NFS를 사용하는 경우 $ service iptables save $ service iptables restart
step3. GlusterFS 구동
gluster 시작
$ /etc/init.d/glusterfs-server startgluster 정지$ /etc/init.d/glusterfs-server stop
step4. GlusterFS 설정 ( 전 서버에 모두 동일하게 설정 )
hosts file 등록
$ vi /etc/hosts
192.168.0.200 server1
192.168.0.201 server2
192.168.0.203 server3
192.168.0.204 server4
peer 등록
$ sudo gluster
gluster> peer probe server2 gluster> peer probe server3
gluster> peer probe server4
peer 제거 ( 나중에 필요시 )
gluster> peer detach server2
step5. Volume설정
volume은 실제 데이터를 저장할 저장소를 설정하는 것이다.
gluster> volume create NEW-VOLNAME [stripe COUNT | replica COUNT] [transport tcp | rdma | tcp, rdma]
: 볼륨을 생성한다. 볼륨은 사용 목적에 따라 5가지 형태로 분류된다.
gluster> volume info [all | VOLNAME]
: 볼륨의 정보를 보여준다.
5-1. Distributed Volume
- 파일들이 볼륨의 brick 내에 적절히 배치되는 형태.
- 규모가 큰 저장소가 필요하나, 데이터의 중복성이 필요없거나 다른 하드웨어/소프트웨어로 중복성에 제공될 때 사용.
note) Disk/Server에서 오류는 데이터를 잃어버릴 수 있다.
Creation of test-volume has been successful. Please start the volume to access data.
gluster> volume info
Volume Name: test-volume
Type: Distribute
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server1:/exp1
Brick2: server2:/exp2
Brick3: server3:/exp3
Brick3: server3:/exp4
5-2. Replicated Volume
- 파일들이 볼륨의 brick 내에 중복하여 저장된다.
- 높은 유용성과 높은 안정성이 필요할 때 사용
note) replica의 갯수는 볼륨을 구성하는 brick의 숫자와 동일하여야 한다.gluster> volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
Creation of test-volume has been successful. Please start the volume to access data.
gluster> volume info
Volume Name: test-volume
Type: Replicate
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1:/exp1
Brick2: server2:/exp2
5-3. Striped Volume
- 파일들이 볼륨의 brick 내에 stripe되어 저장된다.
- 매우 큰 파일들을 동시에 접근하고자 할 경우에만 사용.
note) stripe의 갯수는 볼륨을 구성하는 brick의 숫자와 동일하여야 한다.gluster> volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
Creation of test-volume has been successful. Please start the volume to access data.
gluster> volume info
Volume Name: test-volume
Type: Stripe
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1:/exp1
Brick2: server2:/exp2
5-4. Distributed Striped Volume
- 파일들이 볼륨의 brick 내의 2개 이상의 노드에 stripe되어 저장된다.
- 매우 큰 파일들을 동시에 접근하고자 하고, 저장소의 확장이 요구될 경우에 사용
note) brick의 숫자는 stripe 갯수의 배수여야 한다.
gluster> volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
Creation of test-volume has been successful. Please start the volume to access data.
gluster> volume info
Volume Name: test-volume
Type: Distributed-Stripe
Status: Created
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server1:/exp1
Brick2: server2:/exp2
Brick3: server3:/exp3
Brick4: server4:/exp4
5-5. Distributed Replicated Volume
- 분산된 파일들이 볼륨 내에 중복되어 저장된다.
- 저장소의 확장성과 높은 안정성이 중요할 때 사용
note) brick의 숫자가 replica 갯수의 배수여야 한다. brick이 지정되는 순서는 복제 설정에 영향을 미치며, 각 replica 갯수만큼 연속적으로 나열된 brick이 replica set으로 구성된다.
gluster> volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
Creation of test-volume has been successful. Please start the volume to access data.
gluster> volume info
Volume Name: test-volume
Type: Distributed-Replicate
Status: Created
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server1:/exp1
Brick2: server2:/exp2
Brick3: server3:/exp3
Brick4: server4:/exp4
5-6. Volume start, stop 및 기타기능
# 이 예제에서는 (server1, server2), (server3, server4)가 각각의 replica set이다.
- start VOLNAME : mount 하기 전에 볼륨을 start해야 한다.gluster> volume start test-volume
Starting volume test-volume has been successful
gluster> volume info
Volume Name: test-volume
Type: Distributed-Replicate
Status: Started <-----------------------------
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: rose1:/exp1
Brick2: rose2:/exp2
Brick3: rose3:/exp3
Brick4: rose4:/exp4
- stop VOLNAME : 동작하고 있는 볼륨을 정지한다. 볼륨을 삭제하려면 반드시 stop을 먼저 수행하여야 한다.
gluster> volume stop test-volume
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
Stopping volume test-volume has been successful
gluster> volume info
Volume Name: test-volume
Type: Distributed-Replicate
Status: Stopped <-----------------------------
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: rose1:/exp1
Brick2: rose2:/exp2
Brick3: rose3:/exp3
Brick4: rose4:/exp4
- delete VOLNAME : 볼륨을 삭제한다. (삭제하기 전에 볼륨은 반드시 정지된 상태여야 한다.)gluster> volume delete test-volume
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
Deleting volume test-volume has been successful
- add-brick VOLNAME NEW-BRICK
- 볼륨에 brick을 추가하여 볼륨을 확장한다.
note) 추가하고자 하는 brick은 gluster에 등록되어 있어야 한다.
note) replica가 설정된 볼륨은 replica수의 배수만큼 brick을 추가하여야 한다. (replica가 2라면 2,4,6,8...개의 brick 추가)gluster> volume add-brick test-volume server4:/exp4
Add Brick successful
- remove-brick VOLNAME BRICK
. 볼륨에서 brick을 제거하여 볼륨을 축소한다.
. note) replica가 설정된 볼륨은 replica수의 배수만큼 brick을 제거하여야 한다.gluster> volume remove-brick test-volume server2:/exp2
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
Remove Brick successful
6.GlusterFS 접근(Gluster Native 방식)
glusterfs에 접근하고자 하는 장비에 apt-get을 이용하여 gluster client를 설치한다.
$ sudo apt-get install glusterfs-cluster
Network 설정을 추가한다.
$ sudo iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -j ACCEPT
$ sudo iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 24009:24014 -j ACCEPT # (24014 -> 24009 + 모든 brick 갯수)볼륨을 mount한다.
. mount -t glusterfs HOSTNAME-OR-IPADDRESS:/VOLNAME MOUNTDIR
$ mount -t glusterfs server1:/test-volume /mnt/glusterfs
fstab 등록
server:/dep-volume /mnt/glusterfs glusterfs defaults,_netdev 0 0이상 glusterfs에 대해 알아봤습니다.
by rocksea.
'Developer' 카테고리의 다른 글
[maven] repository (artifactory) installation guide (0) | 2012.11.07 |
---|---|
[ NFS ] Network File System 설치 (0) | 2012.10.17 |
apt-get package 설치에러 (0) | 2012.10.12 |
[ Thrift ] thrift installation & example (0) | 2012.10.11 |
like문 작성법 (0) | 2012.10.10 |
- Total
- Today
- Yesterday
- 스페인 여행
- 도덕경
- 영문법
- 베트남
- 비교구문
- NGINX
- JBOSS
- maven
- hdfs
- Business English
- mongoDB
- Python Django
- ubuntu
- AWS
- 대명사 구문
- k8s
- 비지니스 영어
- 다낭
- nodejs
- 가정법
- 조동사
- hadoop
- 여행
- redis
- 해외여행
- it
- 영작
- PostgreSQL
- memcached
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |