扩展多台相同的Web服务器


Posted in Servers onApril 01, 2021

1.为什么扩展多台web节点

  • 单台服务器能抗住的访问量是有限的,配置多台web服务器能提升更高的访问速度

2.扩展多台web解决了什么问题

  • 单台web节点如有故障,会导致业务down机
  • 多台web节点能保证业务的持续稳定,扩展性能高
  • 多台web节点能有效的提升用户的访问网站的速度
  • 多台web节点技术架构组成,如下图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMYbGHGY-1616924617012)(00446E42E0EC4FEDAC3244002CD22BC4)]

3.扩展web环境

主机名称 应用环境 外网地址 内网地址
web01 nginx+php 10.0.0.7 172.16.1.7
web02 nginx+php 10.0.0.8 172.16.1.8
db01 mysql 10.0.0.51 172.16.1.51

4.快速扩展一台web节点详细步骤

  1. 准备一个web02的服务器172.16.1.8
  2. 把web01的nginx配置文件推送到web02上
[root@web01 ~]# scp /etc/yum.repos.d/nginx.repo 172.16.1.8:/etc/yum.repos.d/
[root@web01 ~]# rsync -avz --delete /etc/nginx/ 172.16.1.8:/etc/nginx/
  1. 安装nginx
[root@web02 ~]# yum -y install nginx
  1. 安装php-fpm
[root@web02 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web02 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@web02  ]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb --nogpgcheck
  1. 修改php-fpm的配置文件
[root@web02 code]# vim /etc/php-fpm.d/www.conf
  1. 将web01的code目录导入web02中
[root@web01 ~]# rsync -avz /code 172.16.1.8:/
  1. 启动php服务和nginx服务
[root@web02 code]# systemctl start php-fpm.service 
[root@web02 code]# systemctl start nginx

拆分静态资源到独立服务器

1.为什么拆分静态资源至独立服务器

  • 当后端的web节点出现多台时,会导致用户上传的图片,视屏附件等内容仅上传至一台web服务器,那么其他的web服务器则无法访问到该图片

2.增加nfs解决的问题

  • 保证了多台web节点静态一致.
  • 有效的节省多台web节点的存储空间
  • 统一管理静态资源,便于后期推送至CDN静态资源加速

3.环境准备

主机名称 应用环境 外网地址 内网地址
web01 nginx+php 10.0.0.7 172.16.1.7
web02 nginx+php 10.0.0.8 172.16.1.8
db01 mysql 10.0.0.51 172.16.1.51
nfs nfs 10.0.0.31 172.16.1.31

4.nfs端操作步骤

  1. 安装并配置nfs
[root@nfs ~]# yum -y install nfs-utils
[root@nfs ~]# cat /etc/exports
/data/wordpress 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 	172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/phpshe	 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
  1. 创建共享目录,并授权
[root@nfs ~]# mkdir -p /data/{wordpress,zh,phpshe}
[root@nfs01 ~]# chown -R www.www /data/
  1. 启动nfs服务,并加入开机自启
[root@nfs01 ~]# systemctl restart nfs-server
[root@nfs01 ~]# systemctl enable nfs-server

5.web02端操作步骤

  1. web02节点安装nfs,然后使用showmount查看服务端共享资源
[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/phpshe    172.16.1.0/24
/data/zh        172.16.1.0/24
/data/wordpress 172.16.1.0/24
  1. wordpress静态资源存放的位置
[root@web01 ~]#ll /wrodpress/wp-content/uploads/
  1. 推送数据到nfs服务器上
[root@web02 ~]# rsync -avz /code/wordpress/wp-content/uploads/ 172.16.1.31:/data/wordpress
  1. web02客户端执行挂载操作
[root@web01 wp-content]# mount -t nfs 172.16.1.31:/data/wordpress /wordpress/wp-content/uploads/
Servers 相关文章推荐
Nginx 负载均衡是什么以及该如何配置
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx配置https的实现
Nov 27 Servers
Nginx实现会话保持的两种方式
Mar 18 Servers
nginx共享内存的机制详解
Mar 21 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
git stash(储藏)的用法总结
Jun 25 Servers
nginx代理实现静态资源访问的示例代码
Jul 07 Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
Sep 23 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 Servers
Nginx安装完成没有生成sbin目录的解决方法
nginx location优先级的深入讲解
Mar 31 #Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 #Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 #Servers
Nginx域名转发使用场景代码实例
Mar 31 #Servers
提升Nginx性能的一些建议
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 #Servers
You might like
PHP模拟SQL Server的两个日期处理函数
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
python实现划词翻译
2020/04/23 Python
通过C++学习Python
2015/01/20 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
python中安装django模块的方法
2020/03/12 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
python支持多继承吗
2020/06/19 Python
Python实现自动签到脚本功能
2020/08/20 Python
客户表扬信范文
2014/01/10 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
高一英语教学反思
2014/01/22 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP