nginx架构演进-拆分数据库及nfs

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

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

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

1.缓解web网站的压力

2.增强数据库的读写性能

3.提高用户访问的速度

3.数据库拆分架构

4.如何将LNMP拆分为LNP+MySQL

4.1备份172.16.1.7上的数据库信息

[[email protected] ~]# mysqldump -uroot -p‘oldxu.com‘ --all-databases > mysql-all.sql

4.2将172.16.1.7上的数据推送至172.16.1.51

[[email protected] ~]# scp mysql-all.sql [email protected]:/tmp

4.3登录172.16.1.51恢复数据

[[email protected] ~]# yum install mariadb mariadb-server -y
[[email protected] ~]# systemctl enable mariadb
[[email protected] ~]# systemctl start mariadb

读取sql文件至数据库中

[[email protected] ~]# mysql -uroot < /tmp/mysql-all.sql
[[email protected] ~]# systemctl restart mariadb

配置一个远程用户,允许其他服务器能通过远程的方式连接

mysql -u数据库名 -p数据库密码

MariaDB [(none)]> grant all privileges on *.* to ‘all‘@‘%‘ identified by ‘oldxu.com‘;
MariaDB [(none)]> flush privileges;

4.4将172.16.1.7程序连接至本地的数据库,修改为远程的数据库(应用割接)

[[email protected] ~]# systemctl disable mariadb
[[email protected] ~]# systemctl stop mariadb

4.5修改对应的数据的配置文件

[[email protected] wordpress]# find ./ -type f  | xargs grep "oldxu.com"
    ./wp-config.php:define( ‘DB_PASSWORD‘, ‘oldxu.com‘ );

    /** WordPress数据库的名称 */
    define( ‘DB_NAME‘, ‘wordpress‘ );

    /** MySQL数据库用户名 */
    define( ‘DB_USER‘, ‘all‘ );

    /** MySQL数据库密码 */
    define( ‘DB_PASSWORD‘, ‘oldxu.com‘ );

    /** MySQL主机 */
    define( ‘DB_HOST‘, ‘172.16.1.51‘ );

    wecenter
    [[email protected] zh]# find ./ -type f  | xargs grep "oldxu.com"
    ./system/config/database.php:  ‘password‘ => ‘oldxu.com‘,

    edusoho
    [[email protected] edusoho]# find ./ -type f  | xargs grep "oldxu.com"
    ./app/config/parameters.yml

    清理缓存
    [[email protected] edusoho]# rm -rf /code/edusoho/app/cache/*

5.扩展多台web节点,简称web集群

5.1准备一台172.16.1.18的服务器

5.2确保172.16.1.8上安装Nginx PHP

yum -y install nginx 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

5.3确保172.16.1.8 nginx配置 代码和172.16.1.7一致

5.4.1创建用户和用户组

[[email protected] ~]# groupadd -g 666 www
[[email protected] ~]# useradd -u666 -g666 www

5.4.2切到172.16.1.7上执行如下的操作

[[email protected] ~]# rsync -avz --delete  /etc/nginx [email protected]:/etc/
[[email protected] ~]# rsync -avz --delete  /etc/php.ini [email protected]:/etc/
[[email protected] ~]# rsync -avz --delete  /etc/php-fpm.d [email protected]:/etc/

5.4.3打包代码

[[email protected] ~]# tar czf code.tar.gz /code

5.4.4拷贝代码

[[email protected] ~]# scp code.tar.gz [email protected]:/tmp
5.5回到172.16.1.8  然后解包  授权  重启服务,并加入开机自启

[[email protected] ~]# tar xf /tmp/code.tar.gz -C /
[[email protected] ~]# systemctl restart nginx php-fpm
[[email protected] ~]# systemctl enable nginx php-fpm

6.如何将多台节点的静态资源共享至NFS

6.1准备172.16.1.31nfs存储服务器

6.1.1安装

[[email protected] ~]# yum install nfs-utils -y

6.1.2配置

[[email protected] ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 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)
6.1.3初始化环境

[[email protected] ~]# mkdir -p /data/{blog,zh,edu}
[[email protected] ~]# groupadd -g 666 www
[[email protected] ~]# useradd -u666 -g666 www
[[email protected] ~]# chown -R www.www /data/
6.1.4启动

[[email protected] ~]# systemctl enable nfs
[[email protected] ~]# systemctl restart nfs

6.2找到web存储的图片所在的路径 http://blog.oldxu.com/wp-content/uploads/2019/09/tt.jpeg

[[email protected] wp-content]# mv uploads/ uploads_bak
[[email protected] wp-content]# scp -rp uploads_bak/* [email protected]:/data/blog/
[[email protected] wp-content]# mkdir uploads

6.3在 172.16.1.7 172.16.1.8 ....  应用服务器上进行挂载

