装keepalived前,要先检查主机上是否已经安装,
ps -ef | grep keepalive
不检查的话。easy把前人装的东西覆盖掉,那么曾经弄的配置文件都没了比較麻烦。


下面都为root用户
root用户上传工具,压缩包就200多k,不大。
cd && mkdir fwy && chmod 777 fwy && cd fwy
scp padba@cnsz081003:/paic/dba/dbsoft/mysql/keepalived-1.1.19.tar.gz .
passwordMdCg2014
tar xvf keepalived-1.1.19.tar.gz
mv keepalived-1.1.19 ..

安装OpenSSL
[root@cnsh042942 fwy]# yum install openssl-devel
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
el6_u5_base | 1.2 kB 00:00
Setting up Install Process
Package openssl-devel-1.0.1e-15.el6.x86_64 already installed and latest version
Nothing to do

编译并安装
mv /root/fwy/keepalived-1.1.19 /root
cd /root/keepalived-1.1.19
./configure
make && make install

配置
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/sbin/keepalived /usr/sbin/
mkdir /opt/keepalived
touch /etc/keepalived/keepalived.conf

配置脚本
[root@cnsh042942 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 00:50:56:aa:0a:89 brd ff:ff:ff:ff:ff:ff
3: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP
    link/ether 00:50:56:aa:0a:89 brd ff:ff:ff:ff:ff:ff
    inet 10.31.10.138/24 brd 10.31.10.255 scope global bond0
    inet6 fe80::250:56ff:feaa:a89/64 scope link
       valid_lft forever preferred_lft forever

我们的10.31.10.138是绑定在bond0上的,bond0应该算是虚拟网卡。

当中interface bond0的bond0。virtual_router_id 117的117。virtual_ipaddress中的地址。是写成自己想要的vip,也是DA先申请好一个vip以免冲突。


touch /opt/keepalived/keepalived_check_mysql.sh
touch /opt/keepalived/to_master.sh

keepalived.conf配置文件,该文件存在可是是空的。
ls -l /etc/keepalived/keepalived.conf

Master节点用例如以下脚本:
vrrp_script check_mysql {
  script "/opt/keepalived/keepalived_check_mysql.sh"
  weight -10
}
vrrp_instance KEEPALIVED_MYSQL {
        ##注意:两台MYSQLserver都设置为BACKUP
        state backup
        interface bond0
        virtual_router_id 117
        ##Master设置为101,Slave设置为100
        priority 101
        nopreempt
       
        track_script {
          check_mysql
        }
        virtual_ipaddress {
                10.31.10.152
        }
        notify_master /opt/keepalived/to_master.sh
}
vrrp_script check_mysql {
  script "/opt/keepalived/keepalived_check_mysql.sh"
  weight -10
}
主库、从库的virtual_router_id值要同样,mysql取100-149之间,假设同一网段已经有同样的virtual_router_id被用了,那么就会起来失败。

Slave节点用例如以下脚本,能够注意到,priority比上面小1。
vrrp_instance KEEPALIVED_MYSQL {
        ##注意:两台MYSQLserver都设置为BACKUP
        state backup
        interface bond0
        virtual_router_id 117
        ##Master设置为101,Slave设置为100
        priority 100
        ##nopreempt
       
        track_script {
          check_mysql
        }
        virtual_ipaddress {
                10.31.10.152
        }
        notify_master /opt/keepalived/to_master.sh
}


创建通道
通道就是,在mysql里面定义一些能够用密文登陆的用户。然后给一些工具直接用密文来登陆的,以保证安全。

切换到mysql用户:
mysql_config_editor set --login-path=keepalived_monitor --host=localhost --user=keepalived --password
--socket=${MYSQL_HOME}/var/mysql.sock
然后就会在mysql用户家文件夹下生成一下.mylogin.cnf文件。

root用户
cd /opt/keepalived/
keepalived_check_mysql.sh脚本例如以下
MYSQL=/usr/bin/mysql,要改动为/paic/t0gimp/rdbms/mysql/5.6/bin/mysql
LOG_FILE=/opt/keepalived/check_mysql.log 这里能够改动为更具识别名称的/opt/keepalived/check_t0gimp.log
export MYSQL_TEST_LOGIN_FILE=/paic/emmsq/data/mysqldata/emmsq /.mylogin.cnf ,这个.mylogin.cnf文件。在mysql用户的家文件夹下。是用mysql用户创建通道时自己主动建立的。
$MYSQL --login-path=keepalived_monitor -e 的”keepalived_monitor改动为实际的通道名“

#!/bin/bash
MYSQL=/paic/t0gimp/rdbms/mysql/5.6/bin/mysql
# 日志文件
LOG_FILE=/opt/keepalived/check_t0gimp.log
export MYSQL_TEST_LOGIN_FILE=/paic/t0gimp/rdbms/mt0gimp/.mylogin.cnf
# 检查次数
CHECK_TIME=3
#mysql is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1
function check_mysql_helth (){
  $MYSQL --login-path=keepalived_monitor -e
"show status;" >/dev/null 2>&1
  if [ $? = 0 ] ;then
    MYSQL_OK=1
  else
    MYSQL_OK=0
  fi
  return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
  let "CHECK_TIME -= 1"
  check_mysql_helth
  if [ $MYSQL_OK = 1 ] ; then
    CHECK_TIME=0
    #echo `date --date=today +"%Y-%m-%d %H:%M:%S"` - [INFO] - mysql available: success[$MYSQL_OK] >> $LOG_FILE
    exit 0
  fi
  if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
  then
    echo `date --date=today +"%Y-%m-%d %H:%M:%S"` - [INFO] - mysql invaild. keepalived stop. >> $LOG_FILE
    exit 1
  fi
  sleep 1
done


to_master.sh  这是从库切换为主库之后执行的shell脚本

#!/bin/bash
MYSQL=/paic/t0gimp/rdbms/mysql/5.6/bin/mysql
VIP=10.31.10.152
GATEWAY=10.31.10.200
/sbin/arping -I bond0 -c
5 -s $VIP $GATEWAY &>/dev/null
$MYSQL --login-path=keepalived_switch -e "set
global read_only=OFF" >/dev/null 2>&1

sh脚本赋权
cd /opt/keepalived
chmod 700 *.sh

keepalived启停
[root@cnsh281018 ~]# /etc/init.d/keepalived start
[root@cnsh281018 ~]# /etc/init.d/keepalived stop

验证,
[root@cnsh042942 keepalived]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
[root@cnsh042942 keepalived]# ps -ef | grep keepa
root 20353 1 0 13:53 ? 00:00:00 keepalived -D
root 20354 20353 0 13:53 ? 00:00:00 keepalived -D
root 20372 1 0 13:53 ? 00:00:00 /bin/bash /opt/keepalived/keepalived_check_mysql.sh
root 20382 20354 3 13:53 ?

00:00:00 keepalived -D

root 20383 20382 0 13:53 ?

00:00:00 /bin/bash /opt/keepalived/keepalived_check_mysql.sh

root 20394 17696 0 13:53 pts/2 00:00:00 grep keepa

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Keepalived安装工具的更多相关文章

  1. Keepalived+HAProxy 搭建高可用负载均衡

    转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...

  2. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  3. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  4. keepalived从机接管后主机恢复不抢占VIP

    在lvs+keepalived环境中,为了减小keepalived主从切换带来的意外风险,,设置主机恢复后不抢占VIP.待进行vrrp协议通告备机不可用时切换.主要修改两个地方.(红色部分) 只需修改 ...

  5. keepalived 知识备注

    keepalived可用于配置nginx/lvs等负载均衡设备的双机热备. keepalived基于VRRP协议,简单的说就是两个物理路由节点(一主一备),虚拟成一个逻辑上的路由节点. 实际消息的路由 ...

  6. Windows下PowerShell监控Keepalived

    一.背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警. 二 ...

  7. Keepalived+LVS+nginx双机热备

    Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...

  8. 基于keepalived双主模型的高可用LVS

    背景知识: keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除, ...

  9. Keepalived使用梳理

    keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防 ...

随机推荐

  1. DZNEmptyDataSet框架简介

    给大家推荐一个设置页面加载失败时显示加载失败等的框架. 下载地址:DZNEmptyDataSet https://github.com/dzenbot/DZNEmptyDataSet 上效果首先在你的 ...

  2. web.xml 中<taglib>报错(转载)

    在web.xml加入taglib <taglib> <taglib-uri>/WEB-INF/tiles.tld</taglib- uri> <taglib- ...

  3. dotnet tools 运行 dotnet run

    dotnet tools 运行 dotnet run dotnet run 命令介绍 前言 本篇主要介绍 asp.net core 中,使用 dotnet tools 运行 dotnet run 之后 ...

  4. Git 配置editor编辑器

    Git 配置editor编辑器 在ubuntu系统下,Git默认的编辑器是命令行,学名叫V什么的,使用起来诸多不便 在编辑提交日志的时候,用的比较多. 可以选择unbuntu默认的文档编辑器作为git ...

  5. 期权put和call

    今天和朋友谈到了FB的期权操作问题,保证一个固定收益或者得到一个以低价买入FB的机会. 首先说下基本概念:call:是指买权put :是指卖权但是这两种期权又分别对应了long和short的两种操作, ...

  6. Java CopyOnWriteArrayList分析

    CopyOnWriteArrayList是一种线程安全的ArrayList,顾名思义,它会利用写时拷贝技术,它对共享对象做仅仅读操作的时候,大家都用一个共享对象,假设有可变的操作时,就会复制一份出来, ...

  7. nginx启动过程分析

    nginx的启动过程紧紧环绕着ngx_cycle_t的结构体展开,首先通过ngx_get_options()获取命令行參数.然后通过ngx_time_init()进行时间的初始化.如全局变量ngx_c ...

  8. HDU1878 欧拉回路 - from lanshui_Yang

    Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路?   Input 测试输入包含若干测试用例.每个 ...

  9. HDU--杭电--1501--Zipper--深搜、DP都好

    Zipper Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  10. malloc & free

    动态分配内存 #include<stdio.h> #include<stdlib.h> int compare_integers(void const *a,void cons ...