记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。


Hyper-v安装Centos7系统与Mariadb10.5互为主从与keepalive高可用

MySQL的高可用方案有很多种,双主、MHA、MMM等等,这里只是写下最简单的双主这种高可用方案。

一、配置MySQL互为主从.

       1,主机环境准备,我这里主机系统为Windows Server 2019,安装Hyper-v后,再安装hyper-v安装Centos7虚拟机。

系统IP主机名服务
Centos 7.5192.168.137.31centos-31MariaDB10.5+keepalived 1.3.5
Centos 7.5192.168.137.38centos-38MariaDB10.5+keepalived 1.3.5

       2,MariaDB10.5 互为主从的配置,参考: https://www.micoder.cc/blog/2324.html ,配置比较简单。


二、配置keepalived高可用

1、安装keepalived
两个节点都需要执行以下命令,以便安装keepalived。

  yum -y install keepalived


2、修改主机Centos7-31的keepalived配置文件。我这里配置了三个vip ,配置多少vip并不影响使用。

[root@centos-31 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived


global_defs {
   notification_email {
   root@localhost
   }


   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id mysql-2
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.41/24
        192.168.137.42/24
        192.168.137.43/24
    }
}


virtual_server 192.168.137.41 3306 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP


    real_server 192.168.137.31 3306 {
        weight 1


    notify_down /etc/keepalived/bin/mysql.sh    #检测到real_server的MySQL服务宕机后执行的脚本。
    TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
    }
}
}


3,准备指定的脚本
[root@centos-31 keepalived]# pwd
/etc/keepalived
[root@centos-31 keepalived]# mkdir bin
[root@centos-31 keepalived]# vim bin/mysql.sh
#!/bin/bash
pkill keepalived    #停止keepalived服务


[root@centos-31 keepalived]# chmod +x bin/mysql.sh    #赋予脚本执行权限


[root@centos-31 ~]# systemctl start keepalived        #启动keepalived服务

4,确定eth0网卡有虚拟Ip



5,修改主机Centos7-38的keepalived配置文件,只需要修改priority,real_server 三个参数就行。

具体配置文件如下:


[root@centos-38 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived


global_defs {
   notification_email {
   root@localhost
   }


   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id mysql-2
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.41/24
        192.168.137.42/24
        192.168.137.43/24
    }
}


virtual_server 192.168.137.41 3306 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP


    real_server 192.168.137.38 3306 {
        weight 1


    notify_down /etc/keepalived/bin/mysql.sh    #检测到real_server的MySQL服务宕机后执行的脚本。
    TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
    }
}
}


说明: 
1)两个keepalived都是配置  BACKUP角色,priority优先级也是一样的值,那么哪个keepalived先启动,
那么就会成会master。

即使vip漂移后,原来旧的master恢复正常后,vip也不再漂移。如果两个主机一样环境,建议此种方案。

2)两个keepalived都是配置  BACKUP角色,priority优先级不一样,那么优先级高的,就会成master,即使vip漂移后,

原来的master主机恢复正常后,vip也会漂移回来。两台主机如果配置不一样,建议采用此种方案。

3)vrrp_instance 区域中添加参数: lvs_sync_daemon_interface eth0 ,那么心跳检测运行在eth0网卡上。

4) router_id的值是否一样,未发现有什么区别,当然最好是唯一的,不要一样。


6,配置脚本 mysql.sh,然后启动keepalived服务。

如果VIP 转移到 centos7-38主机,说明,keepalived是配置正常的。测试下IP是否互通。


7,测试主机或mariadb有故障时,vip是否能转移。

8,keepalived的vip会出现master网卡禁用后,vip漂移到slave时,可能会出现无法生成vip,原因在于arp没有更新。

如下面检查arp信息出现的情况。

[root@node2 ~]#     ip neigh show
192.168.137.32 dev eth0  FAILED
192.168.137.1 dev eth0 lladdr 00:15:5d:02:c6:04 REACHABLE
172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 STALE


可能需要刷新arp后才能正常生成vip信息。

[root@node2 ~]#  ip neigh flush dev eth0



9, 添加防火墙规则

因为vrrp使用224.0.0.18这个组播地址,所以必须添加组播规则或者关闭防火墙,否则会出现脑裂现象。

添加:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

查看:

firewall-cmd --direct --get-all-rules

ipv4 filter OUTPUT 0 --out-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT



转载请标明出处【Hyper-v安装Centos7系统与Mariadb10.5互为主从与keepalive高可用】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论