Keepalived实现Haproxy高可用

keepalived

keepalived用于实现集群高可用,相对于zookeeper 配置简单,只负责分清主从关系,不传输元数据(元数据指的是描述数据信息的数据)。
Zookeeper传输元数据,所以Zookeeper下的组件“人人平等”,都可以处理请求。而keepalived中的cluster只有在master宕机才能起作用。
keepalived 通过脚本的形式检测组件的状态(如haproxy)
keepalived各节点之间通过抢占虚拟IP(即VIP)的方式来实现请求的转发。

keepalived的安装
第一步安装openssl

yum install gcc gcc-c++ openssl openssl-devel

第二步解压安装keepalived

tar -zxvf keepalived-1.2.18.tar.gz
cd keepalived-1.2.18
./configure --prefix=/usr/local/keepalived
make && make install

第三步 将keepalived设成系统服务

    复制默认配置文件到默认路径
    mkdir /etc/keepalived
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    复制 keepalived 服务脚本到默认的地址
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
    ln -s /usr/local/keepalived/sbin/keepalived /sbin/
    设置 keepalived 服务开机启动
    chkconfig keepalived on


## keepalived 抢占式获取VIP(虚拟IP地址)

Master主机配置

 - 注意选择绑定VIP的网络接口
 - 主、从机要使用同一虚拟路由ID
 - backup模式和master模式的区别(即state属性):backup即使有优先级更高的备用机出现,也不会抢占VIP,除非当前master宕机;master模式高优先级的备用机会立即抢占VIP。

    global_defs {
    ## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
    router_id master ## 标识本节点的字条串,通常为 hostname
    
    ##这里可以开启邮件提醒
    notification_email {
         [email protected] #开启提醒
       }
       notification_email_from [email protected] #变更提醒
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id MySQL-HA
    
    }
    vrrp_script chk_haproxy {
    script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight 2 ## 如果条件成立,权重+2
    }
    ## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
    state BACKUP ## 默认主设备(priority 值大的)和备用设备(priority 值小的)都设置为 BACKUP,
    ## 由 priority 来控制同时启动情况下的默认主备,否则先启动的为主设备
    interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
    virtual_router_id 91 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用,
    ## 相同的 VRID 为一个组,他将决定多播的 MAC 地址
    priority 120 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
    nopreempt ## 主设备(priority 值大的)配置一定要加上 nopreempt,否则非抢占也不起作用
    advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
    ## 设置验证信息,两个节点必须一致
    authentication {
    auth_type PASS
    auth_pass 1111 ## 真实生产,按需求对应该过来
    }
    ## 将 track_script 块加入 instance 配置块
    track_script {
    chk_haproxy ## 检查 HAProxy 服务是否存活
    }
    ## 虚拟 IP 池, 两个节点设置必须一样
    virtual_ipaddress {
    192.168.25.102 ## 虚拟 ip,可以定义多个,每行一个
    }
    }

备用机配置

! Configuration File for keepalived
global_defs {
router_id cluster

##这里可以开启邮件提醒
notification_email {
     [email protected] #开启提醒
   }
   notification_email_from [email protected] #变更提醒
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id MySQL-HA
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 91
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.25.102
}
}
发布了226 篇原创文章 · 获赞 40 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_40990818/article/details/101266565