高可用:两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将这个称之为高可用;
Keepalived提供高可用和热备的功能,用来防止单点故障的发生
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作
当不同服务器配置nginx时,主nginx挂掉后,客户端在访问地址还是原来的ip,所以需要配置虚拟ip地址
通过Linux生成uuid
uuidgen
将生成的id配置文件uuid,到nginx配置文件中
vim /etc/sysconfig/network-scripts/ifcfg-ens33
重启服务
service network restart
离线安装Keepalived,yum安装只能使用默认目录
下载网址:https://www.keepalived.org/download.html
#1准备好Keepalived安装包,传到/opt目录下
#2解压到/usr/local/src
cd /opt
tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src
#3安装依赖插件,如果已经安装可以省略
yum install -y gcc openssl-devel popt-devel
#3进入解压后的目录,进行配置,进行编译
cd /usr/local/src/keepalived-1.4.2
./configure --prefix=/usr/local/keepalived
./configure --prefix=/usr/local/keepalived
--prefix作用是:编译的时候用来指定程序存放路径
不指定prefix,可执行文件默知认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share目录下,东西存放位置比较凌乱。#4进行编译,安装
make && make install
#5运行前配置
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/#6修改配置文件
vim /etc/keepalived/keepalived.conf
配置文件
global_defs {
router_id 自己起名字
}
#对应脚本文件
vrrp_script chk_nginx {
script /etc/keepalived/nginx_check.sh
interval 2
weight 20
}
vrrp_instance VI_1 {
state BACKUP #本分服务器 主服务器master
interface ens33
virtual_router_id 51
priority 90 #优先级
advert_int 1
#nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}virtual_ipaddress {
192.168.189.50 #虚拟地址
}
}
sh脚本
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ]
then
#killall keepalived
echo 'nginx server is died'
systemctl stop keepalived
#service keepalived stop
fi
配置后启动2台服务器
双主模式
修改之前配置文件,主备配置相反,及在自己ip是主,
global_defs {
router_id atguigu
}
vrrp_script chk_nginx {
script /etc/keepalived/nginx_check.sh
interval 2
weight 20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
#nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.189.50/24
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 90
advert_int 1
#nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.189.55/24
}
}