keepalived部署

来源:互联网 发布:2016最好用的优化软件 编辑:程序博客网 时间:2024/06/03 21:35

keepalived是一种轻量级的高可用软件解决方案,主要功能为监控检查和VRRP冗余协议。基于三层检测,即IP层/TCP层/应用层,当检测到某台服务器的服务出现故障等,会自动剔除有故障的服务,服务恢复正常后自动加入到服务器群中。

  • 环境

192.168.2.118 nginx主/keepalived-master
192.168.2.119 nginx从/keepalived-slave
192.168.2.112 lap


  • keepalived部署

在118服和119服上部署keepalived服务(注意执行权限)

wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz tar -zxvf keepalived-1.2.24.tar.gzcd keepalived-1.2.24./configuremakemake installcp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/cp /usr/local/sbin/keepalived /usr/sbin/

这里写图片描述

完成预编译后,上图表示开启了VRRP模块


  • keepalived+nginx主备架构

118服的keepalived配置

手动添加配置目录和检测脚本目录

mkdir -p /etc/keepalivedmkdir -p /data/sh/

添加配置文件keepalived.conf

! Configuration File for keepalived global_defs {  notification_email {      abc@163.com }    notification_email_from abc@163.com    smtp_server 127.0.0.1    smtp_connect_timeout 30    router_id LVS_DEVEL } vrrp_script chk_nginx {    script  "/data/sh/check_nginx.sh"    interval 2    weight 2 } vrrp_instance VI_1 {     state BACKUP     interface eth0     lvs_sync_daemon_inteface eth0     virtual_router_id 151     priority 100     advert_int 5     nopreempt     authentication {         auth_typePASS         auth_pass  1111     }     virtual_ipaddress {         192.168.2.129  }     track_script {     chk_nginx    } }

常用参数说明:

notification_email      当切换的时候发送通知对象notification_email_from     发件人smtp_server         smtp服务地址smtp_connect_timeout        smtp连接超时时间router_id           运行keepalived的标识vrrp_script         检测脚本script              脚本路径interval            检测时间间隔weight              权重vrrp_instance           vrrp实例state               主机状态,包括MASTER和BACKUPvirtual_router          路由idpriority            优先级,值越高,主机状态就是MASTERadvert_int          检查间隔nopreempt           不抢占authentication          设置认证auth_type           认证方式auth_pass           认证密码virtual_ipaddress       设置VIPtrack_script            脚本监控,名称为vrrp_script设置virtual_server          虚拟服务器定义模块delay_loop          健康检查时间间隔lb_algo wrr             调度算法,包括rr/wrr/lc等lb_kind DR          转发规则,包括NAT/DR/TUNpersistence_timeout     会话保持时间protocol TCP            采用的协议real_server         真实ip端口weight              给每台主机的权重,0代表失效TCP_CHECKconnect_timeout         连接超时时间nb_get_retry            重连次数delay_before_retry      重连时间间隔connect_port            连接端口

nginx检测脚本check_nginx.sh(注意执行权限chmod u+x check_nginx.sh)

#!/bin/bash#2017年12月5日21:50:40#auto check nginx#by me###################killall -0 nginxif [[ $? -ne 0 ]];then        /etc/init.d/keepalived stopfi

在119服上也根据上述操作部署keepalived,在配置文件中,把优先级priority的值改成80

启动keepalived服务

/etc/init.d/keepalived start或service keepalived startmodprobe ip_vs           内核加载ipvs模块

查看启动情况

[root@leeclient init.d]# ps -ef | grep keepalived root      8212     1  0 22:05 ?        00:00:00 keepalived -Droot      8214  8212  0 22:05 ?        00:00:00 keepalived -Droot      8215  8212  0 22:05 ?        00:00:00 keepalived -Droot      8427  1712  0 22:08 pts/0    00:00:00 grep keepalived[root@leeclient init.d]#

查看日志

tail -f /var/log/messages

这里写图片描述

表示一开始是backup状态,后来检测到118和119都是backup,然后根据优先级来判断,118服的keepalived升级成master

查看ip状态

ip addr list


这里写图片描述


这里写图片描述

浏览器输入VIP:192.168.2.129

这里写图片描述

此时访问nginx是118服的

手动停止118服的nginx服务,再查看日志和ip

pkill nginxtail -f /var/log/messagesip addr list

118服的keepalived检测到nginx服务停止后,会执行检测脚本,停止keepalived服务:

这里写图片描述

119服可以看到进入了master状态:

这里写图片描述

此时再看ip,则发现nginx切换到了119服上。
118服:
这里写图片描述

119服:
这里写图片描述

此时继续访问192.168.2.129也可以正常访问web。从而实现了高可用。
再开启118的nginx及keepalived服务后,118的keepalived变成了backup状态,只有119的nginx挂了,才会自动切换到119的nginx上。

当118和119同时设置state为backup,118的priority为100,119的priority为80,并且同时设置为nopreempt,此时谁先启动keepalived,谁就是master,当master挂了后再恢复时状态一直为backup。如果注释掉nopreempt,则在状态同为backup的情况下,谁的优先级高谁就抢占成功成为master。

备注:
1) 在预编译的时候,出现错误configure: error: Popt libraries is required
没有安装popt开发包,执行

yum -y install popt-devel
原创粉丝点击