准备四台服务器

两台做主备,另外两台做访问

192.168.1.120 master

192.168.1.121 backup

192.168.1.122 nginx

192.168.1.123 nginx

安装keepalived

  1. yum -y install gcc pcre-devel zlib-devel openssl-devel
  2.  
  3. yum -y install popt-devel
  4.  
  5. wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
  6.  
  7. tar zxvf keepalived-1.2..tar.gz
  8.  
  9. cd keepalived-1.2.
  10.  
  11. ./configure
  12.  
  13. make&&make install

漫长的等待后.....

  1. cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
  2. cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  3. mkdir /etc/keepalived
  4. cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
  5. cp /usr/local/sbin/keepalived /usr/sbin/

加入启动服务 注册成服务

  1. echo "/etc/init.d/keepalived start" >> /etc/rc.local

chkconfig --add keepalived

配置master nginx 192.168.1.110 和 192.168.1.121

  1. #user nobody;
  2. worker_processes ;
  3.  
  4. error_log logs/error.log;
  5. #error_log logs/error.log notice;
  6. #error_log logs/error.log info;
  7.  
  8. #pid logs/nginx.pid;
  9. events {
  10. worker_connections ;
  11. }
  12. http {
  13. include mime.types;
  14. default_type application/octet-stream;
  15. access_log logs/access.log;
  16. sendfile on;
  17. upstream 120.com {
  18. #ip_hash;
  19. server 192.168.1.122:80;
  20. server 192.168.1.123:80;
  21. }
  22. #tcp_nopush on;
  23.  
  24. #keepalive_timeout ;
  25. keepalive_timeout ;
  26.  
  27. #gzip on;
  28.  
  29. server {
  30. listen ;
  31. server_name localhost;
  32. error_page /50x.html;
  33. location = /50x.html {
  34. root html;
  35. }
  36. location ~ \.php$ {
  37. root html;
  38. fastcgi_pass 127.0.0.1:;
  39. fastcgi_index index.php;
  40. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  41. proxy_pass http://120.com;
  42. include fastcgi_params;
  43. }
  44.  
  45. }
  46.  
  47. include vhost/*.conf;
  48.  
  49. }

然后访问试试

实现了负载均衡调用另外两台服务器

配置master keepalived

vi /etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2.  
  3. global_defs {
  4. notification_email {
  5. @qq.com
  6. }
  7. notification_email_from @qq.com
  8. smtp_server 127.0.0.1
  9. smtp_connect_timeout
  10. router_id nginx_master
  11. }
  12. vrrp_script check_nginx_is_run {
  13. script "/etc/keepalived/check_nginx_is_run.sh"
  14. interval
  15. weight
  16. }
  17. # 虚拟IP1, 本机作为Master
  18. vrrp_instance VI_1 {
  19. state MASTER
  20. interface ens33 #你的网卡
  21. virtual_router_id
  22. priority
  23. advert_int
  24. track_interface {
  25. ens33
  26. }
  27. authentication {
  28. auth_type PASS
  29. auth_pass
  30. }
  31. virtual_ipaddress {
  32. 192.168.1.51
  33. }
  34. track_script {
  35. check_nginx_is_run
  36. }
  37. }

配置backup keepalived

  1. ! Configuration File for keepalived
  2.  
  3. global_defs {
  4. notification_email {
  5. @qq.com
  6. }
  7. notification_email_from @qq.com
  8. smtp_server 127.0.0.1
  9. smtp_connect_timeout
  10. router_id nginx_backup
  11. }
  12. vrrp_script check_nginx_is_run {
  13. script "/etc/keepalived/check_nginx_is_run.sh"
  14. interval
  15. weight
  16. }
  17. # 虚拟IP1, 本机作为Master
  18. vrrp_instance VI_1 {
  19. state BACKUP
  20. interface ens33
  21. virtual_router_id
  22. priority
  23. advert_int
  24. track_interface {
  25. ens33
  26. }
  27. authentication {
  28. auth_type PASS
  29. auth_pass
  30. }
  31. virtual_ipaddress {
  32. 192.168.1.51
  33. }
  34. track_script {
  35. check_nginx_is_run
  36. }
  37. }

安装 killall 命令

  1. yum install psmisc

编写 shell 脚本

  1. #!/bin/bash
  2. A=`ps -C nginx --no-header |wc -l`
  3. if [ $A -eq ];then
  4. /usr/local/nginx/sbin/nginx #重启nginx
  5. sleep
  6. if [ `ps -C nginx --no-header |wc -l` -eq ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
  7. killall keepalived
  8. fi
  9. fi

设置可执行命令

  1. chmod a+x check_nginx_is_run.sh

如果你是window下放进去的,会有

-bash: ./check_nginx_is_run.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

解决办法

  1. sed -i 's/\r$//' check_nginx_is_run.sh

查看master keepalived 日记 vim /var/log/messages

查看 backup

好了不说了 停止nginx ,再不行就关机 192.168.1.120 or 121

如果你service nginx stop 来测试,你会发现关不掉,因为脚本重启了

你会发现OK了~ 

nginx+keepalived实现负载均衡nginx的高可用的更多相关文章

  1. Nginx+keepalived实现负载均衡

    Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx ...

  2. Nginx+keepalived实现负载均衡高可用配置

    1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了屏蔽负载均衡服务 ...

  3. LVS负载均衡+动静分离+高可用(nginx+tomcat+keepalived)

    文章目录 [隐藏] 一.环境介绍 二.环境安装 1.安装JDK 2.两台服务器安装tomcat 3.nginx安装 4.keepalive安装 三.负载均衡 四.动静分离 五.keepalive高可用 ...

  4. keepalived+nginx负载均衡+ApacheWeb实现高可用

    1.Keepalived高可用软件 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,kee ...

  5. nginx+keepalived+tomcat+memcache实现双VIP高可用及Session会话保持

    Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持 IP 信息列表: 名称         IP                      ...

  6. 22、lnmp_nginx反向代理(负载均衡)、高可用

    负载均衡,根据ip和端口号找到相应的web服务器站点(即端口区分): 22.1.nginx的负载均衡: 1.介绍: 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器.分 ...

  7. nginx+keepalived实现 负载均衡 高可用

    Vip: 192.168.220.18 Rip1:192.168.220.2 Rip:192.168.220.3 Rip可以配置在一个服务器上通过ip做虚拟主机 1 rs上配置环境 2 配置应用 Yu ...

  8. nginx配置tomcat负载均衡,nginx.conf配置文件的配置

  9. nginx 七层负载均衡

    [tcp] nginx 七层负载均衡 nginx负载均衡概述 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡, ...

随机推荐

  1. 554C - Kyoya and Colored Balls

    554C - Kyoya and Colored Balls 思路:组合数,用乘法逆元求. 代码: #include<bits/stdc++.h> using namespace std; ...

  2. vue.js循环for(列表渲染)详解

    vue.js循环for(列表渲染)详解 一.总结 一句话总结: v-for <ul id="example-1"> <li v-for="item in ...

  3. 雷林鹏分享:Ruby 判断

    Ruby 判断 Ruby 提供了其他现代语言中很常见的条件结构.在这里,我们将解释所有的条件语句和 Ruby 中可用的修饰符. Ruby if...else 语句 语法 if conditional ...

  4. 20170719xlVbaAbsorbProcedure

    Sub AbsorbThisProcedure() If Application.VBE.MainWindow.Visible = False Then MsgBox "请先激活VBE编辑窗 ...

  5. 49 DOM(2)

    一.value属性: input ,select 标签 ,textarea 标签中有value属性, 获取他们属性值的方法,先获取该元素ele,然后ele.value得到value值. <!DO ...

  6. Leha and another game about graph CodeForces - 840B (dfs)

    链接 大意: 给定无向连通图, 每个点有权值$d_i$($-1\leq d_i \leq 1$), 求选择一个边的集合, 使得删除边集外的所有边后, $d_i$不为-1的点的度数模2等于权值 首先要注 ...

  7. pluck的返回值

    前言 今天用到了laravel的pluck功能,就顺便记录下来. pluck是获取所读取的数据一列或者两列的方法. 一.获取一列代码如下: ->pluck('pic_url') ; 结果如下: ...

  8. 『cs231n』RNN之理解LSTM网络

    概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰 ...

  9. Matlab scatter 如何显示不同颜色点状

    有时候需要在matlab scatter绘图中显示不同颜色区分,如下图是人体血压高压.低压与年龄关系的散点图. 红色点表示高压 绿色点表示低压 用 matlab 如何实现呢? 1.创建一维矩阵x,y1 ...

  10. 现在转战c++的领域,纯幼儿园

    C++中: 如果你用#include<iostream.h>就不需写这句话(旧标准).但是如果你用#include<iostream>就必须要写.但是在VS2010中就出现错误 ...