您的位置:首页 > 大数据 > 云计算

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

2017-03-17 21:55 1101 查看

【前言】

      在博文《智能一代云平台(十五):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_check.sh):         nxPidNum=`ps -C nginx --no-header |wc -l`
keepalivedPidNum=`ps -C keepalived --no-header |wc -l`
if [ $nxPidNum -eq 0 ];then
/usr/local/nginx-1.10.3/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
elif [$keepalivedPidNum -eq 0 ];then
service keepalived start
fi
elif [ $keepalivedPidNum -eq 0 ];then
service keepalived start
fi               ③进入到相应目录下将监控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/loginhttp://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总结
[b]        [/b]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、经过一路的探索,收获许多;
     2、多动手,多去验证,带着一颗好奇的心去做事。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