转载地址:  http://www.cnblogs.com/kaituorensheng/p/4889268.html

阅读目录

  • nginx
  • keepalived
  • 测试
  • 问题:杀死keepalived进程后,可以实现vip的偏移,但是原机器的vip无法自动删除
回到顶部

双机热备是指两台机器都在运行,但并非两台机器同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短。

keepalived的工作原理是VRRP——虚拟路由冗余协议。

测试环境如下:

ip

vip

master

192.168.174.135

192.168.174.140

backup

192.168.174.137

192.168.174.140

回到顶部

nginx

安装

sudo apt-get install nginx 

查找配置文件位置

sudo find / -name nginx.conf
/etc/nginx/nginx.conf

修改配置文件(nginx.conf)

user www-data;
worker_processes 4;
pid /run/nginx.pid;events {worker_connections 1024;
}http {sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;server {listen 80 default_server;server_name test;charset utf-8;location / {root html;index index.html index.htm;proxy_set_header X-Real_IP $remote_addr;client_max_body_size 100m;}}
}

文件/usr/share/nginx/html/index.html

在192.168.174.135上加上  <h1>Welcome to nginx!  135  </h1>

在192.168.174.137上加上  <h1>Welcome to nginx!   ***137***   </h1>

启动

sudo service nginx start  

关闭

sudo service nginx stop
回到顶部

keepalived

安装

下载keepalived-1.2.19.tar.gz

tar –zxvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived
make
sudo make install

期间可能出现问题:

!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!

解决

sudo apt-get install libssl.dev

建立软链接

sudo ln -s /usr/local/keepalived/sbin/keepalived /sbin/
sudo ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
sudo ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

启动

sudo keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf

关闭

sudo killall keepalived

配置(keepalived.conf):

global_defs {router_id NODEA
}vrrp_instance VI_1 {state MASTER interface eth0        #监测网络接口 virtual_router_id 50  #主、备必须一样  priority 100          #优先级:主>备advert_int 1authentication {auth_type PASS #VRRP认证,主备一致auth_pass 1111  #密码
}virtual_ipaddress {192.168.174.140/24 #VRRP HA虚拟地址}
}

备用节点的配置

global_defs {router_id NODEB
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 50priority 90 advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.174.140/24}
}
回到顶部

测试

双击热备

两台机子均启动nginx和keepalived,浏览器各自访问

浏览器访问:http://192.168.174.140/,显示的是MASTER的页面。

同样用ip appr可以验证:

135机器:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:39:d4:88 brd ff:ff:ff:ff:ff:ff

inet 192.168.174.135/24 brd 192.168.174.255 scope global eth0

valid_lft forever preferred_lft forever

inet 192.168.174.140/24 scope global secondary eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fe39:d488/64 scope link

valid_lft forever preferred_lft forever

137机器:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000

link/ether 00:0c:29:cf:23:62 brd ff:ff:ff:ff:ff:ff

inet 192.168.174.137/24 brd 192.168.174.255 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fecf:2362/64 scope link

valid_lft forever preferred_lft forever

现在关闭135机器的keepalived。

但当nginx宕掉或整个机子宕机后,这种情况不行了——通过浏览器访问192.168.174.140访问不到资源。

nginx宕掉/机器宕掉热备

为了解决上一问题,可以利用脚本,当检测到nginx进程宕掉后,自动关闭keepalived进程,从而实现热备份。

主节点的配置

global_defs {router_id NODEA
}vrrp_script chk_http_port {script "/home/jimite/keepalived/chk_nginx_pid.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTER interface eth0virtual_router_id 50priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {192.168.174.140/24}
}

备用节点的配置

global_defs {router_id NODEB
}vrrp_script chk_http_port {script "/home/jihite/keepalived/chk_nginx_pid.sh"interval 2weight 2
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 50priority 90 advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {192.168.174.140/24}
}

其中/home/jimite/keepalived/chk_nginx_pid.sh为

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]
thenecho 'nginx server is died'sudo killall keepalived
fi
回到顶部

问题:杀死keepalived进程后,可以实现vip的偏移,但是原机器的vip无法自动删除

原因:VRRP协议原理是:只有MASTER对外发送消息。各BACKUP接受消息,当接受不到消息时会在剩下的BACKUP机器中选出新的MASTER。
之前用kill -9 pid 或killall pid杀死keepalived进程,导致安装keepalived不能发送信息,BACKUP收不到信息升级为MASTER,但是由于进程被杀死【非正常关闭】,导致keepalived没有能力自己删除vip。
解决方案:关闭keepalived时用命令
service keepalived stop  或   kill -15 pid(注:只删除第一个进程号)
存在问题:
非正常关闭keepalived。 禁止使用kill -9  或killall杀死keepalived。

(11) nginx + keepalived 双机热备相关推荐

  1. 图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境

    上一次分享了Nginx相关的应用场景如下: ​Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热 ...

  2. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  3. nginx+keepalived双机热备

    简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,即可以使IP层.传输层.和应用层的服务冗余集群化.常应用于iP的虚拟化,能够实现mysql.nginx等服务的双 ...

  4. Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:linux负 ...

  5. Nginx+keepalived 双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:linux负 ...

  6. Nginx之——Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 由于业务扩展,网站的访问量不断加大,负载 ...

  7. Nginx+Keeplived双机热备(主从模式)

    Nginx+Keeplived双机热备(主从模式) 参考资料: http://www.cnblogs.com/kevingrace/p/6138185.html 双机高可用一般是通过虚拟IP(漂移IP ...

  8. ​Keepalived双机热备

    Keepalived双机热备 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当 ...

  9. Linux7双机,Centos 7 keepalived双机热备

    Centos 7 keepalived双机热备 操作环境: keepalived热备份(双机热备) Centos 7系统ip地址: 192.168.80.100 --主服务器 Centos 7系统ip ...

最新文章

  1. BZOJ 4595 SHOI2015 激光发生器 射线,线段,偏转
  2. 在Itanium2、Intel Fortran Compiler上安装VASP4.6
  3. poj2987最大权闭包(输出最少建塔个数)
  4. mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法
  5. Shell(1)——执行脚本
  6. js 获取data-属性值
  7. 如何保证文章中同一组样品在不同子图颜色一致?
  8. 集成springboot案例_SpringBoot开发者都在用的五款优质扩展,每个都很能打!
  9. pom.xml中添加oracle数据库驱动包报错: Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  10. 【软考软件评测师】2011年下案例分析历年真题
  11. WPF 入门教程 TextBox详解
  12. 奇虎360面经:测试
  13. Flink 1.13(八)CDC
  14. 刘宇凡:我眼中的SEO思维
  15. 基于深度神经网络实现的kws系统
  16. web语意化的深入理解
  17. 【Py】基于Python的身份证读卡器二开全记录
  18. 内存映射I/O与端口映射I/O的区别
  19. GO富集分析相关概念
  20. h5公众号调取微信扫一扫功能,处处都是坑~

热门文章

  1. 【Java多线程】生产者消费者问题
  2. 怎么new一个指针_【译】Rust与智能指针
  3. django language_Python+Django— 入门通关(三)| admin:后台管理界面
  4. zoj 3707 Calculate Prime S
  5. 【简便解法】1068 万绿丛中一点红 (20分)
  6. [leetcode]94.二叉树的中序遍历
  7. 数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言
  8. 图片怎么压缩图片大小_图片的体积怎么压缩?这三种方法你会吗?
  9. docker容器的本地局域网yum源优化
  10. mysql安装时损坏的图像_在PHP中从MySQL获取图像会导致图像损坏