GlusterFs를 사용하여 docker swarm에 공유 볼륨 설정
말하지 않아도 대부분의 지역사회에 있어서 컨테이너화를 언급할 때 Docker는 그들의 머릿속에서 가장 먼저 나타난 것 중의 하나이다. 만약 첫 번째가 아니었다면!
나는 여기서 다른 사람들이 docker 이전에 컨테이너화를 시작했다는 생각을 말하지 않았다. 이것은 아마도 다른 블로그의 주제일 것이다.
내가 여기서 이야기하는 것은 내가 Docker Swarm을 처리할 때 겪은 문제이다. 나는 다른 사람들도 이 문제에 부딪혔다고 믿는다. 나는 Swarm의 노드 사이에서 어떤 데이터 공유를 해야 한다고 믿는다.불행하게도 Docker 본기는 이 점을 지원하지 않습니다. 귀하는 제3자 저장 서비스에 의존해야 합니다. 이 서비스는 귀하의 노드에 좋은 API를 제공해 줍니다. 이것은 귀하의 많은 자금을 들일 수도 있고 귀하가 자신의 공유 저장소를 개발할 수도 있습니다.여기서 나는 내가 선택한 어려운 방식을 나눈다.
머리말:
GlusterFS란 무엇입니까?
Gluster는 여러 서버의 디스크 저장 자원을 하나의 전역 이름 공간에 모으는 확장 가능한 분포식 파일 시스템이다.
Gluster는 복제, 할당량, 지리적 복제, 스냅샷 등의 기능을 제공하는 소스입니다.
Gluster를 사용하면 여러 노드를 하나의 이름 공간에 모을 수 있습니다. 여기서 여러 가지 옵션을 얻을 수 있습니다.
너는 간단하게
Gluster의 다양한 설정에 대해 알아보실 수 있습니다.
https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/
저희 설정부터 시작할게요.
우선, 우리는 3개의 관리 노드와 3개의 작업 노드로 구성된 집단을 상상해 보자. 우리는 작업 노드의 용기가 같은 데이터를 볼 수 있어야 한다. 어디에 있든지 데이터의 일치성이 필요하다. 데이터의 가용성이 가장 중요하다.따라서 여러 복제 노드의 모든 데이터를 복제할 수 있는 복제된 GlusterFs 볼륨을 만들어야 한다. 또한 저장소를 충당할 수 있는 추가 기계를 얻기 위해 자원이 많지 않기 때문에, 우리는 우리의 swarm기계를 사용하여 저장소 노드를 충당할 것이다.
그래서 우리의 구조는 이렇게 될 것이다
우리 더러운 일을 시작합시다
만약 우리가 Debian 기반의 발행판을 사용하고 있다면, 예를 들어 ubuntu
우선, 당신은 모든 세 대의 보조기기에glusterfs를 설치해야 합니다
너는 통과할 수 있다
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-7
sudo apt update
sudo apt install glusterfs-server
그리고 모든 작업기에서 glusterfs 데몬 서비스를 시작하고 사용해야 합니다sudo systemctl start glusterd
sudo systemctl enable glusterd
그리고 모든 기계에 ssh 키를 생성해야 합니다ssh-keygen -t rsa
이후 모든 호스트 이름이 인 시스템을 처리하기 위해서는 시스템당 /etc/hosts
을 편집하고 IP에 분배된 다른 노드에 호스트 이름을 추가해야 합니다. 아래 형식과 같습니다.<IP1> <HOSTNAME1>
<IP2> <HOSTNAME2>
이제 메모리 그룹을 만들고 그 중 한 기계부터 이 명령을 사용하여 다른 기계를 추가합니다sudo gluster peer probe <Hostname>
두 노드를 추가한 후 이 명령을 실행하여 모든 노드가 스토리지 클러스터에 속해 있는지 확인합니다.sudo gluster pool list
이제 Dell의 볼륨을 벽돌처럼 처리하기 위해 3명의 모든 직원에게 카탈로그를 작성해야 합니다.그런데 잠깐만, 벽돌이 뭐야??
brick은 기본적으로 볼륨 단원을 충당하는 디렉터리로 GlusterFs는 모든 저장소 노드에서 데이터 저장/처리 위치를 알 수 있습니다
그래서 기본적으로 모든 작업 노드에 이 디렉터리를 만들어야 합니다. 우리는 그것을
brick1
이라고 명명하고 /gluster-volumes
아래에 놓았습니다sudo mkdir -p /gluster-volumes/brick1
이제 복제 볼륨을 생성할 준비가 되었습니다(demo-v
이라고 함).[호스트에서만 이 명령을 실행합니다.]
sudo gluster volume create demo-v replica 3 <HOSTNAME1>:<BRICK_DIRECTORY> <HOSTNAME2>:<BRICK_DIRECTORY> <HOSTNAME3>:<BRICK_DIRECTORY> force
그리고 볼륨을 켜주세요.sudo gluster volume start demo-v
축하합니다. 현재 복제 볼륨이 생겨서 어떤 기계에 설치하고 사용할 수 있습니다이제 이 책을 우리 일꾼 3명에게 설치합시다
볼륨을
/our-application/logs
이하로 늘리는 경우sudo mount.glusterfs localhost:/demo-v /our-application/logs/
그리고 이를 영구화하기 위해 fstab
파일에 추가해야 합니다.그래서
/etc/fstab
을 켜서 이 줄을 추가합니다.
localhost:/demo-v /our-application/logs/ glusterfs defaults,_netdev,acl, backupvolfile-server=<HOSTNAME> 0 0
<HOSTNAME>
을 사용하지 않고 한 대의 작업기의 호스트 이름을 추가하여 스토리지 풀에서 제거해야 할 경우 다른 시스템으로 볼륨을 마운트할 수 있습니다.지금 이거 해봐도 돼요.
touch /our-application/logs/test.txt
다른 일꾼들 좀 봐, 서류 찾았어?축하합니다!모든 작업자에게 마운트된 작업 중인 복제 볼륨이 있습니다.질문이 있습니까?메모 남겨주세요!
Reference
이 문제에 관하여(GlusterFs를 사용하여 docker swarm에 공유 볼륨 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mohammedashour/setting-up-a-shared-volume-for-your-docker-swarm-using-glusterfs-3a16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)