分离mysql和存储实现双web负载均衡

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

此篇博文仅限涉及web服务器部分,至于负载均衡的实现可以按照需求来做,可以是基于DNS解析的负载均衡,也可以用lvs或者专用的负载均衡器(如F5或randware)

这是一个比较简单的负载均衡的实现,没有考虑到ha。

S60(PB591GI~{8]0ZO}0(SV

具体规划

将2台web服务器做成一个discuz论坛的小集群。合理分配2台web服务器的任务,分离文件共享和mysql应用,使2台服务器同时提供web服务,但由web1充当网络存储,实现数据的同步,web2充当数据库服务器,提供数据的调用。合理的分配2台服务器的负载,实现真正意义的负载均衡。

此情景只是一个负载均衡的小集群,未考虑到高可用的情况,在中小型企业中,如果一台服务器撑不住,但业务也不是特别重要,允许在服务器挂掉的情况下能断线一段时间的情况下使用。

具体是在web1上做NFS文件共享,将网页放置在web1上。将数据库放置在web2上。然后2台web服务器同时提供web服务,外界访问2台服务器时得到的网页结果是一样的

 

实现过程

首先在web1中安装nfs,apache,php

[root@localhost ~]# yum install nfs-utils httpd php php-mysql –y

创建网站目录

[root@localhost ~]# mkdir /dz

为了方便,将网站目录的权限修改为777(在真正为企业配置时千万别这么来,这里只是为了实验方便)

[root@localhost /]# chmod 777 dz -R

修改网址apache的配置文件,指向dz目录,这里只修改一行

DocumentRoot "/dz"

关闭selinux和iptables,并打开httpd

XO{_HYDT46`7H%E_FQZ(}[6

在dz中建立php测试页面,确保php运行正常

[root@localhost dz]# vi index.php #写入以下内容

 
  1. <?php  
  2. phpinfo();  
  3. ?> 

打开页面测试一下

4X`IEH736XRZ[K1BW)NR~VC

配置nfs服务,共享网站目录dz

[root@localhost dz]# vi /etc/exports #加入下面一行

 
  1. /dz     192.168.92.11(rw,async) 

启动nfs服务

2]OX9{P@NIDL[GL)]08~_L6

web1暂时配置到这里,先把配置web2配置一下

 

在web2上安装apache,php,mysql-server

[root@localhost ~]# yum install nfs-utils httpd php php-mysql mysql-server -y

然后先挂载web1的nfs目录

[root@localhost ~]# mount -t nfs 192.168.92.10:/dz /dz

 

和web1一样关闭selinux和iptables 并打开httpd,

然后修改apache的配置和web1一样网站路径为/dz,不过这里的/dz就是从web1网络挂载过来的/dz了,这里不再详细列出过程了,和web1的一样

 

然后开始为mysql配置论坛的数据库table和账户

[root@localhost ~]# mysql

 

 
  1. mysql&gt; create database dz;  
  2. Query OK, 1 row affected (0.01 sec) 
  3.  
  4. mysql&gt; grant all privileges on dz.* to dzroot@192.168.92.10 identified by '123456';  
  5. Query OK, 0 rows affected (0.01 sec) 
  6.  
  7. mysql&gt; grant all privileges on dz.* to dzroot@192.168.92.11 identified by '123456';  
  8. Query OK, 0 rows affected (0.00 sec) 
  9.  
  10. mysql&gt; flush privileges;  
  11. Query OK, 0 rows affected (0.00 sec) 

 

 

数据库配置好后开始配置discuz

首先到WEB1上进行配置。

[root@localhost dz]# unzip Discuz_X2.5_SC_UTF8.zip #解压discuz程序

进入/dz/config目录 打开编辑config_global_default.php文件。

[root@localhost config]# vi config_global_default.php 修改以下几行内容

 

 
  1. $_config['db'][1]['dbhost']             = '192.168.92.11'; #数据库一定要指向web2  
  2. $_config['db'][1]['dbuser']             = 'dzroot';   
  3. $_config['db'][1]['dbpw']               = '123456';  
  4. $_config['db'][1]['dbcharset']          = 'utf8';  
  5. $_config['db'][1]['pconnect']           = 0;  
  6. $_config['db'][1]['dbname']             = 'dz';  
  7. $_config['db'][1]['tablepre']           = 'pre_'; 

然后将其复制为以下名称(为了防止安装discuz时报错)

[root@localhost config]# cp config_global_default.php config_global.php 
[root@localhost config]# cp config_ucenter_default.php config_ucenter.php

 

浏览器中打开192.168.92.10,开始discuz的安装,进行到这一步时,对相应提示的目录进行权限的修改

A6W[V2}U`9GGINVQ1YPR9XW

 

安装成功后,用浏览器打开192.168.92.10,进入管理员后台,添加一个板块

{OM(44)(HE~Y]@O9XU355OA

 

然后打开192.168.92.11

EON]VC]}NY0CB@B~R1__SSL

 

可以看到2个web之间的内容是同步的

 

 

这就简单的搭建了一个小小的负载均衡的集群应用

实现比较简单,重要的思路的开放。能够让不同的应用的压力均摊到每个服务器上,不浪费服务器性能,这才是负载均衡的意义。



本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/926764,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
存储 SQL NoSQL
mysql存储过程和存储函数
mysql存储过程和存储函数
|
11天前
|
存储 JSON 关系型数据库
轻松入门MySQL:MySQL字段类型精解,优化存储结构,助力系统高效运行(2)
轻松入门MySQL:MySQL字段类型精解,优化存储结构,助力系统高效运行(2)
|
11天前
|
SQL 存储 关系型数据库
轻松入门MySQL:简明教程解析数据存储与管理(1)
轻松入门MySQL:简明教程解析数据存储与管理(1)
|
11天前
|
存储 缓存 关系型数据库
MySQL的varchar水真的太深了——InnoDB记录存储结构
varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dynamic来说说原理。
855 6
MySQL的varchar水真的太深了——InnoDB记录存储结构
|
11天前
|
存储 缓存 关系型数据库
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
阿里云RDS率先推出新型存储类型通用云盘,提供低延迟、低成本、高持久性的用户体验。
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
|
11天前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
60 0
|
11天前
|
存储 关系型数据库 MySQL
Mysql 存储大数据量问题
Mysql 存储大数据量问题
104 1
|
4天前
|
存储 SQL 关系型数据库
【MySQL进阶之路 | 基础篇】存储函数
【MySQL进阶之路 | 基础篇】存储函数
|
11天前
|
存储 关系型数据库 MySQL
MySQL是怎样存储数据的?
MySQL是怎样存储数据的?
|
11天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
171 0