2.1安装环境介绍
目前打算在192.168.6.243和192.168.6.244这两台机器上安装Keepalived(首先需要先安装好MySQL,配置好Master-Master主主复制),虚拟IP(VIP)是192.168.6.252,在一台机器上的MySQL出现故障后,VIP自动地漂移到另外一台机器上。
查看下192.168.6.243的环境:
OS: Linuxmds-Master 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64x86_64 GNU/Linux
CPU:8*Intel(R)Xeon(R) CPU E5506 @ 2.13GHz
Mem:32G
Keepalived的相关信息:
Version:1.2.1(注意:不要使用最新版本1.2.2,编译有错误)
下载地址:
MySQL的相关信息
Version:5.1.47+XtraDB
MySQL_Install_Dictory: /usr/local/mysql
MySQL_Config_File:/home/mysql/mysq/my1.cnf
2.2安装过程
2.1解压keepalived-1.2.1.tar.gz
[mysql@mds-Master tool]$ cd/home/wangwei/tools
[mysql@mds-Master tool]$ tar xvzf keepalived-1.2.1.tar.gz
2.2编译
[wangwei@mds-Masterkeepalived-1.2.1]$./configure–prefix=/usr/local/keepalived–with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64
编译出错
configure: error:
!!! OpenSSLis not properly installed on your system. !!!
!!! Can notinclude OpenSSL headers files. !!!
说明系统中没有安装OpenSSL
那就安装下OpenSS:L吧,出错
[mysql@mds-Master tool]# yum install openssl-devel
Loaded plugins: rhnplugin, security
This system is not registered with RHN
原因是linux没有在红帽网络上注册,所以无法下载上面的软件包,替代方案可以使用centos(使用中国科技大学的源 ),具体如何配置我就不写了。
配置完毕后,,使用yum安装openssl-devel:
[root@mds-Master tools]# yum install openssl-devel
Dependency Installed:
e2fsprogs-devel.x86_64 0:1.39-23.el5_5.1 keyutils-libs-devel.x86_64 0:1.2-1.el5 krb5-devel.x86_64 0:1.6.1-55.el5_6.2
libselinux-devel.x86_64 0:1.33.4-5.7.el5 libsepol-devel.x86_64 0:1.15.2-3.el5 zlib-devel.x86_64 0:1.2.3-3
Complete
再次编译
[root@mds-Master keepalived-1.2.1]#./configure –prefix=/usr/local/keepalived–with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64
编译后的信息如下:
Keepalived configuration
————————
Keepalived version : 1.2.1
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use Debug flags : No
Keepalived的安装路径为:/usr/local/keepalived,–with-kernel-dir表示指定Linux的内核位置,因为Keepalived是建立在LVS之上的(Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能,关于LVS是什么东东?可以百度之,也算是国人对Linux的一大贡献,LVS的作者是毕业国防科技大学的章文嵩博士,现就职于淘宝网)。
2.3执行make 操作
[root@mds-Master keepalived-1.2.1]# make
Make complete
make[1]: Leaving directory`/home/wangwei/tools/keepalived-1.2.1/genhash’
Make complete
2.4执行make install 操作
[root@mds-Masterkeepalived-1.2.1]# make install
make -C keepalived install
。。。。。。。。。。。。。。。。
install -m 644 ../doc/man/man1/genhash.1 /usr/local/keepalived/share/man/man1
make[1]: Leaving directory`/home/wangwei/tools/keepalived-1.2.1/genhash’
这样的话,安装就告一段落了,在192.168.6.243上也安装同样版本的Keepalived。
2.5查看安装路径的文件
[root@mds-Master ~]# ls -lh /usr/local/keepalived/
total 16K
drwxr-xr-x 2 root root 4.0K Jul 5 08:54 bin
drwxr-xr-x 5 root root 4.0K Jul 5 08:54 etc
drwxr-xr-x 2 root root 4.0K Jul 5 08:54 sbin
drwxr-xr-x 3 root root 4.0K Jul 5 08:54 share
2.6查看帮助
[root@mds-Master ~]#/usr/local/keepalived/sbin/keepalived–help
Keepalived v1.2.1 (07/04,2011)
Usage:
/usr/local/keepalived/sbin/keepalived
/usr/local/keepalived/sbin/keepalived -n
/usr/local/keepalived/sbin/keepalived -f keepalived.conf
/usr/local/keepalived/sbin/keepalived -d
/usr/local/keepalived/sbin/keepalived -h
/usr/local/keepalived/sbin/keepalived-v
。。。。。。。。
可见版本是1.2.1,显示也很正常
2.7创建配置文件
[root@mds-Master ~]# more/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
wei.wang@99bill.com
}
notification_email_from wei.wang@99bill.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_instance VI_1 {
state Backup#两台配置此处均是Backup
interface eth0#VIP绑定在那块网卡上
smtp_alert#开启邮件报警
virtual_router_id 51
priority 100#优先级,另一台改为90
advert_int1 #发送广播信息的间隔时间,单位秒
preempt #抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_typePASS
auth_pass1111
}
virtual_ipaddress {
192.168.6.252#VIP
}
}
virtual_server 192.168.6.252 4321 {
delay_loop 2 #每个2秒检查一次real_server状态
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 192.168.6.243 4321 {
weight 3
notify_down"/etc/keepalived/shutdown_keepalived.sh" #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10#连接超时时间
nb_get_retry 3#重连次数
delay_before_retry #重连间隔时间
connect_port 4321#健康检查端口
}
}
}
global_defs :全局定义,
notification_email:指定Keepalived在发生事件(如:自动切换),需要发送Email到的对象,可以为多个地址
notification_email_from:邮件发送者
smtp_server :发送邮件的邮件服务器,如果本地有开启sendmail的话,可以采用127.0.0.1
vrrp_instance VI_1 :VRRP实例配置,包含了主从状态、VIP、权重等
virtual_server: 虚拟主机,包含了虚拟主机的IP+Port,实际主机的IP+Port,以及检查实际主机的IP+Port异常后的操作等
lb_algo:LVS中的负载均衡调度算法
lb_kind:LVS中的负载均衡转发规则,一般包括DR,NAT,TUN3种,DR是效率最好的一种规则,直接路由转发
[root@mds-Master ~]# /etc/init.d/sendmail status
sendmail (pid31476) is running…
You have new mail in /var/spool/mail/root
[mysql@mds-Master tool]$ more/etc/keepalived/shutdown_keepalived.sh
#!/bin/sh
pkill keepalived
就是检查到MySQL宕机后,自动杀死Keepalived进程,那么另外一台机器上的Keepalived进程在接受广播信息超时后,自动接管VIP,进入到Master状态
上图是Keepalived自动发送的邮件,这个很好,可对Keepalived的状态变更自动监控
2.8启动Keepalived
[root@mds-Master ~]#/usr/local/keepalived/sbin/keepalived -D
默认情况下,Keepalived的配置文件是/etc/keepalived/keepalived.conf
查看日志文件,Keepalived默认的日志文件是/var/log/messages
[root@mds-Master ~]# tail -10 /var/log/messages
Jul 11 17:26:10 mds-Master Keepalived_vrrp:Registering Kernel netlink reflector
Jul 11 17:26:10 mds-Master Keepalived_vrrp:Registering Kernel netlink command channel
Jul 11 17:26:10 mds-Master Keepalived_vrrp:Registering gratutious ARP shared channel
Jul 11 17:26:10 mds-Master Keepalived_vrrp: Openingfile ‘/etc/keepalived/keepalived.conf’.
Jul 11 17:26:10 mds-Master Keepalived_vrrp:Configuration is using : 63222 Bytes
Jul 11 17:26:10 mds-Master Keepalived_vrrp: UsingLinkWatch kernel netlink reflector…
Jul 11 17:26:10 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) Entering Backup STATE
Jul 11 17:26:10 mds-Master Keepalived_vrrp: VRRPsockpool: [ifindex(2), proto(112), fd(11,12)]
Jul 11 17:26:11 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) forcing a new Master election
Jul 11 17:26:12 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) Transition to Master STATE
Jul 11 17:26:13 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) Entering Master STATE
Jul 11 17:26:13 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) setting protocol VIPs.
Jul 11 17:26:13 mds-Master Keepalived_vrrp:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.6.252
至此,Keepalived的安装配置告一段落了。
2.9 Keepalived在RHEL 6.2中的特别之处
Keepalived在RHEL 6.2中,不会自动的加载ipvs模块,可以通过下面命令来确认是否已经加载:
lsmod|grep ip_vs
让我们从自身的禁锢中放心地飞出去,重新审视自己,