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기계를 사용하여 저장소 노드를 충당할 것이다.

    그래서 우리의 구조는 이렇게 될 것이다


  • 3 Swarm Manager
  • 벌떼 일꾼
  • GlusterFs 볼륨 서버 3대에 연결
  • 네, 지금 알고 싶은 것은 이 디자인이 우리 직원들로 하여금 저장소와 클라이언트를 동시에 충당하게 하기 때문에 그들이 수집한 데이터의 복제를 충당하고 이 볼륨을 불러오고 읽는 서버를 충당하는 것을 알고 있다는 것입니다. 이것은 처음에는 이상하게 보일 수도 있지만, 자세히 생각해 보면 응용 프로그램이 필요로 할 수 있는 많은 용례에 있어서 아주 좋은 설정일 수도 있습니다.그리고 추가 비용은 필요 없어!

    우리 더러운 일을 시작합시다


    만약 우리가 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
    
    다른 일꾼들 좀 봐, 서류 찾았어?축하합니다!모든 작업자에게 마운트된 작업 중인 복제 볼륨이 있습니다.
    질문이 있습니까?메모 남겨주세요!

    좋은 웹페이지 즐겨찾기