Keepalived 实现 nginx 高可用

 一、什么是 keepalived

  Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。

 

  上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。 
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。 
用户空间

  • WatchDog:负载监控checkers和VRRP进程的状况
  • VRRP Stack:负载负载均衡器之间的失败切换FailOver,如果只用一个负载均稀器,则VRRP不是必须的。
  • Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有VRRP
    Stack,但健康检查healthchecking是一定要有的。
  • IPVS wrapper:用户发送设定的规则到内核ipvs代码
  • Netlink Reflector:用来设定vrrp的vip地址等。

Keepalived的所有功能是配置keepalived.conf文件来实现的。

  二、安装 keepalived

  下载keepalived地址:http://www.keepalived.org/download.html 

 wget  http://www.keepalived.org/software/keepalived-1.4.1.tar.gz
 #指定解压路径
 tar -zxvf keepalived-1.4.1.tar.gz -C /usr/local/ #安装依赖的软件包 yum install -y openssl openssl-devel #安装和编译  cd /usr/local/keepalived-1.4.1/ && ./configure --prefix=/usr/local/keepalived

   make && make install

  keepalived安装成Linux系统服务

   keepalived的默认安装路径(默认路径:/usr/local)此处没有使用默认安装方式

mkdir /etc/keepalived

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

然后复制keepalived脚本文件:

cp /usr/local/keepalived-1.4.1/keepalived/etc/init.d/keepalived /etc/init.d/

(或 : 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/

可以设置开机启动:chkconfig keepalived on

  service keepalived start

  service keepalived stop

 三、配置nginx主备自动重启

  两台 linux 电脑安装了 nginx

  备注:nginx 已成功安装在默认路径   /usr/local/nginx

  修改 keepalived 的配置文件 vim /etc/keepalived/keepalived.conf

  可以备份源配置文件粘贴下面配置 mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

  vim /etc/keepalived/keepalived.conf      :wq

  vim /etc/keepalived/nginx_check.sh

  赋予可执行权限:chmod +x /etc/keepalived/nginx_check.sh

  

   /usr/local/nginx/sbin/nginx

    service keepalived start

    ps -ef | grep nginx

    ps -ef | grep keepalived

  

! Configuration File for keepalived

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
    interval 2 #检测时间间隔
    weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    state MASTER #来决定主从
    interface enth1 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
    mcast_src_ip 192.168.110.141 #填写本机ip
    priority 100 # 节点优先级,主要比从节点优先级高
    nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 将 track_script 块加入 instance 配置块
    track_script {
        chk_nginx #执行 Nginx 监控的服务
    }i

    viirtual_ipaddress {
        192.168.110.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
    }
}

keepalived.conf

nginx_check.sh

  实际配置如下:

  测试

  首先看一下俩台机器的ip a 命令下 都会出现一个虚拟ip,可以停掉一个机器的keepalived,然后测试,命令:service keepalived stop。结果发现当前停掉的机器已经不可用,keepalived 配置的虚拟 ip 会自动切换到另一台机器上。

  

  停止后:

  

  通过该虚拟 ip 可以进行访问 nginx

  

  四、测试 keepalived 重启 nginx

    强杀掉nginx进程即可,发现也会实现自动切换服务器节点。

    kill -9   7456

原文地址:https://www.cnblogs.com/SacredOdysseyHD/p/8685140.html

时间: 2024-07-31 19:50:41

Keepalived 实现 nginx 高可用的相关文章

keepalived对nginx高可用演练脚本

keepalived对nginx高可用演练脚本 参考文章:http://deidara.blog.51cto.com/400447/302402/ 1.安装nginx.keepalived.epel-release源 yum install -y epel-release yum install -y nginx yum install -y keepalived 2.配置好nginx 3.设置keepalived配置文件 #主机 vi /etc/keepalived/keepalived.co

keepalived实现nginx高可用,一主一备

keepalived实现nginx高可用(HA) 安装直接yum安装就可以,版本可能比官网落后,但是够用了, yum -y install keepalived 编辑配置文件,默认路径 /etc/keepalived/keepalived.conf,这里将默认配置文件重命名,新建一个空的配置文件 mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak vim /etc/keepalived/keepalived

Nginx+Keepalived实现Nginx高可用

在架构设计中,可以利用NGINX的反向代理和负载均衡实现后端应用的高可用性,同时我们还需要考虑Nginx的单点故障.真正做到架构高可用性. 主要考虑以下几点: 1.Nginx服务因为意外现象挂掉 2.服务器宕机导致NGINX不可用 目前主流的解决方案就是keepalived+nginx 实现nginx的故障转移,同时做好监控报警.在自动故障转移的同时能通知到相关的应用负责人检查相关应用,排查隐患,彻底解决问题. 模拟环境: 序号 环境名称 IP地址 环境介绍 1 访问客户端1 10.57.3.2

基于keepalived的nginx高可用

#nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { ##keepalived自带的邮件提醒需要开启sendmail服务.建议用独立的监控或第三方SMTP ##标识本节点的字条串,通常为 hostname router_id 192.168.1.11 } ##keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance

nginx和keepalived实现nginx高可用

首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用. Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP (Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),如下图所示: 这张图的意

keepalived+lvs+nginx 高可用

keepalived是一款用C编写的,旨在给linux系统和基于linux的设施提供简单.稳固的高可用和负载均衡功能的软件.它基于linux内核的ipvs模块实现4层负载均衡,能应用一系列的健康状态检测机制基于VRRP协议实现服务的高可用. 一.VRRP协议 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议.通常,一个网络内的所有主机都设置一条默认路由,这样,主机发出的目的地址不在本网段的报文将被通过默认路由发往路由器RouterA

keepalived实现nginx高可用

1.环境说明 IP 服务 作用 192.168.1.101 nginx + keepalived master 192.168.1.102 nginx + keepalived backup 192.168.1.103 虚拟ip(VIP) 说明:系统:CentOS 6.10master配一个,backup可以配置多个:虚拟ip(VIP):192.168.1.103,对外提供服务的ip,也可称作浮动ip 2.nginx 安装与配置 2.1.安装nginx master和backup所有节点都安装配

Nginx配置upstream实现负载均衡及keepalived实现nginx高可用

(原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟机发布了两个项目分别为:http://192.168.28.128:8081, http://192.168.28.129:8081 2.在两个虚拟机上都安装好nginx 二.配置upstream 1.在任意一台虚拟机上所安装的nginx的nginx.conf配置文件中配置upstream如下: 以

ansible实现keepalived和nginx高可用

实验环境 ansible节点 keepalived+nginx节点1    ansible自动安装配置 keepalived+nginx节点2    ansible自动安装配置 httpd节点1 httpd节点2 ansible配置 yum install epel-release yum install ansible 安装ansible vi /etc/ansible/hosts [nginxsrv] 172.20.128.42 172.20.128.43 [keepalivedsrv] 1