短视频系统跟直播系统有一样的特点,面向的用户群体数量较大,聚集时间点集中。比如午饭时间,晚上休闲时间。所以做好系统的负载特别重要,既能提高系统的稳定性和可用性,从侧面来讲也能提高用户的体验和用户留存。 负载均衡的表述性解释咱不再说明,自行谷歌或百度即可。这里主要介绍两种负载均衡的方案。 方案一:使用运营商成熟的方案,比如阿里云的负载均衡 SLB,腾讯云的负载均衡 CLB。这些成熟的方案稳定性高,运维成本低。只需要日常维护后端服务即可,不过除非你是一定量级的大客户,否则无法个性定制。 方案二:自建负载均衡,该方案需要有基础的运维能力。需要运维人员持续跟踪,可以自由扩展定制。前期数量级小的话,建议走这种方案。后期数量级大的话,还是走方案一比较稳妥一些。 这里介绍下方案二自建负载均衡的方式。按照最小方案来举例说明,均用 1 核 1G5M 带宽的服务器。注意:后期上线需要根据自身业务的情况进行配置扩展,这里是做演示举例用最低配置即可。 一、首先需要准备相关资料,如下: 1.系统域名 2.Nginx 负载服务器 1 台(用于前台分发)。 3.Web 后端服务器 2 台(配置 PHP 环境,放置管理后台和接口) 4.Mysql 数据库服务器 1 台(配置数据库) 5.Redis 缓存服务器 1 台(配置缓存) 6.Session 共享服务器 1 台(共享数据 Session ) 7.以上服务器必须存在一个内网中,响应速度等体验会好一些。
二、其次将各个服务器按照原始系统的搭建方式进行依次搭建。这里重点说明下 Nginx 负载服务器和 Session 缓存服务器的搭建和配置方式。 1.Nginx 负载服务器的搭建,假设入口域名是 yunbaozhibo.com
1.1 安装 pcre (依次操作) 获取 pcre 编译安装包,在在 pcre.org/上可以获取当前最新的版本。 解压缩 pcre-xx.tar.gz 包 进入解压缩目录,执行./configure 执行安装 make & make install
1.2 安装 openssl (依次操作) 获取 openssl 编译安装包,在 openssl.org/source/上可以获取当前最新的版本。 解压缩 openssl-xx.tar.gz 包 进入解压缩目录,执行./config 执行安装 make & make install
1.3 安装 zlib (依次操作) 获取 zlib 编译安装包, zlib.net/上可以获取当前最新的版本 解压缩 zlibxxx.zip 包。注:这里的 tar 包应该是有问题,没法命令解压,只能换 zip 包 进入解压缩目录,执行./configure 执行安装 make & make install 1.4 安装 Nginx 获取 nginx,在 nginx.org/en/download.html 上可以获取当前最新的版本 解压缩 nginx-xx.tar.gz 包 进入解压缩目录,执行./configure 这里会自动关联上边的三个组件 执行安装 make & make install
1.5 配置相关信息 安装完成后,nginx 在 /usr/local/nginx 中, nginx.conf 在该文件下的 conf 中 nginx 启动在 sbin 中。 配置 nginx.conf 文件 在 http{}中的 server{}前添加 upstream yunbaozhibo.com{ ip_hash; #第一次配置负载用 ip_hash 来处理 session,后期修改为 session 复制 server 192.168.7.11:80; #这里是 web 服务器的内网 ip server 192.168.7.22:80; #这里是 web 服务器的内网 ip #这里最好加一个简单的后备 server,web 全挂后跳转到他,友情提示下服务器正在维护。 } 在 http{}中的 server{}中的 location /{}添加 proxy_pass yunbaozhibo.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X_Forwarded-For $proxy_add_x_forwarded_for; 配置完后,启动 nginx /usr/local/nginx/sbin/nginx
2.Session 服务器的配置,假设 Session 的服务器 ip 为 192.168.7.2。Redis 端口为 1122 这里的 Session 服务器是使用 Redis 来缓存共享 Session 的。 2.1 正常安装并启动 Redis 服务 2.2 找到 web 服务器中的 php.ini 文件,修改如下 找到;session.save_handler = files 改为 session.save_habdler = redis 找到;session.save_path = “/tmp ” 改为 session.save_path = “ tcp://192.168.7.2:1122 ”
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.