keepalived部署

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.gz
cd keepalived-1.2.24
./configure
make
make install
cp /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/keepalived
mkdir -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和BACKUP
virtual_router          路由id
priority            优先级,值越高,主机状态就是MASTER
advert_int          检查间隔
nopreempt           不抢占
authentication          设置认证
auth_type           认证方式
auth_pass           认证密码

virtual_ipaddress       设置VIP
track_script            脚本监控,名称为vrrp_script设置

virtual_server          虚拟服务器定义模块
delay_loop          健康检查时间间隔
lb_algo wrr             调度算法,包括rr/wrr/lc等
lb_kind DR          转发规则,包括NAT/DR/TUN
persistence_timeout     会话保持时间
protocol TCP            采用的协议
real_server         真实ip端口
weight              给每台主机的权重,0代表失效

TCP_CHECK
connect_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 nginx
if [[ $? -ne 0 ]];then
        /etc/init.d/keepalived stop
fi


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

启动keepalived服务

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

查看启动情况

[root@leeclient init.d]# ps -ef | grep keepalived 
root      8212     1  0 22:05 ?        00:00:00 keepalived -D
root      8214  8212  0 22:05 ?        00:00:00 keepalived -D
root      8215  8212  0 22:05 ?        00:00:00 keepalived -D
root      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 nginx
tail -f /var/log/messages
ip 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
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一个开源的高性能、可扩展的网络负载均衡软件,而keepalived是一个基于VRRP协议实现的高可用性解决方案。它们结合使用可以实现高可用的负载均衡服务。 以下是LVS+keepalived部署过程: 1. 安装LVS 在LVS的主机上安装LVS软件,可以使用以下命令: ``` yum install ipvsadm -y ``` 2. 配置LVS 配置LVS的主要步骤如下: (1)配置LVS虚拟服务器 在LVS主机上创建一个虚拟服务器(Virtual Server),可以使用以下命令: ``` ipvsadm -A -t VIP:PORT -s sh ``` 其中,VIP是虚拟IP地址,PORT是虚拟端口号。 (2)向LVS虚拟服务器添加真实服务器 将真实服务器添加到LVS虚拟服务器中,可以使用以下命令: ``` ipvsadm -a -t VIP:PORT -r REAL_SERVER_IP:PORT -g ``` 其中,REAL_SERVER_IP是真实服务器的IP地址,PORT是真实服务器的端口号。 (3)配置LVS调度算法 LVS支持多种调度算法,如轮询(Round Robin)、加权轮询(Weighted Round Robin)、最少连接数(Least Connections)等。可以使用以下命令配置LVS调度算法: ``` ipvsadm -E -t VIP:PORT -s SCHEDULER_NAME ``` 其中,SCHEDULER_NAME是调度算法的名称。 (4)保存LVS配置 在LVS主机上保存LVS配置,可以使用以下命令: ``` ipvsadm-save > /etc/sysconfig/ipvsadm ``` 3. 配置keepalived 配置keepalived的主要步骤如下: (1)安装keepalived 在LVS主机上安装keepalived软件,可以使用以下命令: ``` yum install keepalived -y ``` (2)配置keepalived 在LVS主机上创建keepalived配置文件/etc/keepalived/keepalived.conf,配置文件的内容如下: ``` global_defs { router_id LVS_DEMO } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { VIP/24 dev eth0 } } ``` 其中,VIP是虚拟IP地址。 (3)启动keepalived 使用以下命令启动keepalived服务: ``` systemctl start keepalived ``` 4. 测试LVS+keepalived 在浏览器中输入VIP地址和端口号,如果能够正常访问真实服务器,则LVS+keepalived部署成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值