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的双机主备高可用的更多相关文章

  1. 使用Keepalived实现Nginx的自动重启及双主热备高可用

    1.概述 之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下. 1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服 ...

  2. Mysql+Keepalived双主热备高可用操作记录

    我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...

  3. Keepalived+Nginx+tomcat实现系统的高可用

    Keepalived+Nginx+tomcat实现系统的高可用 1:安装vmware虚拟机 2:安装linux系统,我自己下载的centos6.5 3:安装JDK,tomcat 解压tomcat到/u ...

  4. Nginx的进程模型及高可用方案(OpenResty)

    1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...

  5. keepalived + lvs marster 与 backup 之间的 高可用

    简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的.功能完善的高可用软件,它提供了H ...

  6. Nginx+Zuul集群实现高可用网关

    代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...

  7. [转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用

    [MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式 ...

  8. Nginx双机主备(Keepalived实现)

    前言 首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的 ...

  9. Nginx+Keepalived 主备高可用 安装与配置

    环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...

随机推荐

  1. 如何使用Git Flow 进行hotfix

    前提是已经安装好git flow并做好配置.安装指导 1 首先确定你的紧急发布应基于那个分支(默认是mater/main分支,)并切换到对应分支. 2 git flow init--该命令会只指导你基 ...

  2. HashSet 的实现原理

    HashSet 概述 对于 HashSet 而言,它是基于 HashMap 实现的,底层采用 HashMap 来保存元素,所以如果对 HashMap 比较熟悉了,那么学习 HashSet 也是很轻松的 ...

  3. JS 实现一个 LRU 算法

    LRU 是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择内存中最近最久未使用的页面予以淘汰. 可用的 NodeJS 库见node-lru-cache ...

  4. Hadoop (8088)未授权访问

    cd /vulhub/hadoop/unauthorized-yarn 加速下载环境 sudo vim /etc/docker/daemon.json 添加 {"registry-mirro ...

  5. php预定义常量运用

    当前url 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 当前文件路径 dirname(__FILE__)header(" ...

  6. vue的项目初始化

    1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...

  7. Java面向对象09——super

    Super  main ​ package oop.demon01.demon05; ​ public class Application {     public static void main( ...

  8. vulnhub-DC:8靶机渗透记录

    准备工作 在vulnhub官网下载DC:8靶机DC: 8 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 利用nmap ...

  9. SpringBoot | 3.3 整合MyBatis-Plus

    目录 前言 1. 什么是MyBatis-Plus 1.1 BaseMapper接口 1.2 IService接口 2. 整合MyBatis-Plus以及CRUD功能 2.1 导入场景依赖 2.2 CR ...

  10. 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)

    算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...