keep real Mysql 高可用

keepalived Mysql 高可用

安装

#下载keepalive源码包:
wget https://www.keepalived.org/software/keepalived-1.3.5.tar.gz
#解压:
tar -xf keepalived-1.3.5.tar.gz -C /usr/src/
#安装依赖包:
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel libnl libnl-devel libnfnetlink libnfnetlink-devel
#预编译keepalive:
cd /usr/src/keepalived-1.3.5/
./configure --prefix=/usr/local/keepalived/ --with-kernel-dir=/usr/src/kernels/3.10.0-514.el7.x86_64/
#编译&&安装keepalive:
make && install
#安装完成后,keepalived的默认配置文件地址不一样所以复制过去就可以了
cp /usr/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/
cp /usr/src/keepalived-1.3.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#配置环境变量
vim /etc/profile
#后面添加如下内容:
export PATH=$PATH:/usr/local/keepalived/sbin
  source /etc/profile 

写脚本并赋予权

vim /opt/my.sh
#!/bin/sh
#查看3306端口返回监听此端口的进程数
STAT=`netstat -ant|grep LISTEN|egrep "3306"|wc -l`
#判断进程是否小于0,如果小于0停止keepalived
if [ $STAT -eq 0 ];then
      systemctl stop keepalived
      exit
fi
:wq
chmod +x my.sh

编写keepalived配置文件

! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
vrrp_script chk_mysql_port {     #检测mysql服务是否在运行。有很多方式,比如进程,用脚本检测等等
    script "/opt/my.sh"          #这里通过脚本监测
    interval 2                   #脚本执行间隔,每2s检测一次
    weight -20                   #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
    fall 2                       #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
    rise 1                       #检测1次成功就算成功。但不修改优先级
}

}
vrrp_instance VI_1 {
        state BACKUP                               #mysql-M与mysql-B保持均为BACKUP
        interface eno16780032                      #网卡接口
        virtual_router_id 77                       #router id保持一直
        priority 100                               #优先级,mysql-B数值小于100
        advert_int 1
        authentication {
                     auth_type PASS
                     auth_pass 1111                #M与B要一致
        }
        virtual_ipaddress {
             192.168.2.99                           #VIP地址 M与B要一致
        }

        track_script {
                chk_mysql_port
        }


}

以上是M的配置的,可以复制到B里,修改一下优先级 之后重启即可

systemctl restart keepalived

执行脚本

#!/bin/sh
PATH=/usr/sbin:/usr/bin:$PATH
export PATH
STAT=`netstat -ant|grep LISTEN|egrep "3306"|wc -l`
if [ $STAT -eq 0 ];then
      /etc/init.d/keepalived stop
      exit
fi

    - name: "Statistics CPU Memory Disk Utilization..."
      shell: |

详细参数

[全局定义块]
global_defs {
      notification_email {           			    --指定keepalived在发生切换时需要发送email到的对象,一行一个;
         wgkgood@gmail.com	                      
      }	
     notification_email_from  root@localhost	    --指定发件人
     smtp_server  127.0.0.1           			    --指定smtp服务器地址
     smtp_connect_timeout 3          	            --指定smtp连接超时时间
     router_id LVS_DEVEL             			    --运行keepalived机器的标识
}	
[监控Nginx进程]			
vrrp_script	chk_nginx  {	
    script "/data/script/nginx.sh"      		    --监控服务脚本,脚本x执行权限;
    interval 2                    				    --检测时间间隔(执行脚本间隔)
    weight 2	                                    --权重
}				
[VRRP实例定义块]				
vrrp_sync_group VG_1{                			    --监控多个网段的实例
        group {			 	
  VI_1                     			                --实例名1
  VI_2	
 }	
 notify_master /data/sh/nginx.sh          		    --指定当切换到master时,执行的脚本
 notify_backup /data/sh/nginx.sh          		    --指定当切换到backup时,执行的脚本
 notify   /data/sh/nginx.sh						    --发生任何切换,均执行的脚本
 smtp_alert                         			    --使用global_defs中提供的邮件地址和smtp服务器发送邮件通知;
}		
vrrp_instance VI_1 {		
    state BACKUP                    			    --设置主机状态,MASTER|BACKUP
	nopreempt                       			    --设置为不抢占
interface eth0                   			        --对外提供服务的网络接口
lvs_sync_daemon_inteface eth0                       --负载均衡器之间监控接口; 
    track_interface {               	 			--设置额外的监控,网卡出现问题都会切换;
     eth0	
     eth1	
    }	
    mcast_src_ip                    			    --发送组播包的地址,如果不设置默认使用绑定网卡的primary ip
    garp_master_delay              				    --在切换到master状态后,延迟进行gratuitous ARP请求
    virtual_router_id 50            			    --VRID标记 ,路由ID,可通过#tcpdump vrrp查看
    priority 90                    				    --优先级,优先级高者竞选为master
    advert_int 5                    			    --检查间隔,默认5秒
    preempt_delay                   			    --抢占延时,默认5分钟
    debug                           			    --debug日志级别
    authentication {                			    --设置认证
        auth_type PASS              			    --认证方式
        auth_pass 1111          				    --认证密码
    }
	track_script {                      		    --以脚本为监控chk_nginx;
        chk_nginx		
    }		
    virtual_ipaddress {             			    --设置vip地址
        192.168.111.188
    }
}
注意:使用了脚本监控Nginx或者MYSQL,不需要下面虚拟服务器设置块。
[虚拟服务器定义块]
virtual_server 192.168.111.188 3306 {
    delay_loop 6                   	               --健康检查时间间隔
    lb_algo rr                     	               --调度算法rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR                     				   --负载均衡转发规则NAT|DR|TUN
    persistence_timeout  5        	     		   --会话保持时间
    protocol TCP                   				   --使用的协议
    real_server 192.168.1.12 3306 {	
               weight 1            				   --默认为1,0为失效
               notify_up   <string> | <quoted-string> --在检测到server up后执行脚本;
               notify_down <string> | <quoted-string> --在检测到server down后执行脚本;
               TCP_CHECK {
               connect_timeout 3    		       --连接超时时间;
               nb_get_retry  1     				   --重连次数;
               delay_before_retry 1  			   --重连间隔时间;
               connect_port 3306  				   --健康检查的端口;
               }
       HTTP_GET {    
       url  {
          path /index.html          		       --检测url,可写多个
          digest  24326582a86bee478bac72d5af25089e --检测效验码
          --digest效验码获取方法:genhash -s IP -p 80 -u http://IP/index.html 
          status_code 200                          --检测返回http状态码
      }
}
}
- name: Find files
  win_find:
    paths: C:\Downloads
    recurse: yes
  register: dwnlds_list

- name: Output file list
  debug: msg="{{ dwnlds_list | json_query('files[].path') }}"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值