参看文献 https://blog.csdn.net/u012410733/article/details/57078407

nginx的安装,这里就不再讲了

这里使用了两台服务器

192.168.37.135 主

192.168.37.136 从

分别在两台服务器上安装keepalived

1.#安装 popt  
2.yum install openssl-devel  
3.  
4.cd /usr/local/software  
5.wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz   
6.tar -zxvf keepalived-1.2.8.tar.gz  -C /usr/local/
7.cd ../keepalived-1.2.8  
8../configure --prefix=/usr/local/keepalived --sysconf=/etc  
9.make && make install  
10.  
11.cp /usr/local/keepalived/sbin/keepalived  /bin/  
12.chkconfig --add keepalived  
13.#设置开机启动  
14.chkconfig keepalived on  
15.#启动keepalive服务  
16./etc/init.d/keepalived start   之后可以使用
service keepalived start|stop|restart

然后在主机上运行 vim /etc/keepalived/keepalived.conf 修改配置

! Configuration File for keepalived

global_defs {

   router_id 192.168.37.135
} vrrp_script check_nginx {
script "/root/nginx_check.sh"
interval 2
weight -20
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass bhz
} virtual_ipaddress {
192.168.37.110
} track_script {
check_nginx
} }

从机上运行 vim /etc/keepalived/keepalived.conf 修改配置

! Configuration File for keepalived

global_defs {

   router_id 192.168.37.136
} vrrp_script check_nginx {
script "/root/nginx_check.sh"
interval 2
weight -20
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass bhz
} virtual_ipaddress {
192.168.37.110
} track_script {
check_nginx
}
}

简单描述:主机的state是MASTER,从机的是BACKUP;interface是网卡,可以输入ip a 查看网卡信息 ;priority是权重,主机是100,从机是90,当检查心跳的时候,发现当前的nginx或keepalived停止了,权重值就减少20,这样的话就会比另一台服务器的权重小,这个规则可以自定义;

在root目录先新建心跳脚本 nginx_check.sh

#!/bin/sh

A=`ps -C nginx --no-header |wc -l`
echo 'hello'
if [ $A -eq 0 ]
then
killall keepalived
fi

注释:ps -C nginx --no-header |wc -l 这句是获取正在运行的nginx服务的个数

若是使用上面这个脚本的话必须先启动nginx,再启动keepalived,因为如果没有先启动nginx的话,执行这个脚本发现没有启动nginx直接就把keepalived进程杀死了

配置已经完成了,启动两台服务器的nginx     /usr/local/nginx/sbin/nginx  这个是我的nginx的启动目录

启动两台服务器的keepalived  service keepalived start

输入虚拟ip



这个时候访问到的是主机的nginx;而且在主机输入 ip a时,可以看到有虚拟的ip地址,而查看从机时是没有虚拟ip的

这里我测试的时候发现一个奇怪的问题,直接停止nginx服务的话,再次访问虚拟ip 的话就访问不了了,只有先停止keepalived服务再停止nginx服务有效果
将主机的keepalived服务停止 service keepalived stop
将主机的nginx 服务停止 /usr/local/nginx/sbin/nginx -s stop 再次输入ip a查看ip

再次访问虚拟地址

发现访问到的是从机的nginx

现在又重新启动主机的nginx和keepalived服务
/usr/local/nginx/sbin/nginx
service keepalived
start 再次访问虚拟ip
正式环境的心跳脚本:
#!/bin/sh

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ]
then
/usr/local/nginx/sbin/nginx //重启nginx,若nginx启动失败则停止keepalived
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]
then
killall keepalived
fi
fi
#!/bin/sh

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

若使用的是上面的心跳脚本,则可以只启动keepalived而不需要先启动nginx

