配置keepalived

1.1.1 配置keepalived


1.1.1.1 主nginx


修改主nginx下/etc/keepalived/keepalived.conf文件
 
! Configuration File for keepalived
 
#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from XXX@XXX.com  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
 
vrrp_instance VI_1 { 
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}
 
 
1.1.1.2 备nginx


修改备nginx下/etc/keepalived/keepalived.conf文件
配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致
 
! Configuration File for keepalived
 
#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
    XXX@XXX.com
   }
   notification_email_from XXX@XXX.com   #指定发件人
   #smtp_server XXX.smtp.com                              #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
 
vrrp_instance VI_1 { 
    state BACKUP           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}
 
1.1.2 测试


主备nginx都启动keepalived及nginx。
service keepalived start
./nginx 
 
1.1.2.1 初始状态


查看主nginx的eth0设置:
vip绑定在主nginx的eth0上。
 
 
查看备nginx的eth0设置:
vip没有绑定在备nginx的eth0上。
 
 
访问ccc.test.com,可以访问。
 
1.1.2.2 主机宕机


将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机),查看主nginx的eth0:
eth0没有绑定vip
 
注意这里模拟的是停止 keepalived进程没有模拟宕机,所以还要将nginx进程也停止表示主nginx服务无法提供。
 
查看备nginx的eth0:
vip已经漂移到备nginx。
 
 
访问ccc.test.com,可以访问。
 
1.1.2.3 主机恢复


将主nginx的keepalived和nginx都启动。
查看主nginx的eth0:
 
查看备nginx的eth0:
vip漂移到主nginx。
 
 
查看备nginx的eth0:
eth0没有绑定vip
 
 
 
访问:ccc.test.com,正常访问。
注意:主nginx恢复时一定要将nginx也启动(通常nginx启动要加在开机启动中),否则即使vip漂移到主nginx也无法访问。
 
1.1.3 解决nginx进程和keepalived不同时存在问题


1.1.3.1 问题描述


keepalived是通过检测keepalived进程是否存在判断服务器是否宕机,如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换,所以我们需要写个脚本来监控nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉。
 
1.1.3.2 nginx进程检测脚本


在主nginx上需要编写nginx进程检测脚本(check_nginx.sh),判断nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉,check_nginx.sh内容如下:
 
#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A 
if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零
       service keepalived stop          ## 则结束 keepalived 进程
fi
 
将check_nginx.sh拷贝至/etc/keepalived下,
脚本测试:
将nginx停止,将keepalived启动,执行脚本:sh /etc/keepalived/check_nginx.sh
 
 
从执行可以看出自动将keepalived进程kill掉了。
 
1.1.3.3 修改keepalived.conf


修改主nginx的keepalived.conf,添加脚本定义检测:
注意下边红色标识地方:
 
#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from miaoruntu@itcast.cn  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"         ##监控脚本
    interval 2                                      ##时间间隔,2秒
    weight 2                                        ##权重
}
vrrp_instance VI_1 {
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
   track_script {
        check_nginx        #监控脚本
   }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
 
}
 
修改后重启keepalived
 
1.1.3.4 测试


回到负载均衡高可用的初始状态,保证主、备上的keepalived、nginx全部启动。
停止主nginx服务
 
观察keepalived日志:
tail -f /var/log/keepalived.log
 
查看keepalived进程已经不存在。
查看eth0已经没有绑定vip。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keepalived是一个高可用软件包,用于在分布式环境中提供网络服务的高可用性和负载均衡。配置Keepalived通常涉及到以下几个步骤: 1. **安装Keepalived**:首先在Linux系统上安装Keepalived,可以通过包管理器如apt-get(Ubuntu/Debian)或yum(RHEL/CentOS)来安装。 ```bash sudo apt-get update sudo apt-get install keepalived # 或者 sudo yum install keepalived ``` 2. **编辑配置文件**:默认情况下,配置文件位于`/etc/keepalived/keepalived.conf`。使用文本编辑器打开它,例如`vim`或`nano`。 ```bash sudo vi /etc/keepalived/keepalived.conf ``` 3. **定义虚拟路由器**:在配置文件中创建一个或多个`vrrp_instance`,每个实例代表一个服务。包括VRRP的ID(vrid),虚拟IP地址(virtual_ipaddress),以及备份组成员(members)等。 ```conf vrrp_instance VI_1 { interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass "your_password" } virtual_ipaddress { 192.168.1.100 } track_script { script "/usr/local/bin/check_script.sh" weight 2 } } ``` 4. **配置监控脚本**(可选):如果使用了`track_script`选项,你需要创建一个检查服务状态的脚本(如`check_script.sh`),该脚本的退出状态决定虚拟IP是否应该切换到其他备份节点。 5. **启动和检查服务**:配置完成后,重启Keepalived服务使其生效,并检查配置是否正确。 ```bash sudo service keepalived restart sudo keepalived -v ``` 6. **监控和日志**:你可以通过`/var/log/messages`或`/var/log/keepalived.log`查看Keepalived的日志,以便于调试和监控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值