前言
最近公司产品的数据出了问题,因为种种原因只能更换数据源;在banner页发了维护公告,进行数据源切换。本以为是比较惬意的周末,没想到又是加班度过,公司现在人手不足的弊端已经显现出来,经常一个人要忙多件事情。
这么忙的情况下,我还想分享一点东西,真是佩服自己。发现自己挺贱的,周末休班的时候,自己打游戏、刷B站;当忙成狗的时候,却要向强压发起反抗。哈哈哈,希望自己悠哉的时候,也能有这样学习的劲头;正所谓居安思危,未雨绸缪,多一点知识,多一点见识,会让自己在风浪里少跌几个跟头;加油⛽️
背景
在甲方的要求下,公司开发的一个项目要上线到新的资源机器上,需要将之前的组件、服务部署上去;机器较多,且新资源机器是局域网;本以为比较容易,结果是被各种坑。尤其是keepalived,简直了!!安装keepalived的是源码包,所以需要编译,坑到极致。
上干货
先不BB空洞的理论,直接进行安装
安装声明
- 所有编译安装的包,在配置生成Makefile文件是,都指定了目录
./configure --prefix=/usr/local/xx,可以按照自己的需要选择。 - 所有编译安装的包,
make install之后,都需要配置环境变量export PATH=/usr/local/xx/bin:${PATH}
安装基础
- 解压keepalived压缩包,先执行
./configure,如果没有警告信息,然后就可以直接make,make install。那么恭喜你,你的机器所有依赖都有,不用往下看了,下面是为被坑的小朋友准备的! - 出现警告信息,说明缺失基础依赖,将服务器中的依赖包,进行安装
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这个命令,可以不导入依赖包。(我这里一共安装了四个依赖) - 依赖包安装完成,重复题目1操作,如果安装完成,那么恭喜你!
导入系统不存在的依赖
- 在keepalived解压的目录下,再次执行
./configure,会生成Makefile文件,然后使用make命令,可能会出现找不到automake-1.15命令的错误提示。 - 服务器有
automake-1.15的压缩包,解压后,进行编译./configure ,make ,make install,可能会出现找不到autoconfig的错误提示 - 服务器有
autoconfig-2.69压缩包,解压后,进行编译,可能出现找不到m4的错误提示 - 服务器有
m4-1.4.17的压缩包,解压,进行编译。然后添加环境变量export PATH=/usr/local/m4/bin:${PATH} - 再对autoconfig 进行编译,印象中会出现
begin 33行、33行等的错误提示,这是因为没有perl环境 - 服务器有
perl-5.16.1的压缩包,解压,编译./Configure -des -Dprefix=/usr/local/perl;过程比较慢。然后添加环境变量export PATH=/usr/local/perl/bin:${PATH} - 再次对 autoconfig进行编译,添加环境变量
export PATH=/usr/local/autoconfig/bin:${PATH} - 对automake进行编译,编译过程中可能会出现要更改
Makefile的情况,遇到问题去百度吧;然后添加环境变量
编译keepalived
./configure --prefix=/usr/local/keepalived
编译 make make install;然后可以看到 /usr/local/keepalived 这个目录了。
启动
- 首先需要设置配置文件,在
/etc下创建keepalived目录,然后创建keepalived.conf;目录是/etc/keepalived/keepalived.conf - 启动需要到
/usr/local/keepalived/sbin下执行sudo ./keepalived - 日志文件是系统的日志文件
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
}
}
附录
- 查看挂载的虚拟ip
ip addr - 删除挂载的虚拟ip
ip addr del ip/24 dev eth0
了解keepalived
- tcp/ip四层协议了解
- LVS了解
- keepalived 工作原理
- VRRP协议了解