最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

mysql双主复制+lvs+keepalived实现mysql负载均衡

来源:动视网 责编:小OO 时间:2025-09-24 10:49:51
文档

mysql双主复制+lvs+keepalived实现mysql负载均衡

1.MySQL-VIP:192.168.1.10 2.MySQL-master1:192.168.1.4 3.MySQL-master2:192.168.1.9 4.lvs_servermaster192.168.1.55.lvs_serverbackup192.168.1.66.liunx版本:Linuxversion2.6.18-1.el5 7.MySQL版本:5.0.56 8.Keepalived版本:1.1.17 实施步骤:1在realserver主机上实行脚本realserver
推荐度:
导读1.MySQL-VIP:192.168.1.10 2.MySQL-master1:192.168.1.4 3.MySQL-master2:192.168.1.9 4.lvs_servermaster192.168.1.55.lvs_serverbackup192.168.1.66.liunx版本:Linuxversion2.6.18-1.el5 7.MySQL版本:5.0.56 8.Keepalived版本:1.1.17 实施步骤:1在realserver主机上实行脚本realserver
1.MySQL-VIP:192.168.1.10 

2.MySQL-master1:192.168.1.4 

3.MySQL-master2:192.168.1.9 

4.lvs_server master  192.168.1.5

5.lvs_server backup  192.168.1.6

6.liunx版本:Linux version 2.6.18-1.el5   

7.MySQL版本:5.0.56  

8.Keepalived版本:1.1.17 

实施步骤:

1在realserver主机上实行脚本realserver,为lo:0绑定VIP地址192.168.1.10,这步分别在二个mysql主机上192.168.1.4、192.168.1.9实施。这步提前做,是因为以后的过程中这一步是不会发生更改的。

Vim /usr/local/bin/lvs_real.sh

#!/bin/bash

#description : start realserver

VIP=192.168.1.10

source /etc/rc.d/init.d/functions

case "$1" in

start)

echo " start LVS of realserver"

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

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

;;

stop)

/sbin/ifconfig lo:0 down

echo " close LVS directorserver"

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

完成运行此脚本:    .  Lvs_real.sh start(or stop)

简单说明下上述脚本的作用:

1)vip(virtual ip)。直接路由模式的vip必须跟服务器对外提供服务的ip地址在同一个网段,并且lvs 负载均衡器和其他所有提供相同功能的服务器都使用这个vip;

2)vip被绑定在环回接口lo0:0上,其广播地址是其本身,子网掩码是255.255.255.255。这与标准的网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免ip地址冲突;

3)echo这段的作用是抑制arp广播。如果不做arp抑制,将会有众多的机器向其他宣称:“嗨!我是奥巴马,我在这里呢!”,这样就乱套了。

②为二台lvs主机安装lvs+keepalived软件。安装lvs软件是必须做的,因为keepalived是运行在lvs之上的,因此lvs及keepalived必须装在一个系统里面。过程如下:

1.#mkdir /usr/local/src/lvs   

2.#cd /usr/local/src/lvs   

3.#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz   

4.#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/ /usr/src/linux   

5.#tar zxvf   ipvsadm-1.24.tar.gz   

6.#cd ipvsadm-1.24   

7.#make    

8.#make install  

9.执行ipvsadm,

10.查看当前加载的内核模块:lsmod|grep ip_vs

11.运行ipvsadm

[root@lvs ipvsadm-1.24]#lsmod|grep ip_vs

Ip_vs                 77569  0

③编辑keepalived.conf文件,直接用keepalived实现负载均衡及高可用性。

a)Keepalved的安装

    

1.a)Keepalived的安装  

2.    

3.#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz  

4.    

5.#tar zxvf keepalived-1.1.15.tar.gz  

6.    

7.#cd keepalived-1.1.15  

8.    

9.#./configure  

10.    

显示出以下结果:

Keepalived configuration

------------------------

Keepalived version       : 1.1.17

Compiler                 : gcc

Compiler flags           : -g -O2

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

