一、Keepalived概念
1.解决单点故障
2.组件免费
3.可以实现高可用HA机制
4.基于VRRP协议,解决内网单机故障的路由协议,可以构建多个路由器
二、Keepalived的安装
虚拟ip(安装Keepalived的服务器):192.168.1.161
Nginx主服务器:192.168.1.171
Nginx备服务器:192.168.1.172
1.将Keepalived上传到服务器的指定目录然后解压
2.进入解压后的目录为Keepalived做一个配置
a步骤
./configure --prefix=/usr/local/keepalived --sysconf=/etc
解释:
/usr/local/为安装目录
--sysconf为核心配置文件,路径必须在etc下,不然会在日志文件报错
b步骤:
在这里小编遇到一个错误:
** !!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. **
当遇到这个错误时执行下面命令即可:
yum -y install openssl-devel
c步骤:
输入以下命令:
make && make install
d步骤:
查看Keepalived安装在哪个位置,应该会出现两个位置ect下的是核心配置文件
whereis keepalived
三双机主备
1.配置Keepalived
a.之前安装时配置文件在etc下,找到/etc/keepalived文件夹配置keepalived.conf文件
1.vim keepalived.conf
b.
配置以下内容即可
`global_defs {
#路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_192
}
#这是一个计算机节点
vrrp_instance VI_1 {
#表示的状态 当前的nginx的主节点,MASTER / BACKUP
state MASTER
#当前实列绑定的网卡,每一个人的不一样,一定要注意
interface eth0
#保证主备节点一致
virtual_router_id 51
#优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
priority 100
#主备之间同步检查的时间间隔
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#配置虚拟ip一个就可以了
virtual_ipaddress {
192.168.1.61
}
}
2.启动
a.进入之前的安装目录,安装时有两个,见第2步 a步骤,在安装目录下输入以下命令,图示为我的安装目录下
启动命令
./keepalived
b.启动之后查看输入ip addr 查看ip 会多一个如图:
e.启动./nginx,输入主机ip或者虚拟ip都可以访问页面
f.如何停止keepalived呢
#查看进程号
ps -ef|grep keepalived
#然后
kill -9 进程号
g.这样通过进程结束不好,通过服务来解释,步骤如下:
1.进入keepalived的安装目录,然后进入keepalived文件夹,进入etc,有两个文件init,sysconfig将他们复制当当前的系统中
命令:
cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/
然后
systemctl daemon-reload
在输入systemctl start keepalived.service
即可启动 如果系统不支持,就使用上一步方法吧。
3.MASTER配置完了现在配置BACKUP
a.按照之前的步骤安装好keepalived
b.配置keepalived.conf,跟主节点MASTER配置差不多,我这的配置文件在/etc/keepalived中,我的备用配置如下:
global_defs {
router_id keep_158
}
#这是一个计算机节点
vrrp_instance VI_1 {
#表示的状态 当前的nginx的主节点,MASTER / BACKUP
state BACKUP
#当前实列绑定的网卡,每一个人的不一样,一定要注意
interface eth0
#保证主备节点一致
virtual_router_id 51
#优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
priority 80
#主备之间同步检查的时间间隔
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
#配置虚拟ip一个就可以了
virtual_ipaddress {
192.168.1.61
}
}
与之前的主比较修改了 router_id 与 state
c.进入安装目录启动./keepalived
,启动之后不会发现之前配置的静态ip,因为主节点正常的运行着,如图:
d.当我们把主节点的keppalived停止时,备用节点就会出现虚拟的ip
e.输入虚拟ip,即可访问页面,前提是nginx必须启动
4.如果nginx挂了,则无法访问,所以我们要检测nginx
a.增加nginx的启动脚本
vim /etc/keepalived/check_nginx_alive_or_not.sh
脚本内容
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
增加运行权限
chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
b. 配置keepalived监听nginx脚本
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive_or_not.sh"
interval 2 # 每隔两秒运行上一行脚本
weight 10 # 如果脚本运行失败,则升级权重+10
}
c. 在 vrrp_instance 中新增监控的脚本
track_script {
check_nginx_alive # 追踪 nginx 脚本
}
d. 重启Keepalived使得配置文件生效
systemctl restart keepalived
keepalived.conf文件内容如下
global_defs {
#路由id:当前安装keepalived节点主机的标识符,全局唯一
router_id keep_tiantian1
}
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive_or_not.sh"
interval 2 # 每隔两秒运行上一行脚本
weight 10 # 如果脚本运行成功,则升级权重+10
#weight -10 #如果脚本运行失败,则降低权重-10
}
vrrp_instance VI_1 {
#表示的状态 当前的nginx的主节点,MASTER / BACKUP
state MASTER
#当前实列绑定的网卡,每一个人的不一样,一定要注意
interface ens33
#保证主备节点一致
virtual_router_id 51
#优先级/权重,谁的优先级高,在master挂掉以后,就能成功master
priority 100
#主备之间同步检查的时间间隔
advert_int 1
#认证授权的密码,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx_alive # 追踪 nginx 脚本
}
#配置虚拟ip一个就可以了
virtual_ipaddress {
192.168.152.188
}
}