keepalived 配置说明

keepalived 配置说明

1 配置文件组成部分

配置文件
/etc/keepalived/keepalived.conf
配置文件组成
    GLOBAL CONFIGURATION
        Global definitions:定义邮件配置,route_id,vrrp配置,多播地址等
    VRRP CONFIGURATION
        VRRP instance(s):定义每个vrrp虚拟路由器
    LVS CONFIGURATION
        Virtual server group(s)
        Virtual server(s):LVS集群的VS和RS

2 配置语法说明

man keepalived.conf

2.1 全局配置

global_defs {
   notification_email {				#keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc    #发邮件的地址
   smtp_server 192.168.200.1	#邮件服务器地址
   smtp_connect_timeout 30		#邮件服务器连接timeout
   router_id LVS_DEVEL			#每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响
   vrrp_skip_check_adv_addr		#对所有通告报文都检查
   #vrrp_strict					#严格遵守VRRP协议,建议关闭此项配置
   vrrp_garp_interval 0			#gratuitous ARP messages 报文发送延迟,0表示不延迟
   vrrp_gna_interval 0			#unsolicited NA messages (不请自来)消息发送延迟
   vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18
   vrrp_iptables        		#此项和vrrp_strict同时开启时,添加防火墙规则
}

2.2 配置虚拟路由器

 vrrp_instance VI_1 {       #vrrp_instance <STRING> #<String>为vrrp的实例名,一般为业务名称 
    state MASTER|BACKUP		#当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface eth0			#绑定为当前虚拟路由器使用的物理接口,如:eth0,bond0,br0
    virtual_router_id 51	#每个虚拟路由器惟一标识,范围:0-255
    priority 100			#当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高
    advert_int 1			#vrrp通告的时间间隔,默认1s
    authentication {		#认证机制
        auth_type PASS		#PASS简单密码
        auth_pass 1111		##密码,同一个虚拟路由器的多个keepalived节点必须一样
    }
    virtual_ipaddress {		#虚拟IP,生产环境可能指定上百个IP地址
        192.168.200.16		#指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认为/32
        192.168.200.17		#指定VIP的网卡,建议和interface指令指定的岗卡不在一个网卡
        192.168.200.18		#指定VIP的网卡label 
		track_interface { #配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
			eth0
			eth1
			…
    }
}

2.3 启用keepalived日志功能

[root@ka1 ~]#vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"
[root@ka1 ~]#vim /etc/rsyslog.conf
local6.*                                               /var/log/keepalived.log 
[root@ka1 ~]#systemctl restart keepalived.service rsyslog.service 
[root@ka1 ~]#tail -f /var/log/keepalived.log

2.4 实现独立子配置文件

当生产环境复杂时, /etc/keepalived/keepalived.conf 文件中内容过多,不易管理,可以将不同集
群的配置,比如:不同集群的VIP配置放在独立的子配置文件中
利用include 指令可以实现包含子配置文件
格式:
include /path/file

范例:
[root@ka1-centos8 ~]#mkdir /etc/keepalived/conf.d/
[root@ka1-centos8 ~]#vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
        29308620@qq.com
   }
   notification_email_from 29308620@qq.com 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.magedu.org 
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
include /etc/keepalived/conf.d/*.conf   #将VRRP相关配置放在子配置文件中
[root@ka1-centos8 ~]#vim /etc/keepalived/conf.d/cluster1.conf

<think>好的,用户想要配置Nginx和Keepalived来实现高可用性负载均衡。首先,我需要回忆一下Nginx和Keepalived各自的作用。Nginx作为反向代理和负载均衡器,可以将流量分发到多个后端服务器,而Keepalived则用于实现高可用性,通过VRRP协议确保主备服务器之间的故障切换。 根据提供的引用内容,特别是引用[1]和引用[2],用户需要准备两台Nginx服务器,一主一从,都安装Keepalived。首先应该确认这两台服务器的安装步骤,比如使用yum安装Keepalived。然后,配置Nginx的负载均衡部分,引用[3]中的示例展示了如何配置upstream块,设置权重和备份服务器,这部分需要详细说明。 接下来是Keepalived配置。主备服务器需要不同的优先级,主服务器优先级更高,比如设置为100,备服务器设为90。同时,需要配置虚拟IP(VIP),这样当主服务器故障时,VIP会漂移到备服务器,保持服务可用性。此外,健康检查脚本是关键,确保Keepalived能监控Nginx的状态,如果Nginx进程停止,自动触发主备切换。这部分可能需要编写一个简单的脚本,定期检查Nginx进程是否存在,并在失败时停止Keepalived服务,让备服务器接管。 在配置过程中,需要注意防火墙设置,确保VRRP协议(通常是协议号112)的通信不被阻止,如引用[2]中提到的关闭防火墙或者开放相应端口。同时,虚拟IP需要在两台服务器上正确配置,确保网络接口正确,比如ens33或eth0。 用户可能的疑问点包括如何验证配置是否正确,如何测试故障转移,以及如何处理可能出现的配置错误。因此,在回答中需要包含验证步骤,例如使用curl命令访问VIP,或者手动停止主服务器的Nginx服务观察是否切换。此外,日志检查也是一个重要的排错手段,查看Keepalived和Nginx的日志可以帮助定位问题。 最后,应该生成相关问题,帮助用户进一步学习,比如如何优化负载均衡策略,或者如何处理更复杂的高可用架构。确保引用标记正确,比如引用[1]、[2]、[3]在适当的位置,让用户知道信息的具体来源。</think>### 分步配置Nginx+Keepalived高可用负载均衡 #### 一、基础环境准备 1. **服务器规划** - 准备2台Nginx服务器(主:Nginx_Master,备:Nginx_Backup),安装Nginx和Keepalived - 虚拟IP(VIP):172.16.90.200(需与后端Web服务器同网段) - 后端Web服务器:至少2台,提供实际服务[^2] 2. **安装依赖** 在两台Nginx服务器上执行: ```bash yum -y install nginx keepalived # CentOS安装命令[^1] ``` --- #### 二、配置Nginx负载均衡 1. **修改Nginx配置文件** 编辑`/etc/nginx/nginx.conf`,添加负载均衡策略(示例为加权轮询): ```nginx upstream web_cluster { server 172.16.90.113 weight=10; # Web1节点,权重10 server 172.16.90.114 weight=5; # Web2节点,权重5 server 172.16.90.115 backup; # 备用节点[^3] } server { listen 80; location / { proxy_pass http://web_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 重启Nginx:`systemctl restart nginx` --- #### 三、配置Keepalived高可用 1. **主节点配置**(Nginx_Master) 编辑`/etc/keepalived/keepalived.conf`: ```conf global_defs { router_id nginx_master # 唯一标识 } vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" # 健康检查脚本 interval 2 # 检测间隔2秒 weight -20 # 失败后优先级降低20 } vrrp_instance VI_1 { state MASTER # 主节点 interface ens33 # 网卡名称(需根据实际修改) virtual_router_id 51 # 虚拟路由ID(主备需一致) priority 100 # 优先级(主>备) virtual_ipaddress { 172.16.90.200/24 # 虚拟IP } track_script { chk_nginx # 关联健康检查 } } ``` 2. **备节点配置**(Nginx_Backup) 修改以下参数即可: ```conf state BACKUP # 备节点 priority 90 # 优先级低于主节点 ``` 3. **创建健康检查脚本** `/etc/keepalived/check_nginx.sh`: ```bash #!/bin/bash if ! pgrep -x "nginx" >/dev/null; then systemctl stop keepalived # Nginx异常时停止Keepalived触发切换 fi ``` 赋予执行权限:`chmod +x /etc/keepalived/check_nginx.sh` 4. **启动服务** ```bash systemctl enable --now keepalived systemctl restart keepalived ``` --- #### 四、验证配置 1. **检查VIP绑定** 在主节点执行`ip addr show ens33`,应看到VIP绑定 ```bash inet 172.16.90.200/24 scope global secondary ens33 ``` 2. **模拟故障测试** 手动关闭主节点Nginx: ```bash systemctl stop nginx ``` 观察VIP是否自动迁移至备节点(通过`ip addr`命令查看) 3. **访问测试** 通过VIP访问服务: ```bash curl http://172.16.90.200 ``` --- #### 常见问题排查 - **VRRP通信失败**:检查防火墙是否放行VRRP协议(协议号112)[^2] - **VIP不切换**:确认`virtual_router_id`主备一致,检查脚本执行权限 - **日志分析**:查看`journalctl -u keepalived` 和 `/var/log/nginx/error.log` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值