Use VRRP Framework       : Yes

Use LinkWatch            : No

Use Debug flags          : No

11.#make  

12.    

13.#make install 

14.

将keepalived做成启动脚务,方便管理:

    

1.#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/  

2.    

3.#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/  

4.    

5.#mkdir /etc/keepalived  

6.    

7.#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/  

8.    

9.#cp /usr/local/sbin/keepalived /usr/sbin/  

10.    

11.#service keepalived start|stop  

12.

b)Keealived的配置

①分别在主从负载均衡服务器上配置keepalived.conf ,内容分别如下:

    配置主lvs

1.! Configuration File for keepalived  

2.    

3.global_defs {  

4.    

5.   notification_email {  

6.    

7.         yuhongchun027@163.com  

8.    

9.   }  

10.    

11.   notification_email_from sns-lvs@gmail.com  

12.    

13.   smtp_server 127.0.0.1  

14.    

15.   router_id LVS_DEVEL_1  

16.    

17.}  

18.    

19.vrrp_instance VI_1 {  

20.    

21.    state MASTER               

22.    

23.    interface eth0  

24.    

25.    virtual_router_id 51  

26.    

27.    priority 100      

28.    

29.    advert_int 1  

30.    

31.    authentication {  

32.    

33.        auth_type PASS  

34.    

35.        auth_pass 1111  

36.    

37.    }  

38.    

39.    virtual_ipaddress {  

40.    

41.        192.168.1.10   

42.    

43.    }  

44.    

45.}  

46.    

47.virtual_server 192.168.1.10 3360 {  

48.    

49.    delay_loop 6                    

50.    

51.    lb_algo wrr                    

52.    

53.    lb_kind DR                    

54.    

55.    persistence_timeout 60          

56.    

57.    protocol TCP                  

58.    

59.    real_server 192.168.1.4 3306 {  

60.    

61.        weight 3                 

62.    

63.        TCP_CHECK {  

.    

65.        connect_timeout 10         

66.    

67.        nb_get_retry 3  

68.    

69.        delay_before_retry 3  

70.    

71.        connect_port 3306  

72.    

73.        }  

74.    

75.    }  

76.    

77.    real_server 192.168.1.9 3306 {  

78.    

79.        weight 3  

80.    

81.        TCP_CHECK {  

82.    

83.        connect_timeout 10  

84.    

85.        nb_get_retry 3  

86.    

87.        delay_before_retry 3  

88.    

.        connect_port 3306  

90.    

91.        }  

92.    

93.     }  

94.    

95.} 

96.

    配置备份lvs

1.! Configuration File for keepalived  

2.    

3.global_defs {  

4.    

5.   notification_email {  

6.    

7.         yuhongchun027@163.com  

8.    

9.   }  

10.    

11.   notification_email_from sns-lvs@gmail.com  

12.    

13.   smtp_server 127.0.0.1  

14.    

15.   router_id LVS_DEVEL_2  注意与主不一样的地方

16.    

17.}  

18.    

19.vrrp_instance VI_1 {  

20.    

21.    state BACKUP       注意与主不一样的地        

22.    

23.    interface eth0  

24.    

25.    virtual_router_id 51  

26.    

27.    priority 99      注意与主不一样的地

28.    

29.    advert_int 1  

30.    

31.    authentication {  

32.    

33.        auth_type PASS  

34.    

35.        auth_pass 1111  

36.    

37.    }  

38.    

39.    virtual_ipaddress {  

40.    

41.        192.168.1.10   

42.    

43.    }  

44.    

45.}  

46.    

47.virtual_server 192.168.1.10 3306 {  

48.    

49.    delay_loop 6                    

50.    

51.    lb_algo wrr                    

52.    

53.    lb_kind DR                    

54.    

55.    persistence_timeout 60          

56.    

57.    protocol TCP                  

58.    

59.    real_server 192.168.1.4 3306 {  

60.    

61.        weight 3                 

62.    

63.        TCP_CHECK {  

.    

65.        connect_timeout 10         

66.    

67.        nb_get_retry 3  

68.    

69.        delay_before_retry 3  

70.    

71.        connect_port 3306  

72.    

73.        }  

74.    

75.    }  

76.    

77.    real_server 192.168.1.9 3306 {  

78.    

79.        weight 3  

80.    

81.        TCP_CHECK {  

82.    

83.        connect_timeout 10  

84.    

85.        nb_get_retry 3  

86.    

87.        delay_before_retry 3  

88.    

.        connect_port 3306  

90.    

91.        }  

92.    

93.     }  

94.    

95.} 

96.

②分别在二台lvs机上启动servcie keepalived start就可实现负载均衡及高可用集群;keepalived.conf内容说明如下:

●全局定义块

1、email通知。作用:有故障,发邮件报警。

2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。

3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。

●VRRP定义块

1、同步vrrp组vrrp_sync_group。作用:确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪些?

2、实例组group。至少包含一个vrrp实例。

3、Vrrp实例vrrp_instance。实例名出自实例组group所包含的那些名字。

(1)实例状态state。只有MASTER和BACKUP两种状态,并且需要大写这些单词。其中MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的系统会自动把它的状态有BACKUP变换成MASTER;当失效的MASTER所在的系统恢复时,BACKUP从MASTER恢复到BACKUP状态。

(2)通信接口interface。对外提供服务的网络接口,如eth0,eth1.当前主流的服务器都有2个或2个以上的接口,在选择服务接口时,一定要核实清楚。

(3)lvs_sync_daemon_inteface。负载均衡器之间的监控接口,类似于HA

HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_inteface

与服务接口interface 使用同一个网络接口。

(4)虚拟路由标识virtual_router_id。这个标识是一个数字,并且同一个vrrp实例使用唯一的标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同时在整个vrrp内是唯一的。

(5)优先级priority。这是一个数字,数值愈大,优先级越高。在同一个vrrp_instance里,MASTER

的优先级高于BACKUP。若MASTER的priority值为150,那么BACKUP的priority只能是140或更小的数值。

(6)同步通知间隔advert_int。MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。

(7)验证authentication。包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题。验证密码为明文,同一vrrp实例MASTER与BACKUP

使用相同的密码才能正常通信。

4、

虚拟ip地址virtual_ipaddress。可以有多个地址,每个地址占一行,不需要指定子网掩码。注意:这个ip必须与我们在lvs客户端设定的vip相一致!

●虚拟服务器virtual_server定义块

虚拟服务器定义是keepalived框架最重要的项目了,是keepalived.conf必不可少的部分。

1、虚拟服务器virtual_server。这个ip来自于vrrp定义块的第“4”步,后面一个空格,然后加上端口号。定义一个vip,可以实现多个tcp端口的负载均衡功能。

(1)delay_loop。健康检查时间间隔,单位是秒。

(2)lb_algo。负载均衡调度算法,互联网应用常使用wlc或rr。

(3)lb_kind。负载均衡转发规则。一般包括DR、NAT、TUN3种,在我的方案中,都使用DR的方式。

(4)persistence_timeout。会话保持时间,单位是秒。这个选项对动态网站很有用处:当用户从远程用帐号进行登陆网站时,有了这个会话保持功能,就能把用户的请求转发给同一个应用服务器。在这里,我们来做一个假设,假定现在有一个lvs环境,使用DR转发模式,真实服务器有3个,负载均衡器不启用会话保持功能。当用户第一次访问的时候,他的访问请求被负载均衡器转给某个真实服务器,这样他看到一个登陆页面,第一次访问完毕;接着他在登陆框填写用户名和密码,然后提交;这时候,问题就可能出现了---登陆不能成功。因为没有会话保持,负载均衡器可能会把第2次的请求转发到其他的服务器。

(5)转发协议protocol。一般有tcp和udp两种。实话说,我还没尝试过udp协议类的转发。

2、真实服务器real_server,也即服务器池。Real_server的值包括ip地址和端口号,多个连续的真实ip。

