1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Keepalived+Nginx实现高可用 反向代理---Keepalived安装及相关配置

Keepalived+Nginx实现高可用 反向代理---Keepalived安装及相关配置

时间:2023-03-23 00:44:51

相关推荐

Keepalived+Nginx实现高可用 反向代理---Keepalived安装及相关配置

【前言】

在博文《智能一代云平台(十五):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通过官网/softwar命令:wget /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 ];thenservice keepalived startfi elif [ $keepalivedPidNum -eq 0 ];thenservice keepalived startfi

③进入到相应目录下将监控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、经过一路的探索,收获许多;

2、多动手,多去验证,带着一颗好奇的心去做事。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。