Nginx (三) 使用Keepalived搭建高可用服务

Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的。如果Nginx故障,则整个服务将会处于不可用状态。所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还可以有其他的Nginx来支持服务。现在我们通过Keepalived的就可以实现多台Nginx作为主备机,当主机宕机时,可以让备机切换成主机继续提供服务,对整个用户服务几乎没有影响。

1. Keepalived介绍

Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。

2. keepalived 安装(同Nginx安装类似)

a. 下载安装包:

  http://www.keepalived.org/download.html

b. 解压 keepalived-1.2.18.tar.gz(我下载到Windows下,使用ftp上传到linux虚拟机上,可以直接在linux上使用wget url 进行下载),解压到/usr/local目录下

tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/

c. 安装依赖包

    yum -y install openssl,openssl-devel

d. 检查环境,设置安装目录

    cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

    如上说明环境检查通过。

e.  安装: make && make install

     

3. 将安装的keepalived配置成服务,并且开机启动:

  a. 因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作,首先创建文件夹,将keepalived配置文件进行复制:

    mkdir /etc/keepalived

    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

  b. 然后复制keepalived脚本文件:

    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

    ln -s /usr/local/sbin/keepalived /usr/sbin/

    ln -s /usr/local/keepalived/sbin/keepalived /sbin/

c. 可以设置开机启动:

    chkconfig keepalived on;

到此我们安装完毕,开机则keepalived就已经启动!

4. 配置主备机keepalived配置文件:keepalived.conf

 

a. master配置文件如下:

! Configuration File for keepalived

global_defs {
    router_id aries114 ##真实主机名或者ip
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ##要执行的检查脚本
    interval 2 ##keepalived多久执行一次
    weight -20 ##权重-20
}

vrrp_instance VI_1 {
    state MASTER  ##主备机配置
    interface eth0  ##默认使用网卡
    virtual_router_id 88  ##虚拟id号,主备机配置一致
    mcast_src_ip 192.168.137.114 ##真实主机ip
    Nopreempt  ##非抢占式
    priority 100  ##权重优先级
    advert_int 1  ##组播信息发送间隔,俩个节点必须配置一致,默认1s

    authentication {
        auth_type PASS
        auth_pass 1111 ##验证密码,主备机一致
    }

    track_script {
        chk_nginx
    }

    virtual_ipaddress {
        192.168.137.110 ##虚拟ip(vip)可以配置多个
    }
}

  b. backup配置文件:

! Configuration File for keepalived

global_defs {
    router_id aries111
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 88
    mcast_src_ip 192.168.137.111
    priority 90
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_nginx
    }

    virtual_ipaddress {
        192.168.137.110
    }
}

不同点已用红色标出:

  router_id 主机名或者ip

  mcast_src_ip 真实主机ip

  state 表示主备机master表示主BACKUP表示备,两个也可以都设置成backup,则两个抢占主机服务,一个宕机另一个就做为主机。

  virtual_ipaddress 虚拟出来的主机ip , 可配置多个;

  script "/etc/keepalived/nginx_check.sh" 这个是keepalived要执行的检查Nginx服务是否正常的脚本,需要我们去编写。

 c. 编写检查脚本,命名nginx_check.sh,然后置于"/etc/keepalived/"目录下

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ]; then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

  以上脚本的作用是,检查是否有nginx服务进程,如果有则执行结束不做处理;如果没有,则启动Nginx服务,间隔两秒钟再去检查是否有Nginx服务,如果没有就杀死此keepalived进程,如果有

则不做处理。

  到此就通过keepalived配置完了Nginx的高可用服务。

使用 ip a 查看主节点则有一个虚拟IP:

客户机访问: 192.168.137.110 此时 192.168.137.114 提供服务;如果让192.168.137.114宕机,则vip则会浮动到备机 192.168.137.111上,有192.168.137.111提供服务。

如下是一个访问模型图:

参考材料:

  http://blog.csdn.net/hechurui/article/details/51065467

  白鹤翔老师的Nginx教学视频。

 
 
