没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
LAMP 企业架构读写分离
LAMP+Discuz+Redis 缓解了 MYSQL 的部分压力,但是如果访问量非常大,Redis 缓存
中第一次没有缓存数据,会导致 MYSQL 数据库压力增大,此时可以基于分库、分表、分布
式集群、或者读写分离来分担 MYSQL 数据库的压力,以读写分离为案例,来实现分担 MYSQL
数据库的压力。
MYSQL 读写分离的原理其实就是让 Master 数据库处理事务性增、删除、修改、更新操
作(CREATE、INSERT、UPDATE、DELETE),而让 Slave 数据库处理 SELECT 操作,MYSQL
读写分离前提是基于 MYSQL 主从复制,这样可以保证在 Master 上修改数据,Slave 同步之
后,WEB 应用可以读取到 Slave 端的数据。
实现 MYSQL 读写分离可以基于第三方插件,也可以通过开发修改代码实现,具体实现
的读写分离的常见方式有如下四种:
MySQL-Proxy 读写分离;
Amoeba 读写分离;
Mycat 读写分离;
基于程序读写分离(效率很高,实施难度大,开发改代码)
Amoeba 是以 MySQL 为底层数据存储,并对 WEB、APP 应用提供 MySQL 协议接口的
proxy。它集中地响应 WEB 应用的请求,依据用户事先设置的规则,将 SQL 请求发送到特
定的数据库上执行,基于此可以实现负载均衡、读写分离、高可用性等需求。
Amoeba 相当于一个 SQL 请求的路由器,目的是为负载均衡、读写分离、高可用性提
供机制,而不是完全实现它们。用户需要结合使用 MySQL 的 Replication 等机制来实现副本
同步等功能。
Mysql-Proxy 是 MySQL 官方提供的 mysql 中间件服务,支持无数客户端连接,同时后
端可连接若干台 Mysql-Server 服务器,MYSQL-Proxy 自身基于 MySQL 协议,连接 MYSQL-
Proxy 的客户端无需修改任何设置, 跟正常连接 MYSQL Server 没有区别,无需修改程序代
码。
MySQL Proxy 是 App 应用(客户端)与 MYSQL Server 之间的一个连接代理,MySQL Proxy
负责将 APP 应用的 SQL 请求根据转发规则,转发至相应的后端数据库,基于 lua 脚本,可
以实现复杂的连接控制和过滤,从而实现数据读写分离和负载均衡的需求。
Mysql-Proxy 允许用户指定 Lua 脚本对 SQL 请求进行拦截,对请求进行分析与修改,还
允许用户指定 Lua 脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集,
对 SQL 的请求通常为读请求、写请求,基于 Lua 脚本,可以实现将 SQL 读请求转发至后端 Slave
服务器,将 SQL 写请求转发至后端 Master 服务器。
如图 12-16 所示,为 MYSQL-PROXY 读写分离架构图,通过架构图可以清晰看到 SQL
请求整个流向的过程。
图 12-16 MYSQL-Proxy 读写分离流程
Mysql-Proxy 读写分离架构实战配置,如图 12-17 所示,两台 WEB 通过 MYSQL-Proxy
连接后端 1.14 和 1.15 MYSQL 服务器。
图 12-17 MYSQL-Proxy 实施架构图
配置此实验需要四台虚拟机,本次选择 centos7.4 系统,进行模拟实验,
Centos7.4-1:192.168.50.128,安装 linux+apache+PHP+discuz 论坛
Centos7.4-2:192.168.50.129,安装 mysql-proxy 代理服务。
Centos7.4-3:192.168.50.130,安装 mysql 主服务器
Centos7.4-4:192.168.50.131,安装 mysql 从服务器
Centos7.4-1
(1) Apache WEB 安装,先安装 apr、apr-utils 等基础库包。
yum install apr-devel apr-util-devel gcc c ncurses-devel cmake libaio bison gcc-c++
git -y
cd /usr/src
wget https://sourceforge.net/projects/pcre/files/pcre/8.42/pcre-8.42.tar.gz
#tar xzf pcre-8.42.tar.gz
#cd pcre-8.42
#./configure --prefix=/usr/local/pcre
#make
#make install
wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.29.tar.gz
tar xzf httpd-2.4.29.tar.gz
cd httpd-2.4.29
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --with-
pcre=/usr/local/pcre
make && make install
setenforce 0
systemctl stop firewalld
iptables -F
/usr/local/apache/bin/apachectl restart
(2) PHP 服务安装,PHP 需与 Apache、MySQL 进行整合,如图 12-3 所示,参数命令
如下:
cd /usr/src
wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2
tar jxf php-5.3.28.tar.bz2
cd php-5.3.28 ;
vim /usr/src/php-5.3.28/Zend/zend_language_parser.h
修改 317 行,改为(void *compiler_globals)
yum install libxml2 libxml2-devel –y
./configure --prefix=/usr/local/php5 --with-mysql=mysqlnd --with-
mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-
apxs2=/usr/local/apache/bin/apxs
make && make install
图 12-3 LAMP 源码编译整合
(3) Apache+PHP 源码整合
为了能让 Apache 发布 PHP 页面,需要将 PHP 安装完成后的 libphp5.so 模块与 Apache 进行
整合,vim httpd.conf 编辑配置文件,加入如下代码:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html index.htm
(4) 测试 Apache+PHP 环境
创建 PHP 测试页面,在/usr/local/apache/htdocs 目录下创建 index.php 测试页面,执行如下
命令自动创建:
Vim /usr/local/apache/htdocs/index.php
<?php
phpinfo();
?>
/usr/local/apache/bin/apachectl restart
重新启动 Apache 服务,浏览器输入 Apache WEB 的 IP 访问,如图 12-4 所示,即代表 LAMP
源码环境整合成功。
Apache+PHP 测试页面
图 12-4 Apache+PHP 测试页面
(5) Discuz PHP 论坛安装
LAMP 源码整合完毕之后,Dicuz 官网下载 Discuz 开源 PHP 软件包,将软件包解压并
发布在 Apache Htdocs 发布目录,代码如下:
cd /usr/src ;
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
unzip Discuz_X3.3_SC_UTF8.zip -d /usr/local/apache/htdocs/
cd /usr/local/apache/htdocs/
mv upload/* .
chmod 757 -R data/ uc_server/ config/ uc_client/
剩余21页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3860
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功