db01、web02、nfs

拆分数据库至独立服务器

| 为什么要进行数据库的拆分 |

由于单台服务器运行LNMP架构会导致网站访问缓慢,当内存被占满时,很容易导致系统出现oom从而kill屌MySQL数据库,所以要将web和数据库进行独立部署。


| 数据库拆分后解决了什么问题 |

1.缓解web网站的压力
2.增强数据库读写性能
3.提高用户访问速度


| 数据库拆分架构演变过程,如下图所示 |


| 数据库拆分 |

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

| 数据库拆分 |

1.web01网站服务器操作如下

1)备份web01上的数据库,lzy123.com是数据库密码

[root@web01 ~]# mysqldump -uroot -p'lzy123.com' -A > mysql-all.sql

2)将web01上备份的数据库拷贝至db01服务器上

[root@web01 ~]# scp mysql-all.sql  root@172.16.1.51:/tmp

2.db01数据库服务器操作如下

1)将web01服务器上推送的数据库备份文件恢复至db01服务器新数据库中

[root@db01 ~]# yum install mariadb mariadb-server -y
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# mysql -uroot -p'lzy123.com' < /tmp/mysql-all.sql

2)数据库导入完成后,重启数据库,使用新密码进行登录,并检查数据库已被导入成功

[root@db01 ~]# systemctl restart mariadb
[root@db01 ~]# mysql -uroot -plzy123.com
mysql> show databases;

3)在新数据库上授权,允许所有网段,通过all账户连接并操作该数据库

#授权所有权限   grant all
#授权所有库所有表 *.* 
#将授权赋予给哪个用户,这个用户只能通过哪个网段过来(%所有) 'all'@'%'
#授权该用户登录的密码 identified by

mysql> grant all on  *.* to lzy@'%' identified by 'lzy123.com';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3.web01修改代码连接新数据库环境

1)修改Wordpress产品代码连接数据库的配置文件

[root@web01 ~]# vim /code/wordpress/wp-config.php
# 数据库名称
define('DB_NAME', 'wordpress');
# 数据库用户
define('DB_USER', 'lzy');
# 数据库密码
define('DB_PASSWORD', 'lzy123.com');
# 数据库地址
define('DB_HOST', '172.16.1.51');

2)修改wecenter产品代码连接数据库的配置文件

[root@web01 zh]#  grep -iR "lzy123.com"|grep -v cache
system/config/database.php:  'password' => 'lzy123.com',
[root@web01 zh]# vim /code/zh/system/config/database.php
'host' => '172.16.1.51',
'username' => 'lzy',
'password' => 'lzy123.com',
'dbname' => 'zh',

3)最后访问网站,成功打开,至此拆分数据库完成

扩展多台相同的Web服务器

| 为什么要扩展多台web节点 |

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


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

1.单台web节点如果故障,会导致业务down机

2.多台web节点能保证业务的持续稳定,扩展性高

3.多台web节点能有效的提升用户访问网站的速度

3.多台web节点技术架构组成,如下图所示

[图片上传失败...(image-16c1d9-1616497425791)]

| 扩展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

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

通过web01现有环境快速的扩展一台web02的服务器,数据库统一使用db01

1)创建www用户

[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 www

2)安装LNP

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/pki/rpm-gpg/* /etc/pki/rpm-gpg/

[root@web02 ~]# yum install nginx -y
[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

3)将web01的nginx配置文件导入到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/nginx /etc/

4)将web01的php配置文件导入到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php-fpm.d /etc/

5)将web01的产品代码打包传输到web02服务器上,在web01上线进行打包操作

[root@web01 ~]# tar czf code.tar.gz /code
[root@web01 ~]# scp code.tar.gz root@172.16.1.8:/tmp

#在web02服务器上进行解压
[root@web02 ~]# tar xf /tmp/code.tar.gz -C /

6)最后启动nginx与php-fpm,并加入开机自启

[root@web02 ~]# systemctl start nginx php-fpm 
[root@web02 ~]# systemctl enable nginx php-fpm

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

| 为什么拆分静态资源至独立存储服务器 |

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


| 新增一台nfs存储解决了什么问题 |

1.保证了多台web节点静态资源一致。

2.有效节省多台web节点的存储空间。

3.统一管理静态资源,便于后期推送至CDN进行静态资源加速


| 多台web节点技术架构组成,如下图所示 |

| 环境准备 |

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

| nfs服务端,操作步骤如下 |

1) 安装并配置nfs

[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/blog 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)

2) 创建共享目录,并进行授权

[root@nfs01 ~]# mkdir /data/{blog,zh} -p
[root@nfs01 ~]# chown -R www.www /data/

3) 启动nfs服务,并加入开机自启

[root@nfs01 ~]# systemctl restart nfs-server

| web01端操作步骤如下 |

1) web01节点安装nfs,然后使用showmount查看服务端共享的资源

[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/zh   172.16.1.0/24
/data/blog 172.16.1.0/24

2) 如何查找Wordpress静态资源存放的位置

浏览器->右键->检查->Network->选择左上角的Select按钮->点击对应的图片,然后能获取到对应的url地址,如下
# http://blog.oldboy.com/wp-content/uploads/2018/11/timg.gif

3) 备份web01服务器上Wordpress的静态资源,因为该服务器上的资源资源最全

[root@web01 ~]# cd /code/wordpress/wp-content
[root@web01 wp-content]# cp uploads/ uploads_bak/

4) web01客户端执行挂载操作

[root@web01 wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/

#恢复对应的数据
[root@web01 wp-content]# cp -rp uploads_bak/* uploads/

5) 将挂载信息加入开机自启

[root@web01 wp-content]# tail -1 /etc/fstab 
172.16.1.31:/data/blog  /code/wordpress/wp-content/uploads nfs defaults 0 0
[root@web01 wp-content]# mount -a

| web02端操作步骤如下 |

1) web02客户端直接挂载nfs即可

[root@web02 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/

2) 将挂载信息加入开机自启

[root@web02 ~]# tail -1 /etc/fstab 
172.16.1.31:/data/blog  /code/wordpress/wp-content/uploads nfs defaults 0 0
[root@web02 ~]# mount –a
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • 代号C 第一章 LNMP架构概述 1.1 什么是LNMP LNMP 是一套技术的组合, L=Linux、 N=Ng...
    小镇青年Jack阅读 254评论 0 1
  • 第一章 LNMP架构概述 1.1 什么是LNMP LNMP 是一套技术的组合, L=Linux、 N=Nginx、...
    丶Daniel阅读 164评论 0 0
  • 1.LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,...
    吃可爱长大鸭阅读 156评论 0 1
  • 代号C-1 第一章 LNMP架构概述 1.1 什么是LNMP LNMP 是一套技术的组合, L=Linux、 N=...
    小镇青年Jack阅读 93评论 0 0
  • 1 什么是LNMP LNMP 是一套技术的组合, L=Linux、 N=Nginx、 M=MySQL、 P=PHP...
    吖吖坚阅读 260评论 0 1