扩展多台相同的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已编译的nginx-添加新模块
Apr 01 Servers
Nginx进程调度问题详解
Sep 25 Servers
Apache Pulsar结合Hudi构建Lakehouse方案分析
Mar 31 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
nginx之queue的具体使用
Jun 28 Servers
nginx代理实现静态资源访问的示例代码
Jul 07 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Nginx如何限制IP访问只允许特定域名访问
Jul 23 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 Servers
apache虚拟主机配置的三种方式(小结)
Jul 23 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 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发送post请求的三种方法
2014/02/11 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
jQuery live
2009/05/15 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
JS原型与继承操作示例
2019/05/09 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
学生生病请假条范文
2014/02/16 职场文书
满月酒主持词
2014/03/27 职场文书
开服装店计划书
2014/08/15 职场文书
个人委托书如何写
2014/09/25 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL