keepalived理解与安装(未完待续...)

862 阅读3分钟

前言

最近公司产品的数据出了问题,因为种种原因只能更换数据源;在banner页发了维护公告,进行数据源切换。本以为是比较惬意的周末,没想到又是加班度过,公司现在人手不足的弊端已经显现出来,经常一个人要忙多件事情。

这么忙的情况下,我还想分享一点东西,真是佩服自己。发现自己挺贱的,周末休班的时候,自己打游戏、刷B站;当忙成狗的时候,却要向强压发起反抗。哈哈哈,希望自己悠哉的时候,也能有这样学习的劲头;正所谓居安思危,未雨绸缪,多一点知识,多一点见识,会让自己在风浪里少跌几个跟头;加油⛽️

背景

在甲方的要求下,公司开发的一个项目要上线到新的资源机器上,需要将之前的组件、服务部署上去;机器较多,且新资源机器是局域网;本以为比较容易,结果是被各种坑。尤其是keepalived,简直了!!安装keepalived的是源码包,所以需要编译,坑到极致。

上干货

先不BB空洞的理论,直接进行安装

安装声明

  1. 所有编译安装的包,在配置生成Makefile文件是,都指定了目录./configure --prefix=/usr/local/xx,可以按照自己的需要选择。
  2. 所有编译安装的包,make install之后,都需要配置环境变量export PATH=/usr/local/xx/bin:${PATH}

安装基础

  1. 解压keepalived压缩包,先执行./configure,如果没有警告信息,然后就可以直接make,make install那么恭喜你,你的机器所有依赖都有,不用往下看了,下面是为被坑的小朋友准备的!
  2. 出现警告信息,说明缺失基础依赖,将服务器中的依赖包,进行安装sudo rpm -ivh xxx.rpm,这个libnl-devel-1.1.4-2.el6.x86_64.rpm可能会出现,依赖错误;使用sudo rpm -ivh libnl-devel-1.1.4-2.el6.x86_64.rpm --nodeps --force这个命令,可以不导入依赖包。(我这里一共安装了四个依赖)
  3. 依赖包安装完成,重复题目1操作,如果安装完成,那么恭喜你!

导入系统不存在的依赖

  1. 在keepalived解压的目录下,再次执行./configure,会生成Makefile文件,然后使用make命令,可能会出现找不到automake-1.15命令的错误提示。
  2. 服务器有automake-1.15的压缩包,解压后,进行编译./configure ,make ,make install,可能会出现找不到autoconfig的错误提示
  3. 服务器有autoconfig-2.69压缩包,解压后,进行编译,可能出现找不到m4的错误提示
  4. 服务器有m4-1.4.17的压缩包,解压,进行编译。然后添加环境变量export PATH=/usr/local/m4/bin:${PATH}
  5. 再对autoconfig 进行编译,印象中会出现begin 33行、33行等的错误提示,这是因为没有perl环境
  6. 服务器有perl-5.16.1的压缩包,解压,编译./Configure -des -Dprefix=/usr/local/perl;过程比较慢。然后添加环境变量export PATH=/usr/local/perl/bin:${PATH}
  7. 再次对 autoconfig进行编译,添加环境变量export PATH=/usr/local/autoconfig/bin:${PATH}
  8. 对automake进行编译,编译过程中可能会出现要更改Makefile的情况,遇到问题去百度吧;然后添加环境变量

编译keepalived

./configure --prefix=/usr/local/keepalived 编译 make make install;然后可以看到 /usr/local/keepalived 这个目录了。

启动

  1. 首先需要设置配置文件,在/etc下创建keepalived目录,然后创建keepalived.conf;目录是/etc/keepalived/keepalived.conf
  2. 启动需要到/usr/local/keepalived/sbin下执行sudo ./keepalived
  3. 日志文件是系统的日志文件sudo tail -f /var/log/message

keepalived配置

! Configuration File for keepalived

#全局配置
global_defs {
   # 标识
   router_id dispatch-1
}

#定义脚本
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
        weight -20
}
vrrp_instance VI_1 {
    state MASTER # 标识为主服务
    interface eth0 #绑定虚拟机的IP
    virtual_router_id 253 # 虚拟路由id,和从机保持一致
    priority 100 #权重,需要高于从机
    advert_int 1
    # 认证方式
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   track_script {
                chk_nginx ## 执行 Nginx 监控的服务
        }
    virtual_ipaddress {
        10.243.3.124
    }
}

附录

  1. 查看挂载的虚拟ip ip addr
  2. 删除挂载的虚拟ip ip addr del ip/24 dev eth0

了解keepalived

  1. tcp/ip四层协议了解
  2. LVS了解
  3. keepalived 工作原理
  4. VRRP协议了解