11-使用keepalived做mysql双主高可用

keepalived 是什么

keepalived 是集群管理中保证集群高可用的一个服务软件, 用来防止单点故障。

keepalived 工作原理

keepalived 是以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议, 即将 N 台提供相同功能的路由器组成一个路由器组,这个组 里面有一个 master 和多个 backup,master 上面有一个对外 提供服务的 vip(该路由器所在局域网内其他机器的默认路 由为该 vip),master 会发组播,当 backup 收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选 举一个 backup 当 master。这样的话就可以保证路由器的高 可用了。

keepalived 主要有三个模块,分别是 core、check 和 vrrp。 core 模块为 keepalived 的核心,负责主进程的启动、维护以 及全局配置文件的加载和解析。check 负责健康检查,包括 常见的各种检查方式。 vrrp 模块是来实现 VRRP 协议的。

双主上配置keepalived

以mysql01安装为例,mysql02一样

安装依赖包

[root@mysql01 src]# yum -y install libnl libnl-devel openssl-devel gcc

解压

[root@mysql01 src]# tar -zxvf keepalived-2.0.20.tar.gz

编译安装

[root@mysql01 keepalived-2.0.20]# ./configure --prefix=/usr/local/keepalived
[root@mysql01 keepalived-2.0.20]# make && make install

拷贝文件到默认启动位置

[root@mysql01 keepalived-2.0.20]# mkdir /etc/keepalived
[root@mysql01 keepalived-2.0.20]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ # 必须
[root@mysql01 keepalived-2.0.20]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ # 必须
[root@mysql01 keepalived-2.0.20]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/ # 必须

查看是否加入服务,并设置开机启动

[root@mysql01 keepalived-2.0.20]# systemctl list-unit-files | grep keepalived
[root@mysql01 keepalived-2.0.20]# systemctl enable keepalived

查看服务配置

[root@mysql01 keepalived-2.0.20]# cat /usr/lib/systemd/system/keepalived.service
[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/keepalived.pid  # 默认的pid文件路径
KillMode=process
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

创建脚本

[root@mysql01 keepalived]# touch /usr/local/keepalived/kill_keepalived.sh
[root@mysql01 keepalived]# vi /usr/local/keepalived/kill_keepalived.sh
#!/bin/bash
kill -9 $(cat /run/keepalived.pid)
[root@mysql01 keepalived]# chmod +x /usr/local/keepalived/kill_keepalived.sh

修改配置文件

[root@mysql01 keepalived]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id mysql01  # 建议设置为主机名
}

vrrp_instance VI_1 {
    state BACKUP  # MASTER或BACKUP,为了防止脑裂现象,主备均需要设置为backup模式,master模式会抢占VIP  
    interface ens33  # 网卡接口名
    virtual_router_id 51  # 一个组中router_id必须一致
    priority 100  # 优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高
    nopreempt  # 非抢占,只能运行在BACKUP上,配合backup,防止切换后,主库服务恢复正常后,IP漂移过来 
    advert_int 1  # MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒
    authentication {
        auth_type PASS  # 验证类型为PASS
        auth_pass 000000 # 设置密码
    }
    virtual_ipaddress {
        192.168.17.130  # 虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码 
    }
}

virtual_server 192.168.17.130 3306 {
    delay_loop 6  # 健康检查间隔,单位为秒
    persistence_timeout 50  # 会话保持时间,就是把用户请求转发给同一个服务器
    protocol TCP  # 转发协议,有TCP和UDP两种,一般用TCP

    real_server 192.168.17.131 3306 {
        notify_down /usr/local/keepalived/kill_keepalived.sh
        TCP_CHECK {    # 健康检查的意思是:如果192.168.17.131的3306端口挂掉了,就会触发kill_keepalived.sh脚本
            connect_timeout 3   # 连接超时时间
            nb_get_retry 3  # 重连次数
            delay_before_retry 3  # 重连时间间隔
            connect_port 3306   # 检测端口
        }
    }
}

启动keepalived

[root@mysql01 keepalived-2.0.20]# systemctl start keepalived

配置双主

配置过程略,查看前面文章。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值