扩展多台相同的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服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
详解nginx location指令
Jan 18 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
源码安装apache脚本部署过程详解
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 采集程序 常用函数
2008/12/18 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
python解析xml文件实例分析
2015/05/27 Python
python读取xlsx的方法
2018/12/25 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
python 变量初始化空列表的例子
2019/11/28 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
国际贸易专业推荐信
2013/11/15 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
公司总经理岗位职责
2015/04/01 职场文书
公司催款律师函
2015/05/27 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL