mysql+lvs+keepalived 复制负载配置.docx
《mysql+lvs+keepalived 复制负载配置.docx》由会员分享,可在线阅读,更多相关《mysql+lvs+keepalived 复制负载配置.docx(20页珍藏版)》请在冰豆网上搜索。
![mysql+lvs+keepalived 复制负载配置.docx](https://file1.bdocx.com/fileroot1/2023-1/10/3ac437af-6fe0-4a94-8a25-02fa18913c71/3ac437af-6fe0-4a94-8a25-02fa18913c711.gif)
mysql+lvs+keepalived复制负载配置
1.MySQL-VIP:
192.168.1.10
2.2.MySQL-master1:
192.168.1.4
3.3.MySQL-master2:
192.168.1.9
4.4.lvs_servermaster192.168.1.5
5.5.lvs_serverbackup192.168.1.6
6.6.liunx版本:
Linuxversion2.6.18-164.el5
7.7.MySQL版本:
5.0.56
8.8.Keepalived版本:
1.1.17
实施步骤实施步骤实施步骤实施步骤:
:
:
:
①_在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:
startrealserver
VIP=192.168.1.10
source/etc/rc.d/init.d/functionscase"$1"instart)echo"startLVSofrealserver"
/sbin/ifconfiglo:
0$VIPbroadcast$VIPnetmask255.255.255.255up
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/ifconfiglo:
0down
echo"closeLVSdirectorserver"
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}"
exit1
Esac
完成运行此脚本:
.Lvs_real.shstart(orstop)
简单说明下上述脚本的作用:
1)vip(virtualip)。
直接路由模式的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.#wgethttp:
//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.#tarzxvfipvsadm-1.24.tar.gz
6.#cdipvsadm-1.24
7.#make
8.#makeinstall
9.执行ipvsadm,
10查看当前加载的内核模块:
lsmod|grepip_vs
11.运行ipvsadm
[root@lvsipvsadm-1.24]#lsmod|grepip_vs
Ip_vs775690
③编辑keepalived.conf文件,直接用keepalived实现负载均衡及高可用性
1.a)Keepalived的安装
2.
3.#wgethttp:
//www.keepalived.org/software/keepalived-1.1.15.tar.gz
4.
5.#tarzxvfkeepalived-1.1.15.tar.gz
6.
7.#cdkeepalived-1.1.15
8.
9.#./configure
10.
显示出以下结果:
Keepalivedconfiguration
------------------------
Keepalivedversion:
1.1.17
Compiler:
gcc
Compilerflags:
-g-O2
ExtraLib:
-lpopt-lssl-lcrypto
UseIPVSFramework:
Ye
IPVSsyncdaemonsupport:
Yes
UseVRRPFramework:
Yes
UseLinkWatch:
No
UseDebugflags:
No
11.#make
12.
13.#makeinstall
将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.#servicekeepalivedstart|stop
12.
配置主lvs
1.!
ConfigurationFileforkeepalived
2.
3.global_defs{
4.
6.
7.yuhongchun027@
8.
9.}
10.
11.notification_email_fromsns-lvs@
12.
13.smtp_server127.0.0.1
14.
15.router_idLVS_DEVEL_1
16.
17.}
18.
19.vrrp_instanceVI_1{
20.
21.stateMASTER
22.
23.interfaceeth0
24.
25.virtual_router_id51
26.
27.priority100
28.
29.advert_int1
30.
31.authentication{
32.
33.auth_typePASS
34.
35.auth_pass1111
36.
37.}
38.
39.virtual_ipaddress{
40.
41.192.168.1.10
42.
43.}
44.
45.}
46.
47.virtual_server192.168.1.103360{
48.
49.delay_loop6
50.notification_email{
51.lb_algowrr
52.lb_kindDR
54.
55.persistence_timeout60
56.
57.protocolTCP
58.
59.real_server192.168.1.43306{
60.
61.weight3
62.
63.TCP_CHECK{
64.
65.connect_timeout10
66.
67.nb_get_retry3
68.
69.delay_before_retry3
70.
71.connect_port3306
72.
73.}
74.
75.}
76.
77.real_server192.168.1.93306{
78.
79.weight3
80.
81.TCP_CHECK{
82.
83.connect_timeout10
84.
85.nb_get_retry3
86.
87.delay_before_retry3
88.
89.connect_port3306
90.
91.}
92.
93.}
94.
95.}
96.配置备份lvs1.
!
ConfigurationFileforkeepalived
2.
3.global_defs{
4.
5.notification_email{
6.
7.yuhongchun027@
8.
9.}
10.
11.notification_email_fromsns-lvs@
12.
13.smtp_server127.0.0.1
14.
15.router_idLVS_DEVEL_2注意与主不一样的地方
16.
17.}
18.
19.vrrp_instanceVI_1{
20.
21.stateBACKUP注意与主不一样的地
3.
22.
23.interfaceeth0
24.
25.virtual_router_id51
26.
27.priority99注意与主不一样的地
28.
29.advert_int1
30.
31.authentication{
32.
33.auth_typePASS
34.
35.auth_pass1111
36.
37.}
38.
39.virtual_ipaddress{
40.
41.192.168.1.10
42.
43.}
44.
45.}
46.
47.virtual_server192.168.1.103306{
48.
49.delay_loop6
50.
51.lb_algowrr
52.
53.lb_kindDR
54.
55.persistence_timeout60
56.
57.protocolTCP
58.
59.real_server192.168.1.43306{
60.
61.weight3
62.
63.TCP_CHECK{
64.
65.connect_timeout10
66.
67.nb_get_retry3
68.
69.delay_before_retry3
70.
71.connect_port3306
72.
73.}
74.
75.}
76.
77.real_server192.168.1.93306{
78.
79.weight3
80.
81.TCP_CHECK{
82.
83.connect_timeout10
84.
85.nb_get_retry3
86.
87.delay_before_retry3
88.
89.connect_port3306
90.
91.}
92.
93.}
94.
95.}
96.
②分别在二台lvs机上启动servciekeepalivedstart就可实现负载均衡及高可用集群;keepalived.conf内容说明如下:
●●●●全局定义块全局定义块全局定义块全局定义块1、email通知。
作用:
有故障,发邮件报警。
2、Lvs负载均衡器标识(lvs_id)。
在一个网络内,它应该是唯一的。
3、花括号“{}”。
用来分隔定义块,因此必须成对出现。
如果写漏了,keepalived运行时,不会得到预期的结果。
由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。
●VRRP●VRRP●VRRP●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。
负载均衡器之间的监控接口,类似于HAHeartBeat的心跳线。
但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。
在DR模式中,lvs_sync_daemon_inteface与服务接口interface使用同一个网络接口。
(3)(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_servervirtual_servervirtual_servervirtual_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.#websitedirectorvip.
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$0calledwith$1
15.
16.case"$1"in
17.
18.start)
19.
20.#setsquidvip
21.
22./sbin/ipvsadm--set30560
23.
24./sbin/ifconfigeth0:
0$SNS_VIPbroadcast$SNS_VIPnetmask255.255.255.255broadcast$SNS_VIPup
25.
26./sbin/routeadd-host$SNS_VIPdeveth0:
0
27.
28./sbin/ipvsadm-A-t$SNS_VIP:
80-swrr-p3
29.
30./sbin/ipvsadm-a-t$SNS_VIP:
80-r$SNS_RIP1:
80-g-w1
31.
32./sbin/ipvsadm-a-t$SNS_VIP:
80-r$SNS_RIP2:
80-g-w1
33.
34.touch/var/lock/subsys/ipvsadm>>>>/dev/null2>>>>&1
35.
36.;;
37.
38.stop)
39.
40./sbin/ipvsadm-C
41.
42./sbin/ipvsadm-Z
43.
44.ifconfigeth0:
0down
45.
46.routedel$SNS_VIP
47.
48.rm-rf/var/lock/subsys/ipvsadm>>>>/dev/null2>>>>&1
49.
50.echo"ipvsadmstoped"
51.
52.;;
53.
54.status)
55.
56.if[!
-e/var/lock/subsys/ipvsadm];then
57.
58.echo"ipvsadmstoped"
59.
60.exit1
61.
62.else
63.
64.echo"ipvsadmOK"
65.
66.fi
67.
68.;;
69.
70.*)
71.
72.echo"Usage:
$0{start|stop|status}"
73.
74.exit1
75.
76.esac
77.
78.exit0
79.
最新版更新内容如下最新版更新内容如下最新版更新内容如下最新版更新内容如下:
:
:
:
①每台服务器都有二块网卡,分别连接内外网;后端的mysql数据库与web连接采用内网方式,整个网络环境采用内网;
②增加了keepalivedyiyyy.conf语法内容;
③删除了lvs.sh脚本内容,直接让keepalived内容更直接明了,新增加了单lvs的配置脚本lvs_dr.sh;
④lvs主从机上的keepalived.conf文件我直接从生产服务器上download下来了,可方便大家使用。
※※※※值得注意的是值得注意的是值得注意的是值得注意的是:
:
:
:
1、你必须向你的服务器所在机房IDC多申请一个IP供VIP使用;多关注/var/log/messages和ipvsadm-ln,利用其有效信息排错。
2、服务器的iptables、Selinux均关闭;在生产环境中,我就遇到了iptables的NAT转发问题,导致了lvs失败。
3、keepalived的启动