安装前准备
基础系统:CentOS 7
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
1. 下载 keepalived
方法一:
yum -y install keepalived
方法二:
下载二进制源码包:http://www.keepalived.org/dow…
# 下载安装文件
cd /usr/local
wget http://www.keepalived.org/software/keepalived-2.0.18.tar.gz
#解压文件
tar -zxvf keepalived-2.0.18.tar.gz
#编译
cd keepalived-2.0.18/
#--prefix 指定安装地址
#/usr/local/keepalived/ 安装的目录,不要和自己安装文件一个目录,不然报错
./configure --prefix=/usr/local/keepalived/
#编译并安装
make && make install
2. 配置
复制文件:
[root@localhost ~]# cp /usr/local/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/
[root@localhost ~]# mkdir /etc/keepalived
[root@localhost ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost ~]# cp /usr/local/keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
编辑:
vi /etc/keepalived/keepalived.conf
/etc/keepalived/keepalived.conf 内容如下
global_defs {
notification_email {
#mr@mruse.cn # 指定 keepalived 在发生切换时需要发送 email 到的对象,一行一个
#sysadmin@firewall.loc
}
notification_email_from xxx@163.com # 指定发件人
smtp_server smtp@163.com # smtp 服务器地址
smtp_connect_timeout 30 # smtp 服务器连接超时时间
router_id LVS_1 # 必填,标识本节点的字符串, 通常为 hostname, 但不一定非得是 hostname, 故障发生时, 邮件通知会用到
}
vrrp_script chk_tomcat { #详细看下面
script "/etc/keepalived/tomcat_check.sh" #检测服务 shell
interval 2 #每个多长时间探测一次
weight -20 #每个多长时间探测一次
}
_instance VI_1 { # 实例名称
state MASTER # 必填,可以是 MASTER 或 BACKUP,不过当其他节点 keepalived 启动时会将 priority 比较大的节点选举为 MASTER
interface ens33 # 必填,节点固有 IP(非 VIP)的网卡,用来发 VRRP 包做心跳检测
mcast_src_ip 192.168.2.89 #本机的 ip,需要修改
virtual_router_id 101 # 必填,虚拟路由 ID, 取值在 0 -255 之间, 用来区分多个 instance 的 VRRP 组播, 同一网段内 ID 不能重复; 主备必须为一样;
priority 100 # 必填,用来选举 master 的, 要成为 master 那么这个选项的值最好高于其他机器 50 个点, 该项取值范围是 1 -255(在此范围之外会被识别成默认值 100)
advert_int 1 # 必填,检查间隔默认为 1 秒, 即 1 秒进行一次 master 选举(可以认为是健康查检时间间隔)
authentication {# 必填,认证区域, 认证类型有 PASS 和 HA(IPSEC), 推荐使用 PASS(密码只识别前 8 位)
auth_type PASS # 默认是 PASS 认证
auth_pass 1111 # PASS 认证密码
}
virtual_ipaddress {192.168.2.90 # 必填,虚拟 VIP 地址, 允许多个}
track_script { # 检测 shell
chk_tomcat
}
}
vrrp_script 里的 script 返回 值为 0 时认为 检测成功 , 其它值 都会当成 检测失败;
- weight 为正时 , 脚本检测成功时此 weight 会加到 priority 上,检测失败时不加;
A. 主失败:主 priority < 从 priority + weight 时会切换。
B. 主成功:主 priority + weight > 从 priority + weight 时,主依然为主
- weight 为负时 , 脚本检测成功时此 weight 不影响 priority,检测失败时 priority – abs(weight)
A. 主失败:主 priority – abs(weight) < 从 priority 时会切换主从
主成功:主 priority > 从 priority 主依然为主
检测 shell:/etc/keepalived/tomcat_check.sh 可以根据 tomcat 服务检测结果返回不同的值,成功执行 exit 0 返回 0,失败执行 exit 1 返回 1,vrrp_script 可以结合返回值来对当前 keepalived 优先级做处理
3. 开启服务
设置 keepalived 服务开机启动
# chkconfig keepalived on
# 启动 keepalived 服务
# service keepalived start
查看 keepalived 进程,出现如下三个进程即为启动成功
[root@localhost ~]# ps -ef | grep keep
root 7925 1 0 11:27 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
root 7926 1 0 11:27 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
root 7927 7926 0 11:27 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
root 7956 7888 0 12:02 pts/1 00:00:00 grep --color=auto keep
4. 指定日志的输出文件
修改 /etc/sysconfig
vim /etc/sysconfig
#指定位置修改为如下内容
KEEPALIVED_OPTIONS="-D -d -S 0"
修改 /etc/rsyslog.conf
vim /etc/rsyslog.conf
#在最后一行添加如下内容
local0.* /var/log/keepalived.log
重启服务测试
service rsyslog restart
service rsyslog restart
#如下命令有日志内容输出即为成功
tailf /var/log/keepalived.log
#centos 基本可以成功,但是 debain 可能失败,失败上面 2 个文件可以改为如下内容,再重启服务测试
KEEPALIVED_OPTIONS="-D -d -S 1"
local1.* /var/log/keepalived.log
参考:https://blog.csdn.net/weixin_…
如果有哪些不对的地方烦请指认,先行感谢