您的位置:首页 > 运维架构 > 网站架构

ubuntu下LVS + Keepalived 实现mysql高可用负载均衡实现

2011-01-19 14:50 766 查看
LVSServer:192.85.1.5

VirtualIP:192.85.1.10

RealServer1:192.85.1.4
RealServer2:192.85.1.9

在LVSServer上安装ipvsadm和keepalived。
$sudoapt-getinstallipvsadmkeepalived

使用这两个做配合时,无需配置ipvsadm,直接修改keepalived.conf即可。

$sudovim/etc/keepalived/keepalived.conf

global_defs{
router_idLVS_DEVEL
}

vrrp_instanceVI_1{
stateMASTER
interfaceeth0
virtual_router_id51
priority100#100为从服务器,主服务器为:101
advert_int1

authentication{
auth_typePASS
auth_pass1111
}

virtual_ipaddress{
192.85.1.10
}
}

virtual_server192.85.1.103306{
delay_loop1#每隔1秒查询RealServer状态
lb_algowrr#LVS算法
lb_kindDR#DirectRoute
#persistence_timeout60#同一IP在60秒内分配到同一台RealServer
protocolTCP#使用TCP协议检查RealServer状态

real_server192.85.1.43306{
weight3#权重
TCP_CHECK{
connect_timeout10#10秒无响应超时
nb_get_retry3
delay_before_retry3
connect_port3306
}
}

real_server192.85.1.93306{
weight3
TCP_CHECK{
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port3306
}
}
}}

启动keepalived服务。
$sudoservicekeepalivedstart#应该先启动mysql集群


检查ipvsadm设置。

$sudoipvsadm-ln

IPVirtualServerversion1.2.1(size=4096)
ProtLocalAddress:PortSchedulerFlags
->RemoteAddress:PortForwardWeightActiveConnInActConn
TCP192.85.1.10:3306wrr
->192.85.1.4:3306Route300
->192.85.1.9:3306Route300


在所有RealServer/etc/rc.local中添加配置信息后重启

$sudonano/etc/rc.local

#!/bin/sh-e
#
#rc.local
#
#Thisscriptisexecutedattheendofeachmultiuserrunlevel.
#Makesurethatthescriptwill"exit0"onsuccessoranyother
#valueonerror.
#
#Inordertoenableordisablethisscriptjustchangetheexecution
#bits.
#
#Bydefaultthisscriptdoesnothing.

ifconfiglo:0192.85.1.10netmask255.255.255.255broadcast192.85.1.10up
routeadd-host192.85.1.10devlo:0

echo"0">/proc/sys/net/ipv4/ip_forward
echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo"2">/proc/sys/net/ipv4/conf/all/arp_announce

exit0


这时我们就可以进行测试了。在RealServer1上,创建数据库:clustertest,

sudo/usr/local/mysql/bin/mysql-uroot-p

密码默认为空

mysql>GRANTALLONclustertest.*TO'zichen'@'$'IDENTIFIEDBY'62672000';

mysql>FLUSHPRIVILEGES;

mysql>CREATEDATABASEclustertest;

mysql>USEclustertest;

mysql>CREATETABLEtest(idINT)ENGINE=NDBCLUSTER;

mysql>INSERTINTOtestVALUES(1);

mysql>quit;

在RealServer2上

sudo/usr/local/mysql/bin/mysql-uroot-p

密码默认为空

mysql>GRANTALLONclustertest.*TO'zichen'@'$'IDENTIFIEDBY'62672000';

mysql>FLUSHPRIVILEGES;

mysql>quit;


在192.85.1.4上,在终端输入:sudo/usr/local/mysql/bin/mysql-h192.85.1.10-uzichen-p

enterpassword:62672000

正常情况下,应该能进入如下界面:
mysql>

mysql>useclustertest;

mysql>showtables;

mysql>select*fromtest;

mysql>insertintotestvalues(2);

在两个SQL节点上查看数据是否同步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: