前言
Keepalived 是一个用于实现高可用性的开源软件,通常用于在多个服务器之间提供故障转移和负载均衡。结合 Keepalived 和 Kibana 可以实现 Kibana 的高可用性,确保即使在某一节点故障的情况下,用户仍然能够访问和使用 Kibana。以下来介绍这一方案的实现
一、 Keepalived 安装部署
Keepalived 通过虚拟ip绑定物理机网络接口的方式实现目标服务的高可用代理,被代理的服务上都需要安装 Keepalived
环境信息:
实际ip | 192.168.122.118、192.168.122.119 |
虚拟ip | 192.168.122.135 |
1.1 准备工作
yum install -y gcc gcc-c++ wget popt-devel openssl openssl-devel yum install -y libnl libnl-devel libnl3 libnl3-devel yum install -y libnfnetlink-devel
1.2 下载安装包并解压
官网下载地址: Keepalived for Linux
tar -zxvf keepalived-2.2.8.tar.gz
1.3 编译
进入解压好的keepalived目录
./configure --prefix=/software/keepalived make && make install
1.4 创建服务文件夹
mkdir /etc/keepalived
1.5 创建服务文件
cd /etc/keepalived vim keepalived.conf # 输入以下内容 #master global_defs { notification_email { } router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script check_kibana { script "/opt/module/chk_kibana.sh" #这个是检测脚本,当挂了之后做的事情 interval 22 weight 2 } vrrp_instance VI_1 { state BACKUP #两台配置此处均是BACKUP,设为BACKUP将根据优先级决定主或从 interface ens160 #绑定的网卡, 用 ip addr 命令查看本机网卡名字 virtual_router_id 66 #虚拟路由标识,这个标识是一个数字(取值0-255之间)确保和slave相同,同网内不同集群此项必须不同,否则发生冲突。 priority 100 #用来选举master的,(取值0-255之间),此处master上设置为100,其他备用节点必须比这个值小 advert_int 1 #多久进行一次master选举(单位:s,可以认为是健康查检时间间隔) nopreempt #不抢占,即允许一个priority比较低的节点作为master authentication { auth_type PASS #认证区域 auth_pass 1111 # 节点通讯密码 ,不同节点的通讯方式和密码必须一样 } track_script { check_kibana #指定核对的脚本,check_kibana是上述自定义的,这端配置必须写在“vrrp_script check_kibana ”这段配置的后面 } virtual_ipaddress { 192.168.122.135/24 #虚拟ip,如果master宕机,虚拟ip会自动漂移到slave上,虚拟ip必须和实际的ip在同一个网段 } } virtual_server 192.168.122.135 5601 { delay_loop 3 #健康检查时间间隔,单位秒 lb_algo rr #负载调度算法,支持的算法:rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #LVS的类型:有NAT|DR|TUN persistence_timeout 50 #会话保持时间,单位秒(可以适当延长时间以保持session) protocol TCP #转发协议类型,有TCP和UDP两种 real_server 192.168.122.118 5601 { #定义RS 服务 weight 1 #权重 } }
1.6 创建检测脚本
vim /opt/module/chk_kibana.sh # 输入以下内容 #!/bin/bash port_num=$(ss -nltp|grep -wc 5601) if [ $port_num -eq 0 ];then pkill keepalived fi
# 权限处理 chmod +x chk_kibana.sh sed -i 's/\r$//' chk_kibana.sh
二、启动keepalived
systemctl start keepalived.service
三、检测是否安装成功
3.1 查看服务状态
systemctl status keepalived.service
3.2 查看网络接口绑定情况
ip addr
使用上述命令,会看到有且只有一个机器的网卡绑定了虚拟ip
四、注意事项
4.1 Kibana 不能绑定具体的ip
server.host: "0.0.0.0"
4.2 防火墙开放5601、112端口