keepalived+nginx实现搭建双机主备+双主热备

准备工作

两台虚拟机 一台是192.168.31.210、一台是192.168.31.211、

安装nginx 修改index 好分辨

 

一、安装Keepalived

两台都需要安装Keepalived 唯一不同的就是 keepalived配置文件

https://keepalived.org/

 

 

下载 解压

tar -zxvf keepalived-2.0.18.tar.gz

进入 keepalived-2.0.18

执行

./configure --prefix=/usr/local/keepalived --sysconf=/etc

安装和编译

make && make install

 如果报 这个错 install libnl/libnl-3

需要提前安装在执行

yum -y install libnl-devel

 

这个用systemctl启动  如果你想直接进入 keepalived  直接启动也可以

./keepalived 

 

 

当前目录 进入

cd keepalived-2.0.18/keepalived/etc

 把keepalived的配置放到etc中

cp init.d/keepalived /etc/init.d/ &&
cp sysconfig/keepalived /etc/sysconfig/

 重新加载配置文件

systemctl daemon-reload

 启动keeplived

systemctl start keepalived.service

 

另一台服务器做相同操作

 

二、双机主备

原理通过虚拟ip访问 一旦主机挂了,就使用备机

坏处是 备机 不做其他事情,非常浪费资源

配置keepalived核心配置文件

192.168.31.210服务器

check_nginx_alive_or_not.sh 是自动启动nginx shell脚本

keepalived.conf是keepalived核心配置文件

 

 

1、vim check_nginx_alive_or_not.sh

这里的/usr/local/nginx/sbin/nginx 根据自己nginx路径修改

#!/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

2、然后chmod +x check_nginx_alive_or_not.sh 添加权限

3、vim keepalived.conf

这里的网卡配置interface ens33 用ip addr 查看

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keeplived节点主机的标识符,全局唯一
   router_id keep_nginx1
}

#执行nginx启动判断脚本
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
    
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

	#调用脚本
    track_script {
	check_nginx_alive #追踪  nginx脚本
    }
 
    #这里的是虚拟ip 字段要和自己的服务器在同一字段 比如我的服务器ip是 192.168.31.210 
    #所有前面三个要一样 192.168.31.
    virtual_ipaddress {
        192.168.31.161
    }
}

主机就配置好了

备机的配置和上面一样  唯一不同的是权重和状态

 另一台192.168.31.211服务器配置

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keeplived节点主机的标识符,全局唯一
   router_id keep_nginx2
}

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 BACKUP
    #当前实例绑定的网卡
    interface ens33
    
    #包装主备节点一致
    virtual_router_id 51
    
    #优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    track_script {
        check_nginx_alive #追踪  nginx脚本
    }
   
    virtual_ipaddress {
        192.168.31.161
    }
}

 

 

三、 双主热备

他弥补了双主机的缺点,可以两台都进行运行

用户访问之后,DNS访问轮训,随机访问那个虚拟ip

这里用了两个虚拟ip 一个虚拟ip绑定两个nginx 当一个keepalived挂了之后另一个绑定两个

就可以实现两个服务器都没有浪费资源

 

192.168.31.210 服务器配置 

多了一个VI_2

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keeplived节点主机的标识符,全局唯一
   router_id keep_nginx1
}

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
    
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
   
    #调用脚本
    track_script {
	check_nginx_alive #追踪  nginx脚本
    }
   
    virtual_ipaddress {
        192.168.31.161
    }
}

#计算机节点
vrrp_instance VI_2 {

    #标识的状态,当前nginx的主节点,MASTER/BACKUP
    state BACKUP
    #当前实例绑定的网卡
    interface ens33

    #包装主备节点一致
    virtual_router_id 52

    #优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80

    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    #调用脚本
    track_script {
        check_nginx_alive #追踪  nginx脚本
    }   
    
    virtual_ipaddress {
        192.168.31.162
    }
}

重启

systemctl restart keepalived.service

 

192.168. 31.211服务器配置

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keeplived节点主机的标识符,全局唯一
   router_id keep_nginx2
}

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 BACKUP
    #当前实例绑定的网卡
    interface ens33
    
    #包装主备节点一致
    virtual_router_id 51
    
    #优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    track_script {
        check_nginx_alive #追踪  nginx脚本
    }
   
    virtual_ipaddress {
        192.168.31.161
    }
}


vrrp_instance VI_2 {

    #标识的状态,当前nginx的主节点,MASTER/BACKUP
    state MASTER

    interface ens33

    #包装主备节点一致
    virtual_router_id 52

    #优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100

    #主备之间同步检查的时间间隔,默认1s
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx_alive #追踪  nginx脚本
    }

    virtual_ipaddress {
        192.168.31.162
    }
}

重启

systemctl restart keepalived.service

 

测试模拟

访问两个虚拟ip 正在显示

 

然后我们关闭一台 我关闭了211这台服务器

两台服务器都正常显示

但是区别 192.168.31.162 他访问的是另一台nginx的内容 所以 我们这里模拟成功 没有任何问题

systemctl stop keepalived.service

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值