Docker GlusteFS.분산 파일 시스템의 실현.
오늘 GlusterFS 유효성 검사를 실시합니다.그런 다음 Docker에서 합니다.
왜 Docker를 나의 Docker 기술을 향상시키기 위해 사용합니까?
그리고 1월 사내 학습회에서'닥터 동계제 #1'을 개최한다.
오늘은 GlusterFS를 통해 Docker와 더욱 가까워졌습니다.
이번 구성.
주안점
Gluster 서버에 데이터를 저장할 수 있지만 Dcoker의 장점은 휴대성이 급격히 떨어지는 것이다
데이터에 끌려가는 용기니까 여기서 분리해야 돼
이 용기는 암호화 볼륨 용기로서 지속적으로 사용된다.
컨디션
OS:OS X Yosemite 10.10.1
Docker 설치 방법여기.부터 시작
서버 시작
다음은 Docker를 사용하여 5대를 시작합니다.
* client
* gluster1
* gluster1-storage
* gluster2
* gluster2-storage
Docker 연결 시작 및 설정
$ boot2docker start
$ export DOCKER_HOST=tcp://[Your IP Address]:2376
$ export DOCKER_CERT_PATH=/Users/Jun/.boot2docker/certs/boot2docker-vm
$ export DOCKER_TLS_VERIFY=1
Hub OS 6 이미지 다운로드
$ docker pull centos:centos6
$ docker images
※ 시간이 조금 걸립니다GlusterFS용 이미지 만들기
GlusterFS용 마스터 이미지를 만듭니다.
GlusterFS용 패키지를 넣고 저장합니다.
저장된 마스터 이미지에서 GlusterFS용 컨테이너를 시작합니다.
허브 OS의 이미지에서 컨테이너를 시작하여 콘솔에 연결합니다.
$ docker run -dti --name GlusterMaster centos:centos6 /bin/bash
$ docker ps
$ docker attach GlusterMaster
다음은 컨테이너의 작업이다.Gluster 관련 패키지를 설치합니다.
# yum update -y
# yum install -y wget
# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfsepel.repo
# yum install -y glusterfs glusterfs-server
# exit
설치가 완료되면 이미지를 만듭니다.$ docker ps -a
$ docker commit GlusterMaster myimage/glusterserver
$ docker images
이렇게 되면muymage/glusterserver의 인상이 형성된다.이를 토대로 GlusterFS 컨테이너를 가동한다.
그림에서 각각 용기를 시작합니다
우선 데이터 볼륨을 시작하는 용기입니다.
$ docker run -v /data --name gluster1-storage centos:centos6 /bin/bash
$ docker run -v /data --name gluster2-storage centos:centos6 /bin/bash
볼륨 용기를 마운트한 다음 각각 시작합니다.※ 3개의 터미널에서 각각 수행하세요.
$ docker run -idt --name client myimage/glusterserver /bin/bash
$ docker run -idt --volumes-from gluster1-storage --name gluster1 myimage/glusterserver /bin/bash
$ docker run -idt --volumes-from gluster2-storage --name gluster2 myimage/glusterserver /bin/bash
$ docker ps
컨테이너에 연결
컨테이너는 이미 연결되어 각각 연결되었다.
$ docker attach gluster1
$ docker attach gluster2
$ docker attach client
※ docker run 시 i 를 선택하면 시작 시 attache 가 가능하지만, 꼭 해야 하는 것은 아닙니다※ 시작 시 지정된 볼륨 컨테이너 영역/data 사용 가능
TIPS: 컨테이너에서 뽑으려면(일시적으로 뽑을 때)
control + p → control + q
※ 재접속 시 상기 용기 연결 실시TIPS: 호스트 이름 변경
헷갈리기 쉬운 세 대가 있어서 변경해야 돼요.
이렇게 생각하다
# vi /etc/sysconfig/network
# vi /etc/hostname
# docker restart client
해 보았지만 안 돼요.나는 이것이 나의 생각이 너무 낡아서 docker에서 호스트 이름을 사용하는 것은 의미가 크지 않다고 생각한다.
시동과 정지가 반복되는 컨테이너는 누구도 호스트 이름을 의식하지 않을 것이라고 생각한다.
이에 따라 변경이 중지됐다.
GlusterFS 볼륨 만들기
우선glusterd를 시작합니다.
※ gluster 1, gluster 2를 통해 수행
service glusterd start
gluster 1, gluster 2의 IP 주소를 확인하고per로 로그인
※ 1대 실시.GlusterFS에는 운영 서버, 보조 서버의 개념이 없으므로 구현에 문제가 없습니다.이번에는gluster1이 실시한 것이다.
# gluster peer probe [ipアドレス]
# gluster peer status
커넥티드일 거예요.볼륨 생성
/data는 GlusterFS의 미러링 볼륨으로 생성됩니다.
기타 유형은 참조여기..
brick에 사용할 디렉터리를 만듭니다.
gluster 1, gluster 2에서 각각 실시한다.
# mkdir /data/vol1
GlusterFS 볼륨 만들기gluster 1로 구현
# gluster volume create test-vol replica 2 172.17.0.33:/data/vol1 172.17.0.34:/data/vol1
volume create: test-vol: failed: Glusterfs is not supported on brick: 172.17.0.33:/data/vol1.
Setting extended attributes failed, reason: Operation not permitted.
아이고, 오류를 만들 수 없습니다.조사해 보았다
GlusterFS에 확장 파일 속성이 사용된 것으로 보입니다.
docker에는 몇 가지 특권 모드의 제한이 있는 것 같습니다.
참조:
* Running GlusterFS inside docker container
* 설명 Linux의 확장 파일 속성
* (ヽ´ω`) < *****
시작할 때 옵션을 변경할 수 있습니다.
--cap-add, --cap-drop은 상세한 설정을 할 수 있을 것 같은데, 이번에는 큰 디스크 형식으로 --privleged를 지정하여 시작합니다.
따라서 방금 용기를 삭제하고 다시 시작합니다.
glusterfs 볼륨을 다시 만듭니다.
※ gluster 1 터미널에서 수행
# exit
$ docker rm gluster1
$ docker run --privileged=true -idt --volumes-from gluster1-storage --name gluster1 myimage/$ glusterserver /bin/bash
※ gluster 2 터미널에서 실행# exit
$ docker rm gluster2
$ docker run --privileged=true -idt --volumes-from gluster2-storage --name gluster2 myimage/glusterserver /bin/bash
그럼 다시 정신을 차리고 음량을 틀어주세요.gluster 1, gluster 2에서 각각 실시한다.
# service glusterd start
gluster 1로 구현# gluster peer probe [ipアドレス]
# gluster peer status
# gluster volume create test-vol replica 2 172.17.0.36:/data/vol1 172.17.0.37:/data/vol1
# gluster volume start test-vol
# gluster volume info
이렇게 되면glusterfs의 음량이 나온다.client에서 마운트 및 사용
※ client 를 다시 시작하지 않으면 -privileged = 진짜를 마운트할 수 없습니다. 선택할 수 있는 방식으로 시작하십시오
client 터미널에서 실행
# mkdir /data
# mount -t glusterfs [gluster1のIP]:/test-vol /data
※ gluster 1, gluster 2로/data/vol1을 확인한 뒤 같은 파일을 작성했습니다.총결산
Reference
이 문제에 관하여(Docker GlusteFS.분산 파일 시스템의 실현.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iron-breaker/items/eab40505cab908da886f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)