扩展多台相同的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部署多前端项目的几种方法
May 25 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
nginx配置虚拟主机的详细步骤
Jul 21 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
nginx日志格式分析和修改
Apr 28 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 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创建session的方法实例详解
2015/01/27 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
php探针不显示内存解决方法
2019/09/17 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
jquery获取节点名称
2015/04/26 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
Python callable()函数用法实例分析
2018/03/17 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
演讲稿怎么写
2014/01/07 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
暑期培训心得体会
2014/09/02 职场文书
门面房租房协议书
2014/12/01 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Linux中sftp常用命令整理
2022/06/28 Servers