时间: 2024-10-07 05:26:14

Nginx (三) 使用Keepalived搭建高可用服务的相关文章

Nginx+Keepalived搭建高可用负载均衡集群

Nginx+Keepalived搭建高可用负载均衡集群   一. 环境说明 前端双Nginx+keepalived,nginx反向代理到后端的tomcat集群实现负载均衡,Keepalived实现集群高可用. 操作系统: Centos 6.6_X64 Nginx版本: nginx-1.9.5 Keepalived版本:keepalived-1.2.13 结构: Keepalived+nginx-MASTER:10.6.1.210         Keepalived+nginx-BACKUP:

Nginx+Keepalived搭建高可用负载平衡WEB 集群

Nginx+Keepalived搭建高可用负载平衡WEB 集群 1.1环境规划: Nginx_master:192.168.5.129 Nginx_backup:192.168.5.131 Tomcat:192.168.5.132 端口:8080,9080 操作系统:CentOS6.5 x86_64 内核版本:2.6.32-696.el6.x86_64 Nginx版本:nginx/1.12.0 nginx-1.12.0 Keepalived版本:Keepalived v1.2.13 前端双Ngi

使用keepalived搭建高可用的LVS-DR集群

使用keepalived搭建高可用的LVS-DR集群   一:Keepalived服务概述 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,戒工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自劢将web 服务器加入到服务器群中,

LVS + Keepalived 搭建高可用的负载均衡群集

Keepalived 的设计目标是搭建高可用的 LVS 负载均衡群集,可以调用 ipvsadm 工具来创建虚拟服务器.管理服务器池,而不仅仅用作双机热备.使用 Keepalived 搭建 LVS 群集更加简便易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性:对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入. 本次我们以 DR 模式的 LVS 群集为基础,增加一台从负载调度器,使用 Keepalived 来实现主.从调度器的热备,从而构建兼有负载均衡.高可用两

keepalived+nginx 双主模型实现高可用服务

一.keepalived的工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为mas

通过keepalived搭建高可用的LVS负载均衡集群

一.keepalived软件简介 keepalived是基于vrrp协议实现高可用功能的一种软件,它可以解决单点故障的问题,通过keepalived搭建一个高可用的LVS负载均衡集群时,keepalived还能检测后台服务器的运行状态. 二.vrrp协议原理简介 vrrp(虚拟路由器冗余协议),是为了解决网络上静态路由出现的单点故障的问题,举个例子,如下图 主机A和B均在同一个局域网内,C和D均是该局域网的网关,即A和B想与外网通信,需指网关到C或D,那究竟指向C好还是指向D好呢?都不好!当指向

CentOS6.5环境 安装Keepalived和高可用服务相关参数说明

一.硬件环境准备kep1 192.168.89.100    masterkep2 192.168.89.101    slave 二.安装keepalived(两台服务器都要安装)yum -y install keepalived 三.启动keepalived并检查1.两台服务器上启动keep服务[[email protected] ~]# /etc/init.d/keepalived start正在启动 keepalived:                                 

LVS+Keepalived搭建高可用负载均衡

应用环境: LVS负责多台WEB端的负载均衡(LB):Keepalived负责LVS的高可用(HA),这里介绍主备模型. 测试环境: HOSTNAME IP SYSTEM DR1 192.168.10.234 CENTOS7.5 DR2 192.168.10.235 CENTOS7.5 RS1 192.168.10.236 CENTOS7.5 RS2 192.168.10.237 CENTOS7.5 VIP 192.168.10.239 DR配置步骤: 安装软件(在DR1和DR2上分别安装) y

部署LVS-DR+Keepalived搭建高可用web群集

实现LVS的DR模式 一. 实验环境 三台机器: Director节点: (ens33 192.168.10.53 vip ens33:0 192.168.10.80) Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80) Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80) 二. 安装和配置 1. 配置两个real server服务器 (1) 配置虚拟IP地址(VIP