(1)权重weight,权重值是一个数字,数值越大,权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载,性能较好的机器,负载分担大些;反之,性能差的机器,则分担较少的负载,这样就可以合理的利用不同性能的机器资源。

(2)Tcp检查tcp_check。

附注:以上就是lvs+keepalived的基本配置步骤,有兴趣的同学建议可做下lvs的1+2的基本架构实验,即不需要keepalived,采用单lvs的方式,其lvs_dr脚本如下

   #vim /usr/local/sbin/lvs-dr.sh  

1.    

2.       #!/bin/bash  

3.    

4.       #website director vip.  

5.    

6.       SNS_VIP=192.168.1.188  

7.    

8.       SNS_RIP1=192.168.1.104  

9.    

10.       SNS_RIP2=192.168.1.105  

11.    

12.      ./etc/rc.d/init.d/functions  

13.    

14.         logger $0 called with $1  

15.    

16.         case "$1" in  

17.    

18.         start)  

19.    

20.         # set squid vip  

21.    

22.         /sbin/ipvsadm --set 30 5 60  

23.    

24.         /sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up  

25.    

26.         /sbin/route add -host $SNS_VIP dev eth0:0  

27.    

28.         /sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3  

29.    

30.         /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1  

31.    

32.         /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1  

33.    

34.         touch /var/lock/subsys/ipvsadm >/dev/null 2>&1  

35.    

36.        ;;  

37.    

38.stop)  

39.    

40.         /sbin/ipvsadm -C  

41.    

42.         /sbin/ipvsadm -Z  

43.    

44.         ifconfig eth0:0 down  

45.    

46.         route del $SNS_VIP  

47.    

48.         rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1  

49.    

50.         echo "ipvsadm stoped"  

51.    

52.        ;;  

53.    

54.status)  

55.    

56.         if [ ! -e /var/lock/subsys/ipvsadm ];then  

57.    

58.                 echo "ipvsadm stoped"  

59.    

60.                 exit 1  

61.    

62.         else  

63.    

.                 echo "ipvsadm OK"  

65.    

66.         fi  

67.    

68.       ;;  

69.    

70.*)  

71.    

72.         echo "Usage: $0 {start|stop|status}"  

73.    

74.         exit 1  

75.    

76.esac  

77.    

78.exit 0 

79.

最新版更新内容如下:

①每台服务器都有二块网卡,分别连接内;后端的mysql数据库与web连接采用内网方式,整个网络环境采用内网;

②增加了keepalivedyiyyy .conf语法内容;

③删除了lvs.sh脚本内容,直接让keepalived内容更直接明了,新增加了单lvs的配置脚本lvs_dr.sh;

④lvs主从机上的keepalived.conf文件我直接从生产服务器上download下来了,可方便大家使用。

部分内容参考了田逸和netseek的文章,如果有任何疑问和咨询,欢迎来邮抚琴煮酒yuhongchun027@163.com   

※值得注意的是:

1、你必须向你的服务器所在机房IDC多申请一个IP供VIP使用;多关注/var/log/messages和ipvsadm

-ln,利用其有效信息排错。

2、服务器的iptables、Selinux均关闭;在生产环境中,我就遇到了iptables的NAT转发问题,导致了lvs失败。

3、keepalived的启动过程并不会对配置文件进行语法检查,就算没有配置文件,keepalived的守护进程照样能够被运行起来。在默认状态下,即不指定配置文件的位置--keepalived先查找文件/etc/keepalived/keepalived.conf。

4、session的过程默认是以文件的形式存在,在浏览器关闭或重启时删除;会话保持我建议写成120秒,如果这个值设置得不合理,用户将得到非常糟糕的访问效果。

5、keepalived是lvs的扩展项目,因此它们之间具备良好的兼容性,这点应该是keepalived部署比其他类似工具能更简洁的原因吧,lvs+keepalived目前是一个应用于生产环境的成熟架构,实现了真正意义上的负载均衡高可用(尤其是对于Nginx+Keepalived而言),尤其适用于bbs和blog(它们均是访问频繁,用户量大的对象),建议熟练掌握。

