분산 파일 시스템 GlusterFS를 사용하여 웹 서버 간 동기화

> to English Pages
https://kyowg.blogspot.com/2017/12/distributed-parallel-fault-tolerant.html

1. 요약


본고는 분류 환경에서 원본 코드 해제 처리와 각 웹 서버의 시간차를 억제하는 방법으로 각 웹 서버의 파일 시스템 사이를GlusterFS와 유사한 용량 분산 파일 시스템으로 동기화하는 방법을 발표했다.

2. 시작


여러 웹 서버로 구성된 클러스터 환경에서 이 노드 간의 소스 코드가 차이가 나는 시간이 길수록 예상치 못한 문제가 발생할 수 있습니다.
알기 쉬운 예로, 원본 코드가 오래된 웹 서버와 새로운 웹 서버 간의 접근이 왕래하는 상황을 고려하면 상상하기 어렵지 않을 것이다.
이런 과제에 대해 부하 밸런스의 세션 유지 기능을 활용해 해결되는 사례가 많은데, 부하 밸런스의 연동성과 제한에 얽매이는 비율도 높아지고 있다는 것이다.
새로운 과제가 생기는 경험(일부 후술)도 있었죠.
또한 rsync, lsyncd, CI 도구 등 웹 서버 간의 원본 코드의 동기화에 대해 다양한 방법이 존재하지만 병행 처리의 해제 방식이 아니라면 이러한 방법은'노드수 x해제'에 대해 수동과 자동의 시간차를 메우는 것에 불과하다.소스 코드의 차별이 발생하는 것은 근본적으로 해결할 수 없다.
특히 rsync 등 동기화의 성질이 단방향인 상황에서 상호 동기화를 강행해도 데이터의 통합성을 보장할 수 없기 때문에 이러한 대책을 연구하기 위해 도구와 제한에 대한 의존도를 더욱 높일 경우시스템의 확장성, 탄력성, 생산성이 한층 더 손상된 경직 시스템은 새로운 과제를 낳을 수 있다.
따라서 이 글은 이러한 문제점을 해결하는 방법 중 하나로 웹 서버 간의 파일 시스템을 GlusterFS 등 분산된 파일 시스템과 동기화하는 방법을 발표했다.
(단, 상술한 과제에 문제가 없다면 이 직위는 쓸모가 없을 것이다.)
GlusterFS는 분산 병렬 내결함성 파일 시스템입니다.
GlusterFS를 사용하는 몇 가지 장점은 파일 시스템의 분산, 동기화, 용량의 증감은 시스템이 멈추지 않는 상황에서 실현할 수 있고 오류 디자인을 할 수 있다는 것이다.
물론 동기화도 양방향이고 주인과 종속의 개념도 없다.
그러나 Gluster 볼륨에 잠긴 파일(RDB의 PID 파일 등)을 포함하는 것은 권장하지 않습니다.
그리고 이런 방법은 다음과 같은 부차적인 장점도 생겼다.
  • 자동이든 수동이든 여러 번 처리할 필요가 없음
  • 웹 애플리케이션의 세션 환경에서 DB 또는 LB의 세션 유지 기능과 관련이 없는 파일 시스템을 활용할 수 있음
  • 소스 코드 이외의 용도에서도 웹 서버 간에 완전히 동기화할 수 있기 때문에 중간부품 등을 둘러싼 여러 차례 설정 작업을 줄일 수 있다
  • 그럼 그 디자인 예와 구축 예를 투고해 봅시다.

    3. GlusterFS 설계


    다음 그림은 GlusterFS의 대략적인 개념입니다.

    아래의 그림은 이 직위의 배치 예이다.
    볼륨 서버 팜을 준비할 수 없으며 간단한 자가 완결로 구성됩니다.
    웹 서버 자체는 볼륨 서버와 클라이언트가 되어 클라이언트에서 자신의 볼륨을 마운트하여 연결합니다.
    물론 브룩을 늘리거나 줄여 시스템 구성을 변경할 수 있다.

    4. GlusterFS 환경

  • RHEL7 시스템
  • GlusterFS 4.1.5
  • 5. GlusterFS 서버 설정


    5-1. GlusterFS 서버 설치


    @ 웹 서버 1, 2$ sudo yum -y install centos-release-gluster $ sudo yum -y install glusterfs-server

    5-2. GlusterFS 서버 시작


    @ 웹 서버 1, 2$ sudo systemctl start glusterd $ sudo systemctl enable glusterd $ sudo systemctl status glusterd

    5-3. GlusterFS hosts 파일 설정


    @ 웹 서버 1, 2$ sudo vim /etc/hosts/etc/hosts
    10.0.0.1 web1.example.com
    10.0.0.2 web2.example.com
    

    5-4. GlusterFS 스토리지 풀 설정


    @웹 서버 1$ sudo gluster peer probe web2.example.com

    5-5. GlusterFS 스토리지 풀 확인


    @ 웹 서버 1, 2$ sudo gluster peer status

    5-6. GlusterFS 볼륨 만들기


    @ 웹 서버만 1$ sudo gluster volume create server replica 2 web1.example.com:/server/ web2.example.com:/server/ force

    5-7. GlusterFS 볼륨 정보 확인


    @ 웹 서버 1, 2$ sudo gluster volume info

    5-8. GlusterFS 볼륨 시작


    @웹 서버 1$ sudo gluster volume start server

    5-9. GlusterFS 볼륨 상태 확인


    @ 웹 서버 1, 2$ sudo gluster volume status

    6.GlusterFS 클라이언트 설정


    6-1. GlusterFS 클라이언트 설치


    @ 웹 서버 1, 2$ sudo yum -y install glusterfs glusterfs-fuse glusterfs-rdma

    6-2. GlusterFS 클라이언트에 서버 마운트


    @웹 서버 1$ sudo mkdir /client $ sudo mount -t glusterfs web1.example.com:/server /client $ sudo df -Th@웹 서버 2$ sudo mkdir /client $ sudo mount -t glusterfs web2.example.com:/server /client $ sudo df -Th

    6-3. GlusterFS 클라이언트:자동 마운트


    @웹 서버 1$ sudo vim /etc/fstab/etc/fstab
    web1.example.com:/server       /client   glusterfs       defaults,_netdev        0 0
    
    @웹 서버 2$ sudo vim /etc/fstab/etc/fstab
    web2.example.com:/server       /client   glusterfs       defaults,_netdev        0 0
    

    6-4. GlusterFS 동기화 테스트


    @웹 서버 1$ sudo cd /client $ sudo touch test.txt $ sudo ls@웹 서버 2$ sudo cd /client $ sudo ls $ sudo rm text.txt@웹 서버 1$ sudo ls

    7. 요약


    이 글에서, 우리는 분류 환경에서 각 웹 서버의 파일 시스템 사이를 GlusterFS와 같은 분산형 용착성 파일 시스템으로 동기화하는 방법을 투고해 보았다.
    이 솔루션을 활용하면 각 웹 서버의 소스 코드 처리 시간차에 따른 차이를 억제하고 협업 시스템의 연쇄적 과제와 시스템 규모와 관련된 과제를 해결할 수 있다.

    좋은 웹페이지 즐겨찾기