实验环境
-
centos 7.6 mini
-
关闭selinux
-
关闭firewalld
-
时间同步
实验步骤
- 安装相关依赖
yum install libnfnetlink-devel libnfnetlink \
ipvsadm libnl libnl-devel libnl3 libnl3-devel \
lm_sensors-libs net-snmp-agent-libs net-snmp-libs \
openssh-server openssh-clients openssl openssl-devel \
automake iproute gcc gcc-c++ wget tree
- 下载软件
wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz -c /usr/local/src/
- 解压并编译
cd /usr/local/src
tar xvf keepalived-2.0.19.tar.gz
cd keepalived-2.0.19
./configure --prefix=/usr/local/keepalived --disable-fwmark
make && make install
- 查看编译后的目录结构
tree -L 3
.
├── bin
│ └── genhash
├── etc
│ ├── keepalived
│ │ ├── keepalived.conf
│ │ └── samples
│ └── sysconfig
│ └── keepalived
├── sbin
│ └── keepalived
└── share
├── doc
│ └── keepalived
├── man
│ ├── man1
│ ├── man5
│ └── man8
└── snmp
└── mibs
15 directories, 4 files
- 修改配置文件
! Configuration File for keepalived
global_defs {
# 发生故障切换时邮件发送的对象,可以按行区分写多个
notification_email {
miosy1996@gmail.com
root@localhost
}
notification_email_from root@localhost
# smtp服务地址
smtp_server 127.0.0.1
# smtp连接超时时间(s)
smtp_connect_timeout 30
# 路由id 通常是当前服务器的主机名
router_id 7_07
# 所有报文都检查比较消耗性能,此配置为如果收到的报文和上一个报文是同一个路由器则跳过检查报文中的源地址
vrrp_skip_check_adv_addr
# 严格遵守VRRP协议,不允许状况:1,没有VIP地址,2.配置了单播邻居,3.在VRRP版本2中有IPv6地址.
#vrrp_strict
# ARP报文发送延迟
vrrp_garp_interval 0
# 消息发送延迟
vrrp_gna_interval 0
# 默认组播IPv4地址, 224.0.0.0到239.255.255.255
#vrrp_mcast_group4 224.0.0.18
# 默认组播IPv6地址
#vrrp_mcast_group6 ff02::12
# 开启表示禁用iptables选项,即不添加任何iptables规则
vrrp_iptables
}
vrrp_instance VI_1 {
# 当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
state MASTER
#state BACKUP
#绑定为当前虚拟路由器使用的物理接口 ens32,eth0,bond0,br0
interface eth0
# 当前虚拟路由器惟一标识,范围是0-255
virtual_router_id 38
#当前物理节点在此虚拟路由器中的优先级;范围1-254
priority 100
# vrrp通告的时间间隔,默认1s
advert_int 2
# 非抢占模式,与state BACKUP 同用
#nopreempt
#preempt_delay 60s #抢占延迟模式,默认延迟300s 与state BACKUP 同用
# 单播模式,需事先关闭全局 vrrp_strict 选项,否则报错
unicast_src_ip 192.168.38.7 # 本机IP
unicast_peer {
192.168.38.37 # 其他keepalived主机IP
}
# 认证机制 输入的密码仅前8位有效
authentication {
auth_type PASS
auth_pass 123456
}
# 虚拟IP地址列表
virtual_ipaddress {
192.168.38.110/24 dev eth0 label eth0:1
192.168.38.120/24 dev eth0 label eth0:2
}
}
- 修改sysconfig/keepalived 指定keepalived启动时参数
将
KEEPALIVED_OPTIONS="-D"
改为
KEEPALIVED_OPTIONS="-f /usr/local/keepalived/etc/keepalived/keepalived.conf -D -S 5"
# -f 指定当前配置文件位置,默认为/etc/keepalived/keepalived.conf
# -s 指定日志存放位置,默认为/var/log/messages中
- 根据keepalived指定的日志位置创建目录,根据指定的方式修改rsyslog.conf配置文件
mkdir /usr/local/keepalived/log
vi /etc/rsyslog.conf
#### RULES ####
# Save keepalived messages also to keepalived.log
local5.* /usr/local/keepalived/log/keepalived.log
systemctl restart rsyslog
- 启动keepalived服务
systemctl enable --now keepalived
# 编译安装后,service文件默认放到启动脚本所在路径,如果没有将源码包中service文件拷贝到相应目录即可
# cp /usr/local/src/keepalived-2.0.19/keepalived/keepalived.service /usr/lib/systemd/system/