Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon

    9 主主和keepalived

    author iconClaycalendar icon2022年9月13日category icon
    • MySQL
    timer icon大约 2 分钟

    此页内容
    • keepalived简介
    • keepalived组件
    • mysql主主搭建

    # 9 主主和keepalived

    # keepalived简介

    keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测;通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器宕机,其虚拟IP地址将会被其他服务器接替(优先级决定接替顺序),实现高可用为后端主机提供服务。

    VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议open in new window。

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

    # keepalived组件

    Keepalived组件介绍

    wKiom1gVgVqxP0nVAADi2pjRuog301.png

    • core:keepalived核心组件,主进程的启动和维护,全局配置等。

    • vrrp stack:keepalived是基于vrrp协议实现高可用vps服务,vrrp则为相关子进程为其提供服务

    • check:检测keepalived的健康状态相关进程

    • system call:系统调用

      watch dog:监控check和vrrp进程的看管者,check负责检测器子进程的健康状态,当其检测到master上的服务不可用时则通告vrrp将其转移至backup服务器上。

    # mysql主主搭建

    1. 下载二进制bin文件

      wget https://clay-wangzhi.com/mysql-download/mysql-boost-5.7.20-bin.tar.gz
      mv mysql-boost-5.7.20-bin.tar.gz /opt/software/
      
      1
      2
    2. 下载roles

      git clone -b dev-clay https://github.com/clay-wangzhi/Ansible-roles.git
      cp -r Ansible-roles/mysql57/ /etc/ansible/roles/
      
      1
      2
    3. 编写playbook执行

      cat /etc/ansible/playbooks/mysql_replication_ga.yml

      ---
      - hosts: 172.xx.xx.47
        roles:
        - role: 'mysql57'
          mysql57_port: '3306'
          mysql57_replication_role: 'master'
          mysql57_replication_user: {name: 'rep_47', password: '123456'}
      
      - hosts: 172.xx.xx.48
        roles:
        - role: 'mysql57'
          mysql57_port: '3306'
          mysql57_replication_role: 'master'
          mysql57_replication_user: {name: 'rep_48', password: '123456'}
      
      
      - hosts: 172.xx.xx.47
        roles:
        - role: 'mysql57'
          mysql57_port: '3306'
          mysql57_auto_increment_offset: '1'
          mysql57_auto_increment_increment: '2'
          mysql57_replication_role: 'slave' # 指定为slave角色
          mysql57_replication_master: '172.xx.xx.48'
          mysql57_replication_master_port: '3306'
          mysql57_replication_user: {name: 'rep_48', password: '123456'}
      
      - hosts: 172.xx.xx.48
        roles:
        - role: 'mysql57'
          mysql57_port: '3306'
          mysql57_auto_increment_offset: '2'
          mysql57_auto_increment_increment: '2'
          mysql57_replication_role: 'slave' # 指定为slave角色
          mysql57_replication_master: '172.xx.xx.47'
          mysql57_replication_master_port: '3306'
          mysql57_replication_user: {name: 'rep_47', password: '123456'}
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37

      执行playbook

      ansible-playbook mysql_replication_ga.yml
      
      1
    edit icon编辑此页open in new window
    上次编辑于: 2022/9/13 07:28:38
    贡献者: clay-wangzhi
    备案号:冀ICP备2021007336号
    Copyright © 2023 Clay