使用Keepalived实现Nginx的双机主备高可用
1、概述
前面我们聊过使用 Nginx 为 后端Tomcat 做负载均衡、高可用,但是这时Nginx又成了单点,如果Nginx不幸挂掉,整个网站便无法访问。
此时我们就会用到另一个软件 —— Keepalived。
Keepalived 是一个用 C 编写的路由软件,Keepalived 会生成一个虚拟IP,此虚拟IP与多台真实的服务器的IP绑定,当用户发来请求到虚拟IP时,请求先路由到主服务器,当主服务器宕机后,请求会路由到备用服务器,以达到高可用的目的。
理论上两台或多台Nginx服务器的硬件配置应该一致,这样路由改变时,性能不会有太大的差别。
下面我们用一个例子,来实际操作一下。
2、场景说明
在两台服务器上,安装Nginx,并启动。
在两台服务器上安装Keepalived,进行配置,为Nginx做负载均衡,实现双机主备高可用。
A服务器配置为主机,B服务器配置为备机。
虚拟IP:192.168.1.88
A服务器IP(主):192.168.1.144
B服务器IP(备):192.168.1.22
3、安装Keepalived
在两台服务器上都需要安装Keepalived。
1)下载Keepalived
可以到Keepalived官网(https://www.keepalived.org)下载

图片来源于官网

图片来源于官网
2)将Keepalived压缩包,拷贝到两台服务器的 /home 目录下
3)解压Keepalived压缩包
在Linux系统执行 # tar -zxvf keepalived-2.2.4.tar.gz 命令进行解压。
4)安装依赖包
# yum -y install libnl libnl-devel
# yum install -y openssl openssl-devel
5)进入解压后的Keepalived目录
6)执行配置命令
# ./configure --prefix=/usr/local/keepalived --sysconf=/etc
7)执行编译并安装命令
# make && make install
8)安装成功后,在 /etc/keepalived 目录下,会看到 keepalived.conf 文件。
4、配置 keepalived.conf 文件
进入 /etc/keepalived 目录下,修改 keepalived.conf 文件。
A服务器配置如下:
! Configuration File for keepalived
global_defs {
# 全局唯一的主机标识
router_id server_a
}
vrrp_instance VI_1 {
# 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
state MASTER
# 绑定的网卡
interface ens33
# 虚拟路由id,保证主备节点是一致的
virtual_router_id 51
# 权重
priority 100
# 同步检查时间,间隔默认1秒
advert_int 1
# 认证授权的密码,所有主备需要一样
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.88
}
}
B服务器配置如下:
! Configuration File for keepalived
global_defs {
router_id server_b
}
vrrp_instance VI_1 {
# 设置为备机
state BACKUP
interface ens33
virtual_router_id 51
# 权重设置的要比主机低
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP需要主备设置成一样
virtual_ipaddress {
192.168.1.88
}
}
5、启动Keepalived
1)进入 /usr/local/keepalived/sbin 目录
2)输入命令 # ./keepalived 即可。

此时,查看网卡,会发现主机的IP地址多了 192.168.1.88

6、停止A服务器,看虚拟IP是否路由到B服务器
经试验可知,A服务器关闭后,虚拟IP便路由到了B服务器。

7、综述
好了,至此,Keepalived的双机主备机制已经实现了。后面我们还会介绍Keepalived双主热备的配置方式。
希望大家多多留言交流,共同进步。
使用Keepalived实现Nginx的双机主备高可用的更多相关文章
- 使用Keepalived实现Nginx的自动重启及双主热备高可用
1.概述 之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下. 1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服 ...
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
- Keepalived+Nginx+tomcat实现系统的高可用
Keepalived+Nginx+tomcat实现系统的高可用 1:安装vmware虚拟机 2:安装linux系统,我自己下载的centos6.5 3:安装JDK,tomcat 解压tomcat到/u ...
- Nginx的进程模型及高可用方案(OpenResty)
1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...
- keepalived + lvs marster 与 backup 之间的 高可用
简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的.功能完善的高可用软件,它提供了H ...
- Nginx+Zuul集群实现高可用网关
代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...
- [转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用
[MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式 ...
- Nginx双机主备(Keepalived实现)
前言 首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的 ...
- Nginx+Keepalived 主备高可用 安装与配置
环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...
随机推荐
- 如何使用Git Flow 进行hotfix
前提是已经安装好git flow并做好配置.安装指导 1 首先确定你的紧急发布应基于那个分支(默认是mater/main分支,)并切换到对应分支. 2 git flow init--该命令会只指导你基 ...
- HashSet 的实现原理
HashSet 概述 对于 HashSet 而言,它是基于 HashMap 实现的,底层采用 HashMap 来保存元素,所以如果对 HashMap 比较熟悉了,那么学习 HashSet 也是很轻松的 ...
- JS 实现一个 LRU 算法
LRU 是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择内存中最近最久未使用的页面予以淘汰. 可用的 NodeJS 库见node-lru-cache ...
- Hadoop (8088)未授权访问
cd /vulhub/hadoop/unauthorized-yarn 加速下载环境 sudo vim /etc/docker/daemon.json 添加 {"registry-mirro ...
- php预定义常量运用
当前url 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 当前文件路径 dirname(__FILE__)header(" ...
- vue的项目初始化
1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...
- Java面向对象09——super
Super main package oop.demon01.demon05; public class Application { public static void main( ...
- vulnhub-DC:8靶机渗透记录
准备工作 在vulnhub官网下载DC:8靶机DC: 8 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 利用nmap ...
- SpringBoot | 3.3 整合MyBatis-Plus
目录 前言 1. 什么是MyBatis-Plus 1.1 BaseMapper接口 1.2 IService接口 2. 整合MyBatis-Plus以及CRUD功能 2.1 导入场景依赖 2.2 CR ...
- 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)
算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...