一、MySQL master-master配置

1、修改MySQL配置文件

两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项

两台MySQL的server-ID不能一样,默认情况下两台MySQL的server-ID都是1,需将其中一台修改为2即可

2、将192.168.1.4设为192.168.1.9的主服务器

在192.168.1.4 上新建授权用户

    登录MYSQL环境:mysql –u root 

1.MySQL> grant replication slave on *.* to 'replication'@'%' identified by 'replication';  

2.Query OK, 0 rows affected (0.00 sec)  

3. 

4.MySQL> show master status;  

5.+------------------+----------+--------------+------------------+  

6.| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  

7.+------------------+----------+--------------+------------------+  

8.| MySQL-bin.000003 |      374 |              |                  |   

9.+------------------+----------+--------------+------------------+  

10.1 row in set (0.00 sec) 

在192.168.1.9上将192.168.1.4设为自己的主服务器

1.MySQL> change master to master_host='192.168.1.4',master_user='replication',master_password='replication',master_log_file='MySQL-bin.000003',master_log_pos=374;  

2.Query OK, 0 rows affected (0.05 sec)  

3. 

4.MySQL> start slave;  

5.Query OK, 0 rows affected (0.00 sec)  

6. 

7.MySQL> show slave status\\G  

8.*************************** 1. row ***************************  

9.             Slave_IO_State: Waiting for master to send event  

10.                Master_Host: 192.168.1.4 

11.                Master_User: replication  

12.                Master_Port: 3306  

13.              Connect_Retry: 60  

14.            Master_Log_File: MySQL-bin.000003  

15.        Read_Master_Log_Pos: 374  

16.             Relay_Log_File: MySQL-master2-relay-bin.000002  

17.              Relay_Log_Pos: 235  

18.      Relay_Master_Log_File: MySQL-bin.000003  

19.           Slave_IO_Running: Yes  

20.          Slave_SQL_Running: Yes  这很重要

21.            Replicate_Do_DB:   

22.        Replicate_Ignore_DB:   

23.         Replicate_Do_Table:   

24.     Replicate_Ignore_Table:   

25.    Replicate_Wild_Do_Table:   

26.Replicate_Wild_Ignore_Table:   

27.                 Last_Errno: 0  

28.                 Last_Error:   

29.               Skip_Counter: 0  

30.        Exec_Master_Log_Pos: 374  

31.            Relay_Log_Space: 235  

32.            Until_Condition: None  

33.             Until_Log_File:   

34.              Until_Log_Pos: 0  

35.         Master_SSL_Allowed: No  

36.         Master_SSL_CA_File:   

37.         Master_SSL_CA_Path:   

38.            Master_SSL_Cert:   

39.          Master_SSL_Cipher:   

40.             Master_SSL_Key:   

41.      Seconds_Behind_Master: 0  

42.1 row in set (0.00 sec) 

3、将192.168.1.9设为192.168.4的主服务器

在192.168.1.9上新建授权用户

1.MySQL> grant replication slave on *.* to 'replication'@'%' identified  by 'replication';  

2.Query OK, 0 rows affected (0.00 sec)  

3. 

4.MySQL> show master status;  

5.+------------------+----------+--------------+------------------+  

6.| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  

7.+------------------+----------+--------------+------------------+  

8.| MySQL-bin.000003 |      374 |              |                  |   

9.+------------------+----------+--------------+------------------+  

10.1 row in set (0.00 sec) 

在192.168.1.4上,将192.168.1.9设为自己的主服务器

1.MySQL> change master to master_host='192.168.1.9',master_user='replication',master_password='replication',master_log_file='MySQL-bin.000003',master_log_pos=374;  

2.Query OK, 0 rows affected (0.05 sec)  

3. 

4.MySQL> start slave;  

5.Query OK, 0 rows affected (0.00 sec)  

6. 

7.MySQL> show slave status\\G  

