参看文献 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. Centos7 安装并配置redis

    一. 安装 操作系统:Centos 7. 最小化安装 redis版本: 4.0.2 服务器地址:*** 安装过程: 安装wget, yum -y install wget 2.  下载redis wg ...

  2. Codeforces 788 C. The Great Mixing

    题目链接:http://codeforces.com/contest/788/problem/C 一看就不能暴力$DP$,我们可以将浓度的合并操看作为在追逐一高度,每次操作前这个高度都会向上走$n$, ...

  3. P2292 [HNOI2004]L语言

    传送门 思路:  毒瘤的字典树! ▲主要分有两个步骤: ① 日常的建树. ② 暴力地求解. ▲日常建树:过于基础,跳过. ▲重点在于如何暴力地求解而不被卡掉(DP?不存在的) 可以利用区间动规的思想, ...

  4. inline-block有间隙的兼容处理

  5. linux基础09-bash编程(条件测试和特殊变量)

    (1)整数测试 INT1=63 INT2=77 [ $INT1 -eq $INI2 ] [[ $INT1 -eq $INT2 ]] test $INT1 -eq $INT2 文件测试: -e FILE ...

  6. Angular 学习笔记 (Material Select and AutoComplete)

    记入一些思考 : 这 2 个组件有点像,经常会搞混. select 的定位是选择. 目前 select 最糟糕的一点是 not search friendly. 还有当需要 multiple sele ...

  7. BluetoothGattCallback

    /** * 用于实现 BluetoothGatt 的回调 */public abstract class BluetoothGattCallback { /** * GATT客户端连接或断开到远程的时 ...

  8. hdu6129 Just Do It!

    多校时找规律做过... 题意,给你一个数列a[1], a[2], a[3], a[4], ... , a[n],操作一次后变为a[1], a[1] ^ a[2], a[1] ^ a[2] ^ a[3] ...

  9. Java多线程——Condition条件

    简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signa ...

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

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