热门标签 | 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了



推荐阅读
  • linux clickhouse安装在指定目录_Centos8服务器指定目录安装配置Nginx
    1.安装前准备(1)检查是否安装过nginx(如果没有安装过可以无视)find-namenginx搜索nginx文件及其文件夹rm-rf【nginx配置地址文件及其文件夹】手动删除 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • Git 第二章 Git 安装和卸载
    1.Git安装1.1软件下载打开[git官网]https:git-scm.com,下载git对应操作系统的版本。所有东西下载慢的话就可以去找镜像!官网 ... [详细]
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社区 版权所有