안녕하세요 궁금한게 있어서 질문 드립니다 워드 프레스 사이트를 ELB로 로드밸런싱하고…

안녕하세요 궁금한게 있어서 질문 드립니다

워드 프레스 사이트를 ELB로 로드밸런싱하고 상시 두 대의 인스턴스가 돌도록 되어 있고 AutoScaling으로 피크때 인스턴스를 5개까지 증가하도록 셋팅했습니다 디비를 RDS로 사용하고 있습니다

여기서 질문입니다
유저가 이미지 또는 파일이 포함된 글을 포스팅하게 되면 한 쪽 서버에 반영되어 업로드 폴더에 파일이 올라갈 텐데 다른서버에도 업로드 된 파일을 동기화 시켜야 유저가 다른 서버에 접속했을 때 이미지 또는 파일이 보이게 될텐데 이 동기화를 어떻게 시키시나요

25 thoughts on “안녕하세요 궁금한게 있어서 질문 드립니다 워드 프레스 사이트를 ELB로 로드밸런싱하고…

  1. S3가 아니라고 한다면…
    1. 마스터 인스턴스 1개를 둔다고 가정할 때 추가된 인스턴스에서 마스터의 uploads 폴더 등을 NFS(Network File System) 로 mount 해서 사용하는 방법.
    2. CDN 을 이용하는 방법 정도가 생각나네요.

  2. 저도 S3를 사용하는 방법으로 하였는데요 글 쓰기할 때 이미지를 업로드하거나 할 때 시간이 1분 이상 걸리는 경우도 있어서요… 이게 정상적인 범위인지 아님 문제가 있는 건지 모르겠네요

  3. 보통 같은 리전의 EC2와 S3 간의 통신은 매우 빠른 시간 내에 가능한데요, 리전이 같고 이미지 개수/용량이 그리 크지 않은 경우에도 1분씩 걸린다면 문제가 있는 것으로 보입니다. 로직상 비효율적인 콜이 많다거나 썸네일을 업로드 시점에 동기(synchronous)로 만든다거나 하지 않는지 살펴보셔요.

  4. 저희 같은 경우 같은 tokyo에서 s3와 ec2간 수백MB단위의 파일도 초단위로 처리하고 있습니다~ 김현준님이 말씀하신대로 1분 이상 걸리는건 다른 문제가 있는걸로 보여집니다

  5. 글쓰기를 할 때 미디어 추가 버튼을 눌러서 나오는 이미지 라이브러리 로딩이 1분이상 걸리는 것인데 이미지 파일 용량들은 커봐야 400KB정도입니다. 전체 이미지 수는 70개 정도입니다.
    특별히 로직이랄 것도 없이 워드프레스의 기본기능을 사용하는 것인데 시간이 걸리네요..s3fs가 조금 느리다는 이야기는 들었습니다만 이것 때문에 이렇게 느려지는 것인지 아니면 다른 무언가가 문제인지 모르겠네요

  6. 음….그럼 유저들이 로드밸런싱된 서버에 글을 쓰거나 할 때 같이 업로드 되는 이미지나 파일 같은 것은 제가 한 방법말고 좀 더 효율적인 방법이 있을까요?

  7. 웹서버들이 분산되어있기 때문에 로컬 파일시스템을 항상 동기화 상태로 유지한다는 접근 대신에, 아예 로컬에 데이터를 저장하지 않고 external (shared) storage 를 사용하시 것으로 보시면 됩니다. s3 에 저장해두면 오토스케일링에 따라 웹서버가 제거되어도 영향을 받지 않으며, 여러대의 웹서버에서 동일한 스토리지를 바라보게 되므로 동기화 이슈도 없게 되지요.

    이 때 s3 는 애초에 파일시스템이 아니라 HTTP로 통신하는 일종의 key-value storage기 때문에 s3fs 등을 사용해 웹서버에 마운트시켜 사용하는 경우 성능 저하가 큰 것으로 보입니다. 때문에 직접 구현한다는 것은 업로드/다운로드 서버 로직에서 직접 S3 API를 콜하도록 만든다는 의미입니다.

    다만 코드 변경이 필요하므로 fs를 사용하는 구조로 가고 싶으신 경우 성능 향상을 위해 Taeho Kim님이 링크 주신 EFS 라던지 HoonJoon Park님이 설명해주신대로 별도의(혹은 제거되지 않을 것으로 보장할 수 있는) 서버의 파일시스템을 네트웍 마운트해서 사용하는 방법이 더 편리할 수도 있겠습니다.

  8. AWS에서 NFS를 제공하는군요…근데 아직 평가판인데다가 오레곤리전뿐이라 실제 서비스에 도입하기에는 조금 무리지 않을까 싶네요.
    별도의 NFS서버를 도입하는 방법과 현재를 유지한 상태에서 클라우드 프론트를 도입하는 방법 어떤것이 좋을까요..비용면에서, 퍼포먼스면에서..

  9. 상시 2대의 인스턴스는 구동되도록 하셨으니 해당 2 인스턴스들 중 한 서버의 파일시스템에 다른 서버들이 nfs 로 붙어 사용하도록 하시면 어떨까요? 오토스케일링 그룹을 2개로 분리하시면 최대 5대까지 늘어났다가 추후 줄어드는 서버들이 해당 2대 중에 선택되어 제거되지 않도록 만들 수 있습니다.

  10. 네 덧붙여, 현재 구조에서 cloudfront 붙이는건 겪고계신 이슈에 대한 해결책은 아닐 것으로 보입니다, 현재 말씀하신 구조상 cf 로는 유저 레벨에서의 다운로드 성능만 높일 수 있어요.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.