Giải pháp CDN cho site ảnh

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Thanh Nguyen, Aug 6, 2019.

Thread Status:
Not open for further replies.
  1. money

    money Hương Chủ

    Site nào cũng dùng dc.
     
  2. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Bro nói Quá chuẩn. Site nào cũng dc. Không riêng gì wordpess.
     
  3. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Qua bài viết trên, mình xin phép chia sẻ chút về kinh nghiệm làm site phim cho cậu em của mình.(mình nghĩ có thể áp dụng cho site ảnh).

    Tóm tắt như sau:
    Mình hỏi:
    Em lưu trữ phim ở đâu? Trả lời: VPS hoặc máy chủ, không lưu các dịch vụ trung gian anh ạ(không hỏi lí do phần này, mình tự hiểu cu cậu sợ report hoặc bị xóa).
    Dung lương lưu trữ ước tính hiện tại: Trả lời : 1TB. (cũng bình thường)
    Visit trung bình 1 ngày bao nhiêu? Trả lời 10K visit hiện tại. (có vẻ hơi ít)
    Tiền đâu tư có thể? Trả lời: ít nhất có thể 100$ đến 200$ (bao gồm tất cả lưu trữ, VPS, băng thông anh nhé, mình không hỏi doanh thu của cu cậu, do nó chỉ hỏi vấn đề kỹ thuật).

    Suy nghĩ:
    Sau khi tính toán thì mình ước tính như sau.
    Lưu trữ 1TB phim nên lưu trữ tại block storage, sau này mở rộng nâng cấp hoặc cắm thêm.
    Băng thông trung bình cho 1 visit/ 1 ngày tạm tính 1GB(có thể cao hơn). 10K visit x 1GB = 10TB

    Vậy một tháng nó đốt khoảng 10TB x 30 = 300TB.

    Cũng không cao lắm, nhưng cũng không nhỏ đâu.

    Lựa chọn nhà cung cấp VPS:
    https://www.hetzner. com/cloud , mình quyết định chọn thằng này, tại sao lại như vậy?
    Lưu ý: thằng này để bảng giá tiền euro anh em à.

    Trả lời: Mỗi VPS nó cho tối đa băng thông 20TB, không giới hạn INCOMING TRAFFIC, không tính băng thông Private Network.
    Vậy mình cần 15 VPS trở lên. Lấy con số 16 VPS đi. 20TB X 16 = 320TB là thừa rồi. (vượt quá thì tạo thêm VPS)
    Lưu trữ BLOCK STORAGE VOLUMES cho 1TB ở đây là € 40,96, xấp xỉ 47,9$
    VPS chính: VPS lưu trữ code và database (Mysql) chọn VPS gói tạm 15,9 euro đi (4vCPU - 16GB ram), có gì theo dõi chỉ số CPU, Ram VPS rồi nâng cấp sau, xấp xỉ 18,6$

    15 VPS: 2.49 euro (1vCpu - 1GB ram, băng thông 20TB), thành tiền 2.49 x 15 = 37,35 euro, xấp xỉ 43,5$.

    Tổng tiền: 47,9$ + 18,6$ + 43,5$ = 110$. (đạt giới hạn tiền đầu tư cho phép)

    Cài đặt và cấu hình:
    Đặt tất cả VPS vào 1 network chung. với ip như từ 10.0.0.2 đến 10.0.0.17

    1.Tại VPS chính(chứa source) 10.0.0.2:
    - cài đặt các dịch vụ web nginx, php, mysql.
    - Gắn ổ cứng 1TB vào, mount thành 1 folder để sau này upload phim vào đây(cài đặt sub domain là server.domain.com cho folder này).
    - Cấu hình Nginx split_clients: chuyển tiếp cho 15 VPS
    - Cài đặt NFS Server để chia sẻ folder upload phim cho 15 VPS còn lại.
    - Cài đặt vnStat để kiểm tra băng thông vps

    2. Tại 15 VPS còn lại:
    - Cài đặt nginx và php. (không cài Mysql làm gì cả)
    - Cài đặt NFS Client để mount folder upload phim. Cài đặt mỗi VPS là 1 sub domain từ s1.server.domain.com đến s16.server.domain.com)
    - Cài đặt vnStat để kiểm tra băng thông cho mỗi vps

    3. Kết quả:
    - Mỗi post khi đưa link phim vào (bạn có thể mã hóa hoặc không), link phim có dạng server.domain.com/link-abc.xxx (xxx: là đuôi định dạng phim)
    - Nginx split_clients: server.domain.com sẽ tự động chuyển tiếp đến 15 VPS (s1.server.domain.com đến s16.server.domain.com) còn lại để chia đều traffic.
    - Sau 1 tháng test thử nghiệm cu cậu báo OK. Mình thở phào ổn nhỉ.
    - Băng thông tạm thời chưa vượt quá.

    Cu cậu hỏi thêm, nếu sau này vượt quá băng thông em phải làm gì, trả lời: SNAPSHOTS lại 1 trong 15 VPS 2.49 euro, rồi cấu hình thêm vào là dc.
    Em muốn mở rộng lưu trữ, trả lời: mua thêm BLOCK STORAGE VOLUMES rồi muount vào.

    P/s: chi tiết các bước làm sẽ phức tạp hơn. Mình không thể trình bày rõ. Có thể làm topic riêng nếu anh em yêu cầu.

    Cảm ơn anh em đã đọc. Và mong anh em cho ý kiến.
     
    Last edited: Aug 26, 2019
  4. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Bảng giá euro là do thằng này dùng tiền euro ( nó là công ty của Đức, nên dùng đồng tiền chung châu âu là euro), chứ liên quan gì đến dmca.

    Bài trên chỉ là hướng dẫn chia tải cho băng thông thôi.

    Tránh dmca thì phải dùng reproxy, bằng cách mua vps ở Nga để ẩn ip vps chính nhé.
     
    Last edited: Aug 26, 2019
    Thanh Nguyen and Nam like this.
  5. sincos

    sincos Bang Chúng

    Thanh Nguyen and xmenvn2510 like this.
  6. no-reply

    no-reply Bang Chúng

    Vụ copyright này e thấy nhiều bác trên forum mình vẫn còn chưa hiểu rõ bản chất nhỉ. Luật bản quyền thì gần như nước nào cũng có nhé, VN mình cũng có, mỗi nước mỗi kiểu. Ở Mĩ thì là DMCA còn ở châu Âu cũng có luật bản quyền của riêng họ nhé. Nó mà đâm đơn kiện thì vẫn bay acc như thường nhé. Cái DMCA hay được nhắc nên nhiều bởi vì nó là luật của Mĩ mà phần lớn các ông lớn internet đều nằm ở Mĩ.
     
    Thanh Nguyen likes this.
  7. Nai

    Nai MiddleMan Staff Member

    Theo như mình đọc và hiểu thì 320TB sẽ chia đều cho 16 VPS vì mỗi VPS được hỗ trợ tối đa 20TB (theo như nơi mà em của bác đăng ký sử dụng).
    Ví dụ phim ABC+XYZ+.....+n lưu ở srv1.domain.com có tổng traffic là >20TB (hoặc hơn nữa) thì vẫn xảy ra tình trạng thiếu băng thông đối với các bộ phim đó như thường đúng không?
    Nếu vậy thì chắc cũng cần code lại phần này để có thể detect được những nhóm phim hot để cho nó nằm ở srv có phim ít hot nhất, như vậy bài toán sẽ lý tưởng như bác chia sẻ :D
     
    Thanh Nguyen likes this.
  8. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Bạn chưa hiểu vấn đề ở đây rồi, ở đây Nginx split_clients sẽ phân tải đều cho tất cả các vps. Server.domain.com chỉ đóng vai trò trung gian để điều phối cho user xem ở 15 vps còn lại.

    Phim lưu tại BLOCK STORAGE VOLUMES ở VPS chính, nhưng được mount vào tất cả 15 vps còn lại, nên tất cả các vps này đều chứa phim luôn.

    15 vps đóng vai trò như 15 luồng độc lập,
    nhưng link phim chỉserver.domain.com/link-abc.xxx

    Tìm hiểu Nginx split_clients bạn sẽ hiểu: http://nginx.org/en/docs/http/ngx_http_split_clients_module.html
    Không có srv1.domain.com, mà chỉ có server.domain.com và s1.server.domain.com đến s16.server.domain.com.

    Link phim là server.domain.com/link-abc.xxx sẽ tự động chuyển tiếp đến từ s1.server.domain.com --> s16.server.domain.com.
    Server.domain.com chỉ làm nhiệm vụ chuyển tiếp redirect mà thôi, không có băng thông nào trên cái Server.domain.com này bạn nhé.

    @Nai Cấu hình để chia tải băng thông mà lại để tình trạng thiếu băng thì mình đâu post bài này.

    P/s: Cấu hình vps chính thành s16.server.domain.com mới đủ. Bên trên, quên chưa nói
     
    Last edited: Aug 26, 2019
    Nai, Thanh Nguyen and Nam like this.
  9. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Cảm ơn bro quá khen. Chủ yếu là tinh thần chia sẻ. Khi chia sẻ biết đâu mình nhận được ý kiến hay và giải pháp tốt.
    Và cầu thị anh em chia sẻ thêm.
     
    Thanh Nguyen likes this.
  10. Thanh Nguyen

    Thanh Nguyen Bang Chúng

    Đa tạ cụ. Đúng là càng đào sâu càng thấy kiến thức mình nông cạn. Đúng là e số hưởng thật. Những cái này đâu dễ gì được ai chia sẻ đâu. Nay được bác bày tường tận vậy. Xin đa tạ {adore}{adore}{adore}
     
    xmenvn2510 likes this.
  11. Nai

    Nai MiddleMan Staff Member

    Nếu mình hiểu sai thì có nghĩa là Giả sử có 1 bộ phim 20TB đang chứa trên s1.server.domain.com và nếu có 2 user xem hết bộ phim đó từ đầu tới thì vẫn không hết băng thông giữa chừng (Có nghĩa là 320TB còn 280TB).
    Nếu mà ý bôi đen là đúng thì mình thấy hết sức vô lý vì s1.server.domain.com chỉ được tối đa 20TB. Nhưng nếu phim ko được lưu 100% ở 1 server mà lưu rải rác đều ở 16 server theo kiểu na ná như RAID-5 của mấy ổ cứng thì mới đỡ vô lý :D. Nhưng theo bác trình bày thì lưu nguyên cục luôn chứ không phân tán nên vô lý vẫn còn
     
    Last edited: Aug 26, 2019
  12. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Hiểu nôm nay thế này @Nai nhé:
    Nếu 1 phim dung lượng 20TB thì bó tay thật. Điều đó là không thể. Vì load xem 1 phim dung lượng như vậy thì chắc bó tay.
    Còn 1 bộ phim dung lượng 20TB thì nó sẽ chia nhỏ ra nhiều link phim chứ.

    Link phim server.domain.com/link-abc.xxx, user 1 vào xem thì nó sẽ được chuyển tiếp xem ngẫu nhiên từ s1.server.domain.com đến s16.server.domain.com, cái này server.domain.com sẽ tự động chuyển tiếp (nó sẽ ưu tiên vps nào có ít người xem nhất, Thuật toán Least Connection:
    Đây là thuật toán dựa trên tính toán số lượng kết nối để thực hiện cân bằng tải cho Vps(máy chủ), nó sẽ tự động lựa chọn vps (máy chủ) với số lượng kết nối đang hoạt động là nhỏ nhất.)

    User tiếp theo , rồi đến User N thì sẽ vẫn xem tại VPS có ít người nhất.

    Bạn view source code trình duyệt là server.domain.com/link-abc.xxx. nhưng lại là đang xem tại
    s1.server.domain.com/link-abc.xxx hoặc s2.server.domain.com/link-abc.xxx cho đến s16.server.domain.com/link-abc.xxx

    Quan trọng nhất là cấu hình để làm sao cho băng thông 15vps không thằng nào vượt quá, vậy mới gọi là chia tải chứ.

    @Nai:
    Nhưng theo bác trình bày thì lưu nguyên cục luôn chứ không phân tán nên vô lý vẫn còn.
    Tìm hiểu cơ chế Mount và chia sẻ NFS.
     
    Last edited: Aug 26, 2019
    Nai likes this.
  13. Mr Ghost

    Mr Ghost Sơ Nhập Giang Hồ

    ủng hộ @xmenvn2510 làm môt topic riêng chuyên sâu về vấn đề này để anh em theo dõi kỹ hơn.
     
    xmenvn2510 likes this.
  14. sincos

    sincos Bang Chúng

    Đúng thế.... cho đi để nhận lại... nay được cụ share thì có mỗi HP kia là thông tin có giá trị đối với mình. Thấy BW 20 TB là mê rồi, nghía qua thấy port shared 10Gbps là mê nốt.

    Còn vụ split trước tớ hay làm bằng code... nay cụ nói thì có thêm 1 lựa chọn nữa. {big_smile}{big_smile}

    @Nai : Vụ split dù cố gắng vẫn sẽ có sự không đồng đều tuyệt đối được nếu dùng cạn BW sẽ có con hết trước, con hết sau. Tuy nhiên nó cũng không quá chênh lệch đâu cụ. Yên tâm mà dùng.
     
  15. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    HP là gì nhỉ bro? Hetzner.com chứ.
    Thấy anh em toàn Do với Vultr, linnode. Nói thật là băng thông thì ít, giá thì đắt, hơn cái local ở châu á. Nhưng mình thấy thằng này tại Đức mà load cũng không kém phần long trọng. Mình đã dùng qua bao mùa đứt cáp quang thấy load ổn, tương lai thì không biết.
    Mình tính không thích tranh luận, thấy cái nào hợp thì mình dùng.
    Hetzner thì Port với BW thì quá tuyệt.

    {Vụ split dù cố gắng vẫn sẽ có sự không đồng đều tuyệt đối}
    Chuẩn luôn. Làm gì có cái gì là đồng đều tuyệt đối đâu. Một 9, một 10 thôi bro à.
     
  16. money

    money Hương Chủ

    @xmenvn2510 làm thớt riêng đi em. Anh cũng có mấy câu hỏi mà để qua thớt mới mần luôn.
     
  17. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Ok bro. Để e cho các cháu ngủ đã. E bận hai con mọn nên a e chờ xíu.
     
  18. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

  19. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    cám ơn bác đã chia sẻ
    mong có 1 bài hướng dẫn cụ thể <3

    - đó giờ mình toàn dùng rsync xong cái crontab theo thời gian 30p 1 lần quét xem có file mới ko. (delay chậm nhất 30p để đưa từ server 1 sang sv2).
    bác làm dc đồng bộ ngay và luôn thì tuyệt thật. (không biết đồng bộ cho site chính dc ko ? từ code + data qua sv dự phòng. tại có mấy lần nhậu về bấm xoá mẹ cái data rồi phải dùng lại cái chậm cả chục ngày :()
    - rồi cái chia băng thông đều cho vps nữa cũng muốn biết :p (tìm hiểu thôi chắc tương lai sẽ dùng)
     
  20. sincos

    sincos Bang Chúng

    HP. Viết tắt của Hosting Provider
     
    xmenvn2510 likes this.
Thread Status:
Not open for further replies.