[[email protected] wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads

S: 注意权限问题
    [[email protected] ~]# chown -R www.www /data/
 6.4.访问网站 测试

原文地址:https://www.cnblogs.com/hh-y/p/11552515.html

时间: 2024-10-11 19:53:20

nginx架构演进-拆分数据库及nfs的相关文章

SQL or NoSQL? 从存储的架构演进看数据库选型

一.前言 你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼?你是否在各种NoSQL间纠结不定,到底该选用哪种最好?今天的你就是昨天的我,这也是写这篇文章的初衷. 这篇文章是我好几个月来一直想写的一篇文章,也是一直想学习的一个内容,作为互联网从业人员,我们要知道关系型数据库(MySQL.Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要.同时也由于过去一段时间的工作经历,对这块有了一些更多的思考,想通过自己的总结把这块写出来分享

大型网站架构演进(2)数据库与应用服务器分离

随着用户量和并发数的增加,单台服务器出现了性能问题,此时必须要将应用程序和数据库分离,分离后整个网站变成三台服务器了:应用服务器(或称web服务器),数据库服务器和文件服务器.这三台服务器对服务器的配置要求是不一样的,应用服务器需要处理大量的业务逻辑,所以需要更快更强大的CPU,数据库服务器需要快速磁盘检索和数据缓存,所以需要更快的硬盘(现在一般使用SSD)和更大的内存,文件服务器需要存储大量用户上传的文件,所以需要更大容量的硬盘. 数据库与应用服务器分离的架构 数据库与应用服务器分离后明显提升

大型网站架构演进(5)数据库读写分离

在使用缓存后,使大部分的数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(包括未命中缓存的,和缓存过期的)和全部的写操作需要访问数据库,当网站的访问量继续增加后,数据库会因为负载压力过高导致成为网站的性能瓶颈. 目前大部分的主流数据库都提供了主从热血功能,通过配置两台数据库的主从关系,可以将一台数据库服务器的数据同步到另一台服务器上,网站利用数据库的这一功能,可以实现数据库的读写分离,从而改善数据库的负载压力. 应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据

SpringCloud 亿级流量 架构演进

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy-SpringCloud 微服务脚手架 &视频介绍: Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架.并配有一系列的使用教程和视频,大致如下: 高并发 环境搭建 图文教程和演示视频,陆续上线: 中间件 链接地址 Linux Redis

【IT名人堂】何云飞:阿里云数据库的架构演进之路

[IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 ? 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”,阿里云将打造一个像淘宝电商一样多方共赢的云生态.而作为阿里云庞大帝国的重要成员,阿里云RDS为社交网站.电子商务网站.手机App提供了可靠的数据存储服务.好的架构不是设计出来的,而是演化出来的,那么RDS经历了怎样的架构演进?本期名人堂我们邀请到了阿里云RDS首席产品架构师何云飞,为我们揭秘RDS的

LAMP架构演进到LAMPGC,再演进到LNMLGC(linux+nginx+mysql+lua+gearman+C)

LAMP是一个大众的架构了,linux+apache+mysql+php 在我们系统的架构中,做了进一步的演进,linux+apahce+mysql+php+gearman+C php作页面的展示 核心业务逻辑由C语言实现,php通过gearman中间件调用C任务 由于apache在高并发方面不太给力,因此在需要高并发的场景中,我们进一步演进,linux+nginx+mysql+php+lua+gearman+C 页面部分由nginx+fastcgi+php-fpm来展示 高并发的业务调用由ng

云数据库架构演进与实践

  如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求. 微服务,也就是一种面向服务的,有特定边界的松散耦合的架构. 主要特点包括,每一个微服务是一个独立的自治系统,可以不依赖外部组件独立运行:对应用只暴露接口,用户可以灵活的调整过每个微服务的使用:业务粒度足够小. 在企业架构"云化"的过程中,数据库的云化是最为重要也是难度较大的一个部分.数据库云平台(dbPaaS)是一类支持弹性扩张.多租户.自我管理.并

今日头条架构演进之路

今天给大家分享今日头条架构演进,前面几位讲师讲了很多具体的干货,我的分享偏重基础设施及架构思路的介绍,我们想法是通过提供更好的基础设施,帮助架构做更好的迭代. 从架构的角度,技术团队应对的压力最主要来自三方面: 服务稳定性.接口的稳定性,让服务更可靠: 迭代速度.迭代速度对于大公司来讲相对没那么重要,规模比较大,生存压力相对小一点,但相对中型小型公司来讲,迭代速度是必须要保证的,时间窗也是一个决定能否成功的重要因素: 服务质量.主要关注用户满意度,它也是一个特别重要的 topic. 今日头条发展

亿级商品详情页架构演进技术解密 | 高可用架构系列

亿级商品详情页架构演进技术解密 | 高可用架构系列 --http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&idx=1&sn=3be9d2b53c7fec88716ee8affd2515f8&scene=1&srcid=UfXZNNOVZZyZjQmp0VOh&from=groupmessage&isappinstalled=0#rd 此文是开涛在[三体高可用架构群]之分享内容