8.*************************** 1. row ***************************  

9.             Slave_IO_State: Waiting for master to send event  

10.                Master_Host: 192.168.1.9  

11.                Master_User: replication  

12.                Master_Port: 3306  

13.              Connect_Retry: 60  

14.            Master_Log_File: MySQL-bin.000003  

15.        Read_Master_Log_Pos: 374  

16.             Relay_Log_File: MySQL-master1-relay-bin.000002  

17.              Relay_Log_Pos: 235  

18.      Relay_Master_Log_File: MySQL-bin.000003  

19.           Slave_IO_Running: Yes  

20.          Slave_SQL_Running: Yes  

21.            Replicate_Do_DB:   

22.        Replicate_Ignore_DB:   

23.         Replicate_Do_Table:   

24.     Replicate_Ignore_Table:   

25.    Replicate_Wild_Do_Table:   

26.Replicate_Wild_Ignore_Table:   

27.                 Last_Errno: 0  

28.                 Last_Error:   

29.               Skip_Counter: 0  

30.        Exec_Master_Log_Pos: 374  

31.            Relay_Log_Space: 235  

32.            Until_Condition: None  

33.             Until_Log_File:   

34.              Until_Log_Pos: 0  

35.         Master_SSL_Allowed: No 

36.         Master_SSL_CA_File:   

37.         Master_SSL_CA_Path:   

38.            Master_SSL_Cert:   

39.          Master_SSL_Cipher:   

40.             Master_SSL_Key:   

41.      Seconds_Behind_Master: 0  

42.1 row in set (0.00 sec) 

4、MySQL同步测试

如上述均正确配置,现在任何一台MySQL上更新数据都会同步到另一台MySQL, 

在MYSQL1上:

# /usr/local/mysql/bin/mysql -u root -p

> use test;

> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;

> INSERT INTO ctest () VALUES (1);

> SELECT * FROM ctest;

在MYSQL2上:

mysql> SELECT * FROM ctest;

如果都没有问题,那么恭喜成功!

测试

MySQL远程登录测试  (我使用SQLyogEnt.exe)

我们找一台安装有MySQL客户端的windows,然后登录VIP,看是否能登录,在登录之两台MySQL服务器都要授权允许从远程登录

1.MySQL> grant all privileges on *.* to 'root'@'%' identified by '123456';  

2.Query OK, 0 rows affected (0.00 sec)  

3. 

4.MySQL> flush privileges;  

5.Query OK, 0 rows affected (0.00 sec) 

● MySQL故障转移测试

断掉其中一台mysql 主机的网卡,查看 lvs 服务器:ipvsadm –ln 状态。

再用客户端登录:状态良好。

成功!·!!

 keepalived故障转移测试

※在windows客户端一直去ping  VIP,然后关闭192.168.1.5上的keepalived,正常情况下VIP就会切换到192.168.1.6上面去

※开启192.168.1.5上的keepalived,关闭192.168.1.6上的keepalived,看是否能自动切换,正常情况下VIP又会属于192.168.1.5

注:keepalived切换速度还是非常块的,整个切换过程只需1-3秒

世间万事万物,都不具备绝对的完美,就像上面的MySQL-HA一样,keepalived只能做到对3306的健康检查,但是做不到比如像MySQL复制中的slave-SQL、slave-IO进程的检查。所以要想做到一些细致的健康检查,还得需要借助额外的监控工具,比如nagios,然后用nagios实现短信、邮件报警,从而能够有效地解决问题。

文档

mysql双主复制+lvs+keepalived实现mysql负载均衡

1.MySQL-VIP:192.168.1.10 2.MySQL-master1:192.168.1.4 3.MySQL-master2:192.168.1.9 4.lvs_servermaster192.168.1.55.lvs_serverbackup192.168.1.66.liunx版本:Linuxversion2.6.18-1.el5 7.MySQL版本:5.0.56 8.Keepalived版本:1.1.17 实施步骤:1在realserver主机上实行脚本realserver
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top