智能一代云平台(十七):Keepalived+Nginx实现高可用,反向代理---Keepalived安装及相关配置

来源:互联网 发布:淘宝卖衣服怎么进货 编辑:程序博客网 时间:2024/04/27 23:51

【前言】

    在博文《高校云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置》中介绍了Nginx的安装及相关配置的信息,由于篇幅原因不能用一篇博文描述完,这篇接着为大家分享其中的一个非常重要的模块Keepalived的安装及相关配置。

【研究之路】

    一、郑重声明        

        本篇博文的前导博文为《高校云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置》,严重建议大家在看完前导博文的基础上再来看这篇博文;

    二、我眼中的Keepalived

        1、刚开始接触Keepalived的时候感觉一脸懵逼,感觉无从下手,从网上查阅资料普及这方面知识开始,好在这个技术已经十分成熟,网上有很轻松可以找到很多参考资料,在研究的过程中对它的理解越加的深刻,同时也联想到之前自己看过一些高可靠的资料;

       2、逐渐在脑海中勾勒出一幅图,而这个线索是我对一个问题的思考不断摸索出来:

          (1)过程:如何保证高可靠

                 如果宕机了怎么样在不受影响的情况下自动切换上去?

                 Keepalived的恰巧解决了这个问题

           用图来展示   

   

    三、安装之路

       1、Keepalived安装前需要的环境:wget、gcc、opensll、zlib、popt-devel(其中前四个已在Nginx安装配置中讲解过,在此只将popt-devel)

         (1)popt-devel 用于从外网上下载插件
             ①检查系统中是否已经安装popt,使用命令man popt 若出现下图popt相关描述则说明系统中已经安装popt 若报系统找不到命令说明popt未安装        
             ②若popt未安装则进行安装,安装命令: yum install –y popt-devel
        2、Keepalived的安装及配置:
          (1)进入一个目录(随便一个目录即可,用来存放下载的Keepalived的包,在此以/root目录为例)命令:cd /root
          (2)下载最新稳定版本(目前最新版本为keepalived-1.3.4通过官网http://www.keepalived.org/softwar命令:wget http://www.keepalived.org/software/keepalived-1.3.4.tar.gz
          (3)解压keepalived-1.3.4.tar.gz 命令: tar -zxvf keepalived-1.3.4.tar.gz
          (4)进入刚解压的目录 命令:cd keepalived-1.3.4
          (5)进行相关配置(后半部分指定安装目录)命令:./configure -prefix=/usr/local/keepalived-1.3.4
若出现问题:
      解决办法:
a.对rpm进行清理 命令: yum clean all
b.重新安装openssl 命令: yum install -y openssl openssl-devel
c.重新执行命令:./configure -prefix=/usr/local/keepalived-1.3.4
          (6)编译和安装 命令:make && make install
          (7)建立服务启动脚本,以便使用service命令控制 命令:cp /root/keepalived-1.3.4/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
          (8)由于安装使用非默认路径(本教程中使用的/usr/local/keepalived-1.3.4)故需修改相关路径,保证keepalived能正常启动;文件 /etc/init.d/keepalived 大约15行位置将. /etc/sysconfig/keepalived 修改为. /usr/local/keepalived-1.3.4/etc/sysconfig/keepalived     
          (9)配置环境变量(将keepavlied主程序所在路径导入到环境变量PATH中)命令: vi /etc/profile 加入相关内容export PATH=/usr/local/keepalived-1.3.4/sbin:$PATH(其中# add keepalived path为注释)     
          (10)用命令:source /etc/profile 使修改的环境变量生效        
        用命令: export 进行检查:        
          (10)建立可执行文件链接 命令: ln -s /usr/local/keepalived-1.3.4/sbin/keepalived /usr/sbin/
          (11)修改keepalived配置文命令: vi /usr/local/keepalived-1.3.4/etc/keepalived/keepalived.conf
             参考文章: 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层配置文件keepalived.conf详解
          (12)编写配置文件中涉及到的监控Nginx脚本;(本教程以目录是在/usr/local/keepalived-1.3.4 下创建nginx_check.sh为例)
      ①创建文件命令:vi /usr/local/keepalived-1.3.4/nginx_check.sh
      ②编写内容并保存:    
脚本如下也可直接使用:   
③进入到相应目录下将监控Nginx编写的脚本提升权限为可执行文件,本例以/usr/local/keepalived-1.3.4 目录下的nginx_check.sh为例;命令: chmod +x nginx_check.sh 再检查看文件是否变颜色,变颜色则说明为可执行文件
          (13)修改相应文件,设置正确启动参数命令:vi /usr/local/keepalived-1.3.4/etc/sysconfig/keepalived 修改的路径为安装路径下的配置文件修改内容: KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived-1.3.4/etc/keepalived/keepalived.conf" 
          (14)将修改好的keepalived拷贝到/etc/etc/sysconfig 目录下 命令:
 cp /usr/local/keepalived-1.3.4/etc/sysconfig/keepalived /etc/sysconfig/
          (15)测试:
①启动 命令: service keepalived start      
      ②查看keepalived运行状态,命令: service keepalived status      
      ③停止keepalived 命令: service keepalived stop      
          (16)遇到问题和解决方案:
①    问题:启动服务失败
②    查找方案:
A.    查看状态
B.    查看keepalived配置文件 默认是在/var/log/messages中命令: tail -f  /var/log/messages
C.    提示应该是配置文件的问题,核实配置文件,发现网卡写错了 
D.    检查本机网卡的命令:ip addr 改正后即可
          (17)扩展:对Keepalived的日志输出进行指定(非必做步骤):
①原因: 以前配置keepalived时候所有的日志都是写入到/var/log/message下的,由于message的日志太多了而keepalived的日志又很那分离出来。
          ②操作步骤:
A.    修改/etc/sysconfig目录下的keepalived文件,命令: vi /etc/sysconfig/keepalived,将KEEPALIVED_OPTIONS修改为KEEPALIVED_OPTIONS="-f /usr/local/keepalived-1.3.4/etc/keepalived/keepalived.conf -D -d -S 0"
B.    修改/etc下的rsyslog.conf文件,命令: vi /etc/rsyslog.conf,进行如下的修改需要注意的是重定位的日志目录/var/log下没问题,其他目录会有问题
C.    重启系统的日志服务 命令: service rsyslog restart
③测试:
A.    将Keepalived服务重启
B.    查看文件是否存在,若存在则说明日志修改成功 命令: vi /var/log/keepalived.log
④参考文章:
         keepalived配置日志
             修改Keepalived配置文件位置以及重定向Keepalived日志的输出路径
四、Keepalived+Nginx联合实现高可靠,反向代理验证
1、配置Nginx配置文件,224和229除IP不同外其他都相同
2、Keepalived的配置文件都相同,和上面讲解Keepalived相同
3、进行相关的验证:
(1)    Keepalived+Nginx实现虚拟IP+反向代理验证:
①    实验效果图:
 
②    将224和229上的Nginx和Keepalived都启动起来
检验命令: ps -ef | grep nginx 和ps -ef | grep keepalived
 
③    用浏览器进行相关访问
访问: http://192.168.22.145:8899/a/logs/
 
访问: http://192.168.22.145:8899/b/cas/login
 
④注意若访问不通则进行以下排查:
A.    访问Nginx被代理的真实网站地址是否通,在本教程中为http://192.168.21.17:8011/logs/ 和http://192.168.22.203:8888/cas/login 若不通则说明应用服务有问题进行排查,一般原因:a.服务器的防火墙和本地防火墙是否关闭或开放相应的端口 b.网站本身是否启动
B.    访问Nginx是否能正确代理到,在本教程(以Keepalived主节点229所在Nginx上为例)中为http://192.168.22.229:8899/b/cas/login 和http://192.168.22.229:8899/a/logs/ 若有问题则一般原因有:a.Nginx服务未启动或修改配置文件后未重新启动Nginx b.Nginx配置文件写的有问题 c.Nginx所在服务器和客户机的防火墙是否关闭或所监听的端口是否开放
C.    若AB两步均没有问题,但是访问http://192.168.22.145:8899/a/logs/ 或http://192.168.22.145:8899/b/cas/login 还有问题则说明Keepalived存在问题 一般原因有:a.主和从的keepalived是否都关闭 检验方法在下面的(2)步会提到 b.Keepalived的配置文件是否有问题 c.Keepalived所在服务器的防火墙是否关闭
(2)    Keepalived心跳检测验证(Keepalived 的高可用特性验证)[注:以下查看日志方式若将keepalived的日志配置重定向也可在指定的位置看更具有针对性,下面演示为了满足通用性还以在message中看为例]
A.在(1)步骤基础上来做,先用命令(tail -f /var/log/messages)分别查看229和224上的日志文件如下:
229的日志
 
      224的日志
 
B.将229的Keepalived挂掉(在此由于Keepalived的检测Nginx的脚本中让Nginx不断启动在此用停止Keepalived的方式来229节点出故障)
①在229上将Keepalived停掉
停止命令: service keepalived stop
查看状态命令: service keepalived status
 
②查看229和224上的配置文件
229上的日志文件:
 
224上的日志文件:
 
③测试网站发现依然可以正常访问
http://192.168.22.145:8899/a/logs/
http://192.168.22.145:8899/b/cas/login
④将229上的keepalived重新启动 命令: service keepalived start
 
⑤分别查看229和224上的keepalived的日志
229上日志---重新成为主节点
 
224上的日志---重新成为备份节点
 
⑥测试网站仍可以正常访问
http://192.168.22.145:8899/a/logs/
http://192.168.22.145:8899/b/cas/login
五、Keepalived+Nginx总结
  1、利用Keepalived心跳检测及虚拟IP机制实现系统的高可用,利用Nginx实现反向代理
  2、可以扩展的地方:
     (1)应用服务器如果是集群形式的话也可以用Nginx来做负载,这样来分压
     (2)如果Nginx正常的话224上的备份Keepalived和Nginx就处于闲置状态解决办法: ①采用DNS轮循(参考: LVS专题: LVS+Keepalived并使用DNS轮询实现Director的高可用和负载均衡 和 DNS部署(四)之lvs+keepalived+bind架构高可用负载均衡DNS系统)

          ②如果不做DNS轮循的话可以让224做些其他的事情来利用起来资源

【总结】

     1、


4 0
原创粉丝点击