基于Lvs的Nat负载均衡和MySQL读写分离的简单留言板

前几天看了一套关于负载均衡和MySQL主从复制的教程后,打算自己手动实验一下。由于还没涉及到服务器集群技术,所以这里并没有做服务器集群,所以当系统中某台服务器宕机时,整个系统都会受到影响,但这里先不考虑这个问题。

由于真实环境中并没有那么多主机可以,所以这里用一台真实主机模拟出多台虚拟机服务器来做实验。

准备

主机配置

CPU

I5-3210M 2.50GHz

RAM

8G

OS

Win8 X64

HDD

500G

VirtualBox

4.2.12

 

虚拟服务器配置

设备

说明

环境

初始配置

LvsNatServer

 

Lvs服务器

CentOS6.3

eth0:192.168.6.1

eth1:192.168.0.232

Ipvsadm

WebServer1

Web服务器1

CentOS6.3

eth0:192.168.6.2

gw:192.168.6.1

Apache2.2.x

WebServer2

Web服务器2

CentOS6.3

eth0:192.168.6.3

gw:192.168.6.1

Apache2.2.x

MasterDBServer

主数据库服务器

CentOS6.3

eth0:192.168.6.100

MySQL5.5.40

SlowDBServer

从数据库服务器

CentOS6.3

eth0:192.168.6.101

MySQL5.5.40

说明:为了加快实验速度,这里先装了一台母本CentOS6.3的服务器,复制出5台出来,再根据需要对服务器进行修改。

环境测试

创建好虚拟机后,需要对环境进行测试

         首先是网络测试,所有的服务器都是处在同一个网段,子网为255.255.255.0,这时只要让所有的服务器互ping能够ping通,则表示网络是没问题的。

         接下来是检查两台WebServer的Apache是否正常启动,能否正确访问,通过

ps–e | grep httpd

这条命令检查httpd服务是否开启,再通过

wget http://localhost/index.html

检查服务器是否能够正常访问,为了后面能看出不同的结果,在两台服务器的index.html内容进行修改,分别改为server1和server2。

         再接着是判断两台DBServer是否能够正常使用,通过

ps–e | grep mysqld

判断mysql服务是否开启,再用

/usr/local/mysql/bin/mysql–uroot –p123456

检查能否进行数据库。

         最后检查LvsServer是否已配置Ipvsadm,输入ipv用tab键看能否补全,如果没有补全表示还没安装ipvsadm,这时可通过yum安装ipvsadm,命令为

yum–y install ipvsadm

配置Lvs Nat轮循,实现负载均衡

想要使用Nat轮循功能,就要将LvsServer作为路由使用,需要开启路由转发功能:

vi/etc/sysctl.conf

在最后增加一行(1开启,0关闭)

net.ipv4.ip_forward= 1

写入后重新加载

sysctl–p


然后写个shell来启动ipvsadm

viipvs.sh

#!/bin/bash
#ipvs.sh
ipvsadm –C
ipvsadm –At 192.168.0.232:80 –s rr
ipvsadm –at 192.168.0.232:80 –r192.168.6.2:80 –m
ipvsadm –at 192.168.0.232:80 –r192.168.6.3:80 –m
ipvsadm –L –n

写完之后添加权限,然后执行

chmoda+x ipvs.sh
shipvs.sh


这时,用真机浏览器访问192.168.0.232/index.html,刷新就可以看到两个不同的结果,server1和server2。

         至此,一个具有负载均衡系统已经完成。

配置MySQL主从复制

MySQL主从复制是实现读写分离的关键,主数据库用于增删改操作,从数据库用于读操作。考虑到增删改的事务功能和读取的快捷,这里主数据库使用InnoDB引擎,从数据库使用MyISAM引擎。考虑到最近还学了分区技术,所以这里也用一下MySQL的分区技术。

首先在两台数据库服务器上创建数据库lyb

create databaselyb;
create table ly(
         id int not null primary keyauto_increment,
         dt datetime not null,
         content varchar(300) not null default''
) engine=innodb(注意在SlowDBServer上要改成myisam) defaultcharset=utf8
partition byrange(MOD(id,10))(
         partition p0 values less than (0),
         partition p1 values less than (1),
         partition p2 values less than (2),
         partition p3 values less than (3),
         partition p4 values less than (4),
         partition p5 values less than (5),
         partition p6 values less than (6),
         partition p7 values less than (7),
         partition p8 values less than (8),
         partition p9 values less than (9),
         partition p10 values less than maxvalue
);


MasterDBServer设置

在MasterDBServer使用grant添加一个可以从SlowDBServer登录到MasterDBServer的用户

grant all onlyb.* to lyb@192.168.6.101 identified by‘123456’;


 

lyb.* 是指授权lby数据库下的所有表

lyb@192.168.6.101 是指授权lyb用户可以从主机192.168.6.101登录

identified by ‘123456’是指登录密码

然后在SlowDBServer测试 mysql –ulyb–p123456 –h192.168.6.100看下能否登录

配置MasterDBServer下的MySQL配置文件

vi /etc/my.cnf


找到server-id,改为1(只要跟SlowDBServer不相同即可)

SlowDBServer设置

         修改配置文件/etc/my.cnf中的server-id=2(只要不跟MasterDBServer相同即可)

         进入数据库,输入

change master tomaster_host='192.168.6.100', master_user='lyb', master_password='123456';
slave start;


完成主从配置,查看配置结果

show slavestatus\G;


如果看到

Slave_IO_Running:yes

Slave_SQL_Running:yes

表示已经与MasterDBServer同步。

这时可以测试,在MasterDBServer插入一条记录,再从SlowDBServer查询,可以看到从MasterDBServer插入的记录,表示已经实现主从复制。

实现简单留言板实现读写分离

         这里没有什么技术难点,只是根据操作的内容选择不同数据库而已,这里就不细说了,网上也有很多读写分离的实例可以参考。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值