cheng029 发表于 2012-7-24 09:37:34

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

此篇博文仅限涉及web服务器部分,至于负载均衡的实现可以按照需求来做,可以是基于DNS解析的负载均衡,也可以用lvs或者专用的负载均衡器(如F5或randware)
这是一个比较简单的负载均衡的实现,没有考虑到ha。

具体规划:
将2台web服务器做成一个discuz论坛的小集群。合理分配2台web服务器的任务,分离文件共享和mysql应用,使2台服务器同时提供web服务,但由web1充当网络存储,实现数据的同步,web2充当数据库服务器,提供数据的调用。合理的分配2台服务器的负载,实现真正意义的负载均衡。
此情景只是一个负载均衡的小集群,未考虑到高可用的情况,在中小型企业中,如果一台服务器撑不住,但业务也不是特别重要,允许在服务器挂掉的情况下能断线一段时间的情况下使用。
具体是在web1上做NFS文件共享,将网页放置在web1上。将数据库放置在web2上。然后2台web服务器同时提供web服务,外界访问2台服务器时得到的网页结果是一样的

实现过程
首先在web1中安装nfs,apache,php
# yum install nfs-utils httpd php php-mysql –y
创建网站目录
# mkdir /dz
为了方便,将网站目录的权限修改为777(在真正为企业配置时千万别这么来,这里只是为了实验方便)
# chmod 777 dz -R
修改网址apache的配置文件,指向dz目录,这里只修改一行
DocumentRoot "/dz"
关闭selinux和iptables,并打开httpd

在dz中建立php测试页面,确保php运行正常
# vi index.php #写入以下内容

[*]<?php
[*]phpinfo();
[*]?>
打开页面测试一下

配置nfs服务,共享网站目录dz
# vi /etc/exports #加入下面一行

[*]/dz   192.168.92.11(rw,async)
启动nfs服务

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

在web2上安装apache,php,mysql-server
# yum install nfs-utils httpd php php-mysql mysql-server -y
然后先挂载web1的nfs目录
# mount -t nfs 192.168.92.10:/dz /dz

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

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


[*]mysql> create database dz;
[*]Query OK, 1 row affected (0.01 sec)
[*]
[*]mysql> grant all privileges on dz.* to dzroot@192.168.92.10 identified by '123456';
[*]Query OK, 0 rows affected (0.01 sec)
[*]
[*]mysql> grant all privileges on dz.* to dzroot@192.168.92.11 identified by '123456';
[*]Query OK, 0 rows affected (0.00 sec)
[*]
[*]mysql> flush privileges;
[*]Query OK, 0 rows affected (0.00 sec)


数据库配置好后开始配置discuz
首先到WEB1上进行配置。
# unzip Discuz_X2.5_SC_UTF8.zip #解压discuz程序
进入/dz/config目录 打开编辑config_global_default.php文件。
# vi config_global_default.php 修改以下几行内容


[*]$_config['db']['dbhost']             = '192.168.92.11'; #数据库一定要指向web2
[*]$_config['db']['dbuser']             = 'dzroot';
[*]$_config['db']['dbpw']               = '123456';
[*]$_config['db']['dbcharset']          = 'utf8';
[*]$_config['db']['pconnect']         = 0;
[*]$_config['db']['dbname']             = 'dz';
[*]$_config['db']['tablepre']         = 'pre_';
然后将其复制为以下名称(为了防止安装discuz时报错)
# cp config_global_default.php config_global.php   
# cp config_ucenter_default.php config_ucenter.php

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


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


然后打开192.168.92.11


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


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


该贴已经同步到 admin的微博

cike0415 发表于 2013-3-13 15:06:36

帮你顶下哈!!

小风儿 发表于 2013-5-15 18:47:24

长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。

远行的心 发表于 2013-5-17 04:28:13

流氓不可怕,就怕流氓有文化。

shilang 发表于 2013-5-18 11:12:31

佛曰,色即是空,空即是色!今晚,偶想空一下

zeromax 发表于 2013-5-19 11:36:04

人生不能像做菜、把所有的料都准备好才下锅!

jxdiscuz 发表于 2013-5-21 00:30:15

男人偷腥时的智商仅次于爱因斯坦!
页: [1]
查看完整版本: 分离mysql和存储实现双web负载均衡