lxy777 发表于 2015-11-20 08:50:00

MySQL的Keepalived安装、配置、启动

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
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组播。
[*]  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
页: [1]
查看完整版本: MySQL的Keepalived安装、配置、启动