MySQL的Keepalived安装、配置、启动

来源:互联网 发布:广播电视台和广电网络 编辑:程序博客网 时间:2024/05/22 13:55
keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,对内解决单点故障,对外提供唯一入口。

keepalived工作原理

keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。
第3层:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。
第4层:Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
第7层:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。


keepalived安装、启动
wget http://www.keepalived.org/software/keepalived-1.2.6.tar.gz
tar zxvf keepalived-1.2.6.tar.gz
cd keepalived-1.2.6
./configure
#或者加上安装路径 ./configure --prefix=/usr/local/keepalived
make
make install

添加Keepalived为系统服务
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
添加keepalived的配置项
vi /etc/keepalived/keepalived.conf

启动
service keepalived start

设置开启启动
chkconfig --add keepalived
chkconfig keepalived on


keepalived配置文件
keepalived.conf配置分为3部分,global_defs,vrrp_instance VI_1,virtual_server。
注:下面蓝色文字是可有可无,红色文字就是需要修改的部分,如果只是测试用,写入virtual_ipaddress,virtual_server,state,priority这四个就可以了。而当主修改好文件后,在从只用修改state,priority,priority不能高于在主设置的值。

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30

   router_id LVS_DEVEL
}

  • notification_email            故障发生时给谁发邮件通知。

  • notification_email_from   通知邮件从哪个地址发出。

  • smpt_server                   通知邮件的smtp地址。

  • smtp_connect_timeout   连接smtp服务器的超时时间。

  • router_id                        标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.100
    }
}

  • state                        可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER,因此该项其实没有实质用途。

  • interface                   节点固有IP(非VIP)的网卡,用来发VRRP包。

  • virtual_router_id         取值在0-255之间,用来区分多个instance的VRRP组播。一个网段内,不能存在不同的router id。

  • priority                      用来选举master的,要成为master,这个选项的值要高于其他机器的值,该项取值范围是1-255(在此范围之外会被识别成默认值100)。

  • advert_int                  监测间隔(秒)

  • nopreempt                防止抢占资源
  • authentication           认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)。

  • virtual_ipaddress vip   虚拟IP,可以多个

  • authentication            认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)。

  • virtual_ipaddress vip   虚拟IP,可以多个

virtual_server 192.168.200.1003306{
    delay_loop 6
     lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50

    protocol TCP
    real_server 192.168.201.10 3306{
         weight 1
            notify_down  /usr/local/MySQL/bin/MySQL.sh
         TCP_CHECK {
            connect_port 3306

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            }
   }
}

  • delay_loop                      每隔N秒查询realserver状态

  • lb_algo                           后端调试算法(load balancing algorithm)。

  • lb_kind                           LVS调度类型NAT/DR/TUN。

  • nat_mask                       网关。

  • persistence_timeout       会话保持时间。

  • real_server                     真正提供服务的服务器IP。

  • weight                           权重。

  • notify_down                  检测到服务down后执行的脚本
  • connect_port                 连接端口。

  • connect_timeout            超时时长。

  • nb_get_retry                  重试次数

  • delay_before_retry         下次重试的时间延迟。

注:notify_down的作用是在mysql停止后,关闭本机的keepalived进程,避免冲突。

#vi /usr/local/MySQL/bin/MySQL.sh  

#!/bin/sh  

pkill keepalived  

#chmod +x /usr/local/MySQL/bin/MySQL.sh


0 0
原创粉丝点击