nginx+keepalived实现高可用的更多相关文章

  1. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  2. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  3. Nginx keepalived实现高可用负载均衡详细配置步骤

    Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...

  4. Nginx+Keepalived实现高可用站点

    Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat. corosync.pacemaker.但是它一般不会单独出现,而是与 ...

  5. 使用Nginx+Keepalived组建高可用负载平衡Web server集群

    一,首先说明一下网络拓扑结构: 1,Nginx 反向代理Server(HA):     ①Nginx master:192.168.1.157     ②Nginx backup:192.168.1. ...

  6. Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)

    说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...

  7. Nginx+Keepalived 实现高可用

    Keepalived 是一个高性能的 服务器高可用 或 热备解决方案,Keepalived主要来防止服务器单点故障的问题,可以通过其与Nginx的配合来实现web服务端的高可用. Keepalived ...

  8. 实战| Nginx+keepalived 实现高可用集群

    一个执着于技术的公众号 前言 今天通过两个实战案例,带大家理解Nginx+keepalived 如何实现高可用集群,在学习新知识之前您可以选择性复习之前的知识点: 给小白的 Nginx 10分钟入门指 ...

  9. 【nginx+keepalived】nginx+keepalived搭建高可用

    一.结构及环境 1.1 环境介绍 操作系统:centos7 nginx+keepalived:106.53.73.200 master nginx+keepalived:182.254.184.102 ...

  10. nginx+keepalived主从高可用配置

    上面有4台web服务器  我们实验条件限制,就开两台web服务器1.117  1.119 一.环境准备: 系统环境:CentOS 6.5 x86_64 Nginx版本:nginx v1.6.2 Kee ...

随机推荐

  1. HDU4745--区间DP+回文串

    这题的题意为,给你一个环状的字符串,有两只兔子分别从某任意的石头上开始跳跃.一只顺时针跳.一只逆时针跳.两只兔子每一次落脚处石头的质量都相同.兔子要一步一步的跳,且不能跳到之前跳到过的地方.总的来说, ...

  2. Maven提示找不到dependency依赖包

    最近C盘爆炸,又重装了一下系统,打开之前创建的Maven项目,提示找不到仓库里的jar包了 我更新了Maven,重新加载都没用,我去系统盘查看的时候发现了这么一个情况: 我在装WIN10的时候用的是U ...

  3. SpingBoot全局异常处理器被覆盖的解决办法

    @controllerAdvice()注解 @ControllerAdvice()注解可以定义一个统一的异常处理类,我们可以定义多个统一异常处理类, 但这里我们需要注意一点,默认的@Controlle ...

  4. MVC 深入讲解Routing _路由规则【八】

    一.客户端=>控制器 在项目中我们引用了system.web.routing, 如果第一个匹配成功了,那么后面的都不会再匹配. 1. routing的作用: 确定colltroller,确定ac ...

  5. grade配置添加java库导致报 java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMerger

    原因是导入的第三方库中也引入了项目中存在的相同名称的库,导致产生冲突

  6. js的缓存

    无网络的情况下,使用静态资源呈现页面的方法,只有h5的manifest 有网的情况下(可以连接到服务器的情况下),有3种判断缓存的方式. ------------------------------- ...

  7. hdu5421Victor and String 两端加点的pam

    题意:要求维护两端加点的字符串,以及查询本质回文串个数和所有回文串个数 题解:pam,两端加点过程详见ioi2017国家集训队论文,维护一个最长回文前缀和最长回文后缀即可,fail不用两个,能前后共用 ...

  8. css绘制内扣圆角

    纯静态的一种效果绘制,避免使用图标浪费内存.效果如下 废话不多说,代码如下: <!DOCTYPE html> <html lang="en"> <he ...

  9. VS2015在win10上编译的程序不能在Win7上运行的原因

    研究了下,搞懂原理了.是VS 2015 编译的问题,因为我是Win 10 ,所以会用到win 10 的SDK ,这个SDK 依赖了Universal C Runtime ,就是API-MS-CRT-X ...

  10. 如何加快C++代码的编译速度 转 ccache

    http://www.cnblogs.com/baiyanhuang/archive/2010/01/17/1730717.html   C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速 ...