Keepalived离线安装

Keeplived是在Linux服务器中实现负载均衡和故障转移的软件,支持在多个服务器之间共享虚拟IP地址,并通过VRRP协议检测主服务器的可用性,实现高可用性和负载均衡。
参考安装连接:
https://blog.csdn.net/u011181989/article/details/120147404

下面是在Linux离线安装Keeplived的大致步骤:

  1. 在一台联网的Linux服务器上,从Keeplived官网下载Keeplived的RPM包,例如:
wget https://www.keepalived.org/software/keepalived-2.1.5.tar.gz
  1. 把下载下来的压缩包传输到离线的Linux服务器上,例如使用scp命令:
scp keepalived-2.1.5.tar.gz username@remote_ip:/path/to/local/folder
  1. 解压压缩包,进入目录执行以下命令进行编译和安装 Keeplived:
tar zxvf keepalived-2.1.5.tar.gz
cd keepalived-2.1.5
./configure
make
make install
  1. 上述命令会将Keeplived安装在系统默认路径/usr/local/sbin/keepalived下。执行以下命令启动Keeplived:
/usr/local/sbin/keepalived -D #其中,参数`-D`用来指定以守护进程模式启动Keeplived。

还可以将该文件拷贝到/etc/init.d/keepalived 可是使用systemctl start keepalived 方式启动

  1. 启动完成后,可以通过执行以下命令查看Keeplived的运行状态:
ps -ef | grep keepalived

keepalived配置文件参考

! Configuration File for keepalived
 
global_defs {
   
   # 全局唯一的主机标识
   router_id server_a
   
}
 
vrrp_instance VI_1 {
 
    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state MASTER
    # 绑定的网卡(一定绑定正确的网卡,不然keepalived无法使用)
    interface ens33 
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 51
    # 权重
    priority 100
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.6.152
    }
}

以上步骤描述的是Keeplived的简单离线安装流程,具体根据实际情况调整。需要注意的是,在安装时需要安装相关的依赖包,如libnl、libnl-devel、gcc、openssl-devel等,以确保程序顺利编译运行。

下面是我自己测试环境中使用的配置文件
参考配置文件内容(master):

! Configuration File for keepalived
 
global_defs {
   
   # 全局唯一的主机标识
   router_id server_a
   
}

#监听haproxy(只要当前服务器中该服务没有运行,就会放弃虚拟ip控制权)
vrrp_script haproxy_check {
    script "/usr/bin/systemctl is-active haproxy.service" #注意这里只能监测 systemctl status haproxy的服务
    interval 2
}
#监听nginx(只要当前服务器中该服务没有运行,就会放弃虚拟ip控制权)
vrrp_script nginx_check {
    script "/usr/bin/systemctl is-active nginx.service" #注意这里只能监测 systemctl status nginx的服务
    interval 2
}
 
vrrp_instance VI_1 {
 
    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state MASTER
    # 绑定的网卡
    interface ens33
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 51
    # 权重
    priority 100
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.6.152
    }
    #调用脚本
    track_script {
        haproxy_check
        nginx_check
    }


    #keepalived代理tcp端口
    virtual_server 192.168.6.152 3307 {
        delay_loop 6 #定义每次检查之间的延迟时间(秒)。
        lb_algo rr #定义负载均衡算法。支持的算法有roundrobin、leastconn、source和uri。
        lb_kind DR #定义负载均衡器类型。支持的类型有NAT、DR和TUN。
        persistence_timeout 0 #定义持久性会话的超时时间(秒)。
        protocol TCP #定义虚拟服务器使用的协议类型。支持的协议有TCP和UDP。
        real_server 192.168.6.140 3307 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 3307 #定义要使用的端口号。
            }
        }
        real_server 192.168.6.141 3307 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 3307 #定义要使用的端口号。
            }
        }
        
    }
	
    #keepalived代理HTTP端口
    virtual_server 192.168.6.152 8085 {
        delay_loop 6 #定义每次检查之间的延迟时间(秒)。
        lb_algo rr #定义负载均衡算法。支持的算法有roundrobin、leastconn、source和uri。
        lb_kind DR #定义负载均衡器类型。支持的类型有NAT、DR和TUN。
        persistence_timeout 0 #定义持久性会话的超时时间(秒)。
        protocol http #定义虚拟服务器使用的协议类型。支持的协议有TCP和UDP。
        real_server 192.168.6.140 8085 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 8085 #定义要使用的端口号。
            }
        }
        real_server 192.168.6.141 8085 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 8085 #定义要使用的端口号。
            }
        }
        
    }



}

参考配置(backup):

! Configuration File for keepalived
 
global_defs {
   
   router_id server_b
   
}

#监听haproxy
vrrp_script haproxy_check {
    script "/usr/bin/systemctl is-active haproxy.service" #注意这里只能监测 systemctl status haproxy的服务
    interval 2
}
#监听nginx
vrrp_script nginx_check {
    script "/usr/bin/systemctl is-active nginx.service" #注意这里只能监测 systemctl status nginx的服务
    interval 2
}

vrrp_instance VI_1 {
    
    # 设置为备机
    state BACKUP
    interface ens33
    virtual_router_id 51
    # 权重设置的要比主机低
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP需要主备设置成一样
    virtual_ipaddress {
        192.168.6.152
    }
    #调用脚本
    track_script {
        haproxy_check
        nginx_check
    }

    
	#keepalived代理TCP端口(我这里要转发haproxy下3307端口所代理的3306数据库,平台如果直接使用152.168.6.152:3307会无法访问到,所以需要映射一波)
    virtual_server 192.168.6.152 3307 {
        delay_loop 6 #定义每次检查之间的延迟时间(秒)。
        lb_algo rr #定义负载均衡算法。支持的算法有roundrobin、leastconn、source和uri。
        lb_kind DR #定义负载均衡器类型。支持的类型有NAT、DR和TUN。
        persistence_timeout 0 #定义持久性会话的超时时间(秒)。
        protocol TCP #定义虚拟服务器使用的协议类型。支持的协议有TCP和UDP。
        real_server 192.168.6.140 3307 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 3307 #定义要使用的端口号。
            }
        }
        real_server 192.168.6.141 3307 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1 #权重
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 3307 #定义要使用的端口号。
            }
        }
    }

    #keepalived代理HTTP端口(我这里要转发haproxy下8085端口所代理的9001minio文件存储服务,平台如果直接使用152.168.6.152:8085会无法访问到,所以需要映射一波)
    virtual_server 192.168.6.152 8085 {
        delay_loop 6 #定义每次检查之间的延迟时间(秒)。
        lb_algo rr #定义负载均衡算法。支持的算法有roundrobin、leastconn、source和uri。
        lb_kind DR #定义负载均衡器类型。支持的类型有NAT、DR和TUN。
        persistence_timeout 0 #定义持久性会话的超时时间(秒)。
        protocol HTTP #定义虚拟服务器使用的协议类型。支持的协议有TCP和UDP。
        real_server 192.168.6.140 8085 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 8085 #定义要使用的端口号。
            }
        }
        real_server 192.168.6.141 8085 { #定义实际服务器的IP地址和端口,以及它们的权重和检查配置。
            weight 1 #权重
            TCP_CHECK {
                connect_timeout 3 #定义连接超时时间(秒)。
                nb_get_retry 3 #定义在标记服务器为不可用之前尝试重新连接的次数。
                delay_before_retry 3 #定义在尝试重新连接失败的服务器之前等待的时间(秒)。
                connect_port 8085 #定义要使用的端口号。
            }
        }
        
    }


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值