热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Keepalived+Nginx实现高可用Web负载均衡

KeepalivedNginx实现Keepalived简要介绍Keepalived是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器

Keepalived+Nginx实现

Keepalived简要介绍

Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故

障的发生,通过配合 Nginx可以实现 web前端服务的高可用。

Keepalived  VRRP 协议为实现基础,用 VRRP 协议来实现高可用性(HA)VRRP(Virtual Router

Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个

设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如

果工作正常的话就是 MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器 IP的各种网络功能,

 ARP请求,ICMP,以及数据的转发等;其他设备不拥有该虚拟 IP,状态是 BACKUP,除了接收 MASTER

VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先 MASTER的网络功能。

VRRP协议使用多播数据来传输 VRRP数据,VRRP数据使用特殊的虚拟源 MAC地址发送数据而不是自身

网卡的 MAC地址,VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,表示 MASTER 工作正常以及虚

拟路由器 IP()BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信

息,各 BACKUP将宣告自己成为 MASTER,发送通告信息,重新进行 MASTER选举状态。


开始搭建:

节点: 安装

Cluster1 192.168.152.11    Keepalived  Nginx          CentOs6.8
Cluster1 192.168.152.12Keepalived  Nginx          CentOs6.8

 下载 Keepalived v1.2.18 和Nginx 1.10.2

点击这里下载Keepalived   点击这里下载Nginx

首先 安装需要的环境


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel  
  2. openssl openssl-devel  

执行 下载
编译 Nginx
所需的依赖包



上传到Linux Nginxtar包 
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. tar -zxvf nginx-1.10.2.tar.gz  
  2. cd nginx-1.10.2  
  3. ./configure --prefix=/soft/install/nginx  
  4. make && make install  

执行上面代码 进行编译


成功以后 开始配置Nginx


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. vim /soft/install/nginx/conf/nginx.conf  

user  root;

将用户改为 root



修改html下的index.html页面 


Cluster2 机器同理


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. 启动 Nginx  
  2. /usr/local/nginx/sbin/nginx  
  3. 重启 Nginx  
  4. /usr/local/nginx/sbin/nginx -s reload  



访问


Nginx安装成功


安装Keepalived

上传并编译


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. tar -zxvf keepalived-1.2.18.tar.gz  
  2. cd keepalived-1.2.18  
  3. ./configure --prefix=/soft/install/keepalived  
  4. make && make install  



 keepalived安装成 Linux系统服务:

因为没有使用 keepalived的默认路径安装(默认是/usr/local,安装完成之后,需要做一些工作

复制默认配置文件到默认路径


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. mkdir /etc/keepalived  
  2. cp /soft/install/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/  

复制 keepalived服务脚本到默认的地址


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. cp /soft/install/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  
  2. cp /soft/install/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  
  3. ln -s /soft/install/sbin/keepalived /usr/sbin/  
  4. ln -s /soft/install/keepalived/sbin/keepalived /sbin/  



设置 keepalived服务开机启动


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. chkconfig keepalived on  


修改 Keepalived (Master)192.168.152.11配置文件


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. vi /etc/keepalived/keepalived.conf  

内容为:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. ! Configuration File for keepalived  
  2.   
  3. global_defs {  
  4.    router_id cluster1  
  5. }  
  6.   
  7. vrrp_script chk_nginx {  
  8.         script "/etc/keepalived/nginx_check.sh"  
  9.         interval 60  
  10.         weight -20  
  11. }  
  12.   
  13. vrrp_instance VI_1 {  
  14.     state MASTER  
  15.     interface eth0  
  16.     virtual_router_id 51  
  17.     mcast_src_ip 192.168.152.11  
  18.     priority 100  
  19.     nopreempt  
  20.     advert_int 1  
  21.     authentication {  
  22.         auth_type PASS  
  23.         auth_pass 1111  
  24.     }  
  25.     track_script {  
  26.         chk_nginx  
  27.     }  
  28.     virtual_ipaddress {  
  29.         192.168.152.66  
  30.     }  
  31. }  




[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. vi /etc/keepalived/keepalived.conf  



配置BACKUP (192.168.152.12)
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. ! Configuration File for keepalived  
  2.   
  3. global_defs {  
  4.    router_id cluster2  
  5. }  
  6.   
  7. vrrp_script chk_nginx {  
  8.         script "/etc/keepalived/nginx_check.sh"  
  9.         interval 2  
  10.         weight -20  
  11. }  
  12.   
  13. vrrp_instance VI_1 {  
  14.     state BACKUP  
  15.     interface eth0  
  16.     virtual_router_id 51  
  17.     mcast_src_ip 192.168.152.12  
  18.     priority 90  
  19.     nopreempt  
  20.     advert_int 1  
  21.     authentication {  
  22.         auth_type PASS  
  23.         auth_pass 1111  
  24.     }  
  25.     track_script {  
  26.         chk_nginx  
  27.     }  
  28.     virtual_ipaddress {  
  29.         192.168.152.66  
  30.     }  
  31. }  



编辑检查脚本

/etc/keepalived/nginx_check.sh


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #!/bin/bash  
  2.   
  3. cd /soft/data/  
  4. failcount=0  
  5. runlog=nginx_runlog.txt  
  6.   
  7. for((i=1;i<=6;i++));  
  8. do  
  9.         result=`curl http://127.0.0.1/isok.html`  
  10.   
  11.         time=`date +%F\ %k:%M:%S`  
  12.         error=false  
  13.         if [ "$result" != "ok" ] ; then  
  14.                 echo "=================$time====================" >> $runlog  
  15.                                 failcount=`expr $failcount + 1`  
  16.                                 echo "nginx doesn&#39;t work!" >> $runlog  
  17.                 echo " ================================" >> $runlog  
  18.         else  
  19.                 break  
  20.         fi  
  21.   
  22.         if test $failcount -gt 5 ; then  
  23.                 echo "\n==================$time=====================\n\n" >> $runlog  
  24.                 echo "restart nignx..." >> $runlog  
  25.                 echo "     ================================" >> $runlog  
  26.   
  27.                         #关闭  
  28.                         /soft/install/nginx/sbin/nginx -s stop  
  29.   
  30.                         if [ -s /soft/install/nginx/logs/nginx.pid ] ; then  
  31.                                 pid=`cat /soft/install/nginx/logs/nginx.pid`  
  32.                                 kill -quit $pid  
  33.                         fi  
  34.   
  35.                         #启动  
  36.                         /soft/install/nginx/sbin/nginx  
  37.   
  38.                         sleep 10  
  39.   
  40.                         result=`curl http://127.0.0.1/isok.html`  
  41.   
  42.                         if [ "$result" != "ok" ] ; then  
  43.                                  killall keepalived  
  44.                         fi  
  45.         fi  
  46. done  


添加isok.html
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. vim /soft/install/nginx/html/isok.html   
  2. ok  


给脚本权限


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. chmod +x /etc/keepalived/nginx_check.sh  

启动 Keepalived


[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. service keepalived start  
  2. Starting keepalived: [ OK ]  



Keepalived服务管理命令:

停止:service keepalived stop

启动:service keepalived start

重启:service keepalived restart

查看状态:service keepalived status



Ok 配置已经结束了 随便检测

到此结束。。。Keepalived + Nginx双机热备就OK了



推荐阅读
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在 CentOS 6.6 系统中搭建 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的运行环境配置指南
    本文提供了在 CentOS 6.6 系统上配置 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的详细步骤。首先,确保本机环境为 CentOS 6.6,并使用阿里云的 YUM 源来安装必要的软件包,包括 gcc、gcc-c++、bison、pkgconfig 和 glib2-devel。这些软件包是构建和运行 MONO 环境的基础,确保系统能够顺利支持 ASP.NET 和 MVC 应用的部署和运行。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
author-avatar
萧俊瑄俊明纬伦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有