首页 > 其他分享 >keepalived 安装部署与LVS虚拟服务配置

keepalived 安装部署与LVS虚拟服务配置

时间:2024-12-30 17:42:16浏览次数:1  
标签:LVS keepalived vrrp 虚拟 MASTER notify BACKUP 节点

keepalived 安装部署
一、keepalived 安装
官网地址:http://www.keepalived.org/download.html

1、Keepalived 环境准备
各节点时间必须同步:ntp, chrony
关闭防火墙及SELinux
各节点之间可通过主机名互相通信:非必须
建议使用/etc/hosts文件实现:非必须
各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

2、下载后解压安装即可

tar xzf keepalived-2.2.8.tar.gz

cd keepalived-2.2.8

./configure --prefix=/usr/local/keepalived/

make && make install

Tips 1:安装过程中提示:*** WARNING – this build will not support IPVS with IPv6.
Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

yum install -y libnl3.x86_64

yum install -y libnl3-devel.x86_64

Tips 2:configure: error: !!! Please install libnfnetlink headers. !!!

yum install -y libnfnetlink.x86_64

yum install -y libnfnetlink-devel.x86_64

3、也可以 yum安装
yum install -y keepalived

安装完成后 主程序在 /usr/sbin/keepalived,配置文件在 /etc/keepalived/keepalived.conf

二、配置文件
vim /etc/keepalived/keepalived.conf

全局配置

global_defs {

邮件通知 notification

指定keepalived在发生切换时需要发送email到的对象,一行一个

notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}

notification_email_from Alexandre.Cassen@firewall.loc # 指定发件人
smtp_server 192.168.200.1 # 指定smtp服务器地址
smtp_connect_timeout 30 # 指定smtp连接超时时间

路由id: 当前安装的keepalived节点主机的标识符,用主机名即可,两个节点保持一致

router_id jqma

下面两个配置不写的话,权限不足,无法启动keepalived

script_user root
enable_script_security

下面几个使用默认配置即可

vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp 实例配置

vrrp_instance VI_1 { # VI_1 自定义,可以随便起,一般叫VI_数字(1,2,3等)
state MASTER # 要大写,主是MASTER 备是 BACKUP
interface eth0 # 网卡,根据实际填写
virtual_router_id 51 # 虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致(取值0-255)
priority 100 # 权重,BACKUP 要比 MASTER 小
advert_int 1 # MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔(一定时间发送一个报文给backup。如果backup没有收到就自己成为master),单位为秒,两个节点设置必须一样。

#集群两个节点之间通信,验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
#MASTER 与BACKUP 使用相同的密码才能正常通信。
authentication {
    auth_type PASS
    auth_pass 1111    # 密码随便写一个
}

#单播模式
unicast_src_ip 172.21.62.19   #本机真实ip
unicast_peer {             #单播模式
        172.21.62.18       #另一个节点真实ip
}

#虚拟ip配置一行代表一个VIP
virtual_ipaddress {
    192.168.200.16
    192.168.200.17
    192.168.200.18
}
############################ 无需配置 #######################################
# 当前节点成为master时,通知脚本执行任务,一般不需要写
# notify_master "/etc/keepalived/start_haproxy.sh start" 
# 当前节点成为backup时,通知脚本执行任务
# notify_backup "/etc/keepalived/start_haproxy.sh stop"
# 当当前节点出现故障,执行的任务;
# notify_fault  "/etc/keepalived/start_haproxy.sh stop"
####################################################################

}

健康检查部分,如果不做健康检查可以不配置,监听 ip + 端口号 看一个服务是否健康

virtual_server 192.168.167.100 3306 { # 虚拟IP 端口号
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP #使用的协议
#以上配置使用默认即可

    real_server 192.168.167.150 3306 { #本节点 真实ip 
            weight 3
            notify_down "/etc/keepalived/shutdown_keepalived.sh"   # 监听的端口down时关闭keepalived,得用network,不能用NetworkManager

            TCP_CHECK {
                    connect_timeout 10
                    connect_port 3306
            }
    }

}

关闭keepalived的脚本

vim /etc/keepalived/shutdown_keepalived.sh

!/bin/sh

pkill keepalived

启动,注意:要先启动主上的keepalived,再启动备上的,非抢占式 谁先启动,VIP就在哪个节点上

/usr/sbin/keepalived/ -f /etc/keepalived/keepalived.conf

关闭

pkill keepalived

快捷启动

service status keepalived #Redhat7以前
systemctl status keepalived #redhat7以后

三、相关组件介绍
keepalived 核心组件:

vrrp stack:VIP消息通告
checkers:监测real server
system call:标记real server权重
SMTP:邮件组件
ipvs wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
-控制组件:配置文件解析器
-IO复用器
-内存管理组件

Keepalived进程树,keepalived启动之后有三个进程

Keepalived <-- Parent process monitoring children
Keepalived <-- VRRP child
Keepalived <-- Healthchecking child

##################### keepalived 高级 ###################
单播(Unicast):是一个发送者和一个接收者之间通过网络进行的通信。
组播
组播产生背景:
传统的网络通讯有两种,一种是源主机和目标主机两台设备之间进行的一对一的通讯方式,也就是单播;另一种,
一台源主机和网络中的所有其他主机进行的通讯,即广播,在广播方式下,信息会发送到不需要该信息的主机从而浪费带宽资源,
甚至引起广播风暴;在单播方式下,会因为数据包的多次重复儿浪费带宽资源,源主机的负荷会因为多次的数据复制儿加大
在单播和广播有问题情况下,组播技术就应用而生了。

组播定义:组播又称多目标广播、多播。网络中使用的一种传输方式,它允许把所发消息传送给所有有可能目的地中的一个经过选择的子集,
即明确指出的多种地址传送信息,是一种在一个发送者和多个接受者之间进行通信的方法

一、keepalived单播模式
如果网路不允许组播(可能是交换机策略设置),又要使用keepalived,那么开启单播。
使用单播模式,即使网络环境内有相同的virtual_router_id,也没有关系

单播配置,在 vrrp_instance 里配置,(keepalived默认是抢占式,组播的 方式 )

vrrp 实例配置

vrrp_instance VI_1 { # VI_1 自定义,可以随便起,一般叫VI_数字(1,2,3等)
state MASTER # 要大写,主是MASTER 备是 BACKUP
interface eth0 # 网卡,根据实际填写
virtual_router_id 51 # 虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致(取值0-255)
priority 100 # 权重,BACKUP 要比 MASTER 小
advert_int 1 # MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒,两个节点设置必须一样。

#集群两个节点之间通信,验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
#MASTER 与BACKUP 使用相同的密码才能正常通信。
authentication {
    auth_type PASS
    auth_pass 1111    # 密码随便写一个
}

#单播模式
 unicast_src_ip 172.21.62.19   #本机真实ip
    unicast_peer {             #单播模式
            172.21.62.18       #另一个节点真实ip
    }



#虚拟ip配置一行代表一个VIP
virtual_ipaddress {
    192.168.200.16
    192.168.200.17
    192.168.200.18
}

二、keepalived 非抢占式
keepalived默认是抢占式,组播的 方式 ,当master down 时,backup 会接管vip 地址,当master启动后又会把vip抢过来。
抢占式的缺点:会因为网络抖动,vip频繁飘移, 造成不必要的切换,推荐使用非抢占式。

配置 keepalived 非抢占模式,注意点如下:
(1) 主设备、 从设备中的 state 都设置为 BACKUP
(2) 默认主设备(priority 值大的 Keepalived 节点) 配置一定要加上 nopreempt,否则非抢占不起作用
(3) 防火墙配置允许组播(主、备两台设备上都需要配置, keepalived 使用 224.0.0.18 作为 Master 和Backup 健康检查的通信 IP)
(4)如果使用 非抢占模式,就不能通过优先级 priority 来判断谁应该是MASTER或者SLAVE.

三、非抢占模式+单播模式配置

vrrp 实例配置

vrrp_instance VI_1 { # VI_1 自定义,可以随便起,一般叫VI_数字(1,2,3等)
state BACKUP # 非抢占式,主从都要写BACKUP
interface eth0 # 网卡,根据实际填写
virtual_router_id 51 # 虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致(取值0-255)
priority 100 # 权重,BACKUP 要比 MASTER 小
nopreempt #主上要写这个,否则非抢占不起作用,从上不用写(也就是在权重高的节点上写)
advert_int 1 # MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒,两个节点设置必须一样。

#集群两个节点之间通信,验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
#MASTER 与BACKUP 使用相同的密码才能正常通信。
authentication {
    auth_type PASS
    auth_pass 1111    # 密码随便写一个
}

#单播模式
 unicast_src_ip 172.21.62.19   #本机真实ip
    unicast_peer {             #单播模式
            172.21.62.18       #另一个节点真实ip
    }

#虚拟ip配置一行代表一个VIP
virtual_ipaddress {
    192.168.200.16
    192.168.200.17
    192.168.200.18
}

}

四、脚本调用

vrrp_script {
script "/etc/keepalived/nginx_check.sh" # 可以是个脚本,也可以直接写个命令,如下一行
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" # 直接写命令
interval 1  # 设置执行间隔
weight 10  # 运行成功则升级权重+10,否则-10
}

然后在 vrrp_instance 里调用上述的vrrp_script 的名字

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 {
192.168.200.16
}

# 调用上面 vrrp_script 定义的脚本
track_script {
chk_down
chk_nginx
}

# 下面四个一般不需要
#notify_master "/usr/local/bin/vrrp.mast arg1 arg2"
#notify_backup "/usr/local/bin/vrrp.back arg1 arg2"
#notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"
#notify_stop "/usr/local/bin/vrrp.stop arg1 arg2"

}

notify_master、notify_backup、notify_fault和notify_stop四个选项,这是Keepalived配置中的一个通知机制,也是Keepalived包含的四种状态。
下面介绍每个选项的含义:
notify_master :指定当Keepalived进入MASTER状态时要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本传入参数,因此灵活性很强。
notify_backup : 指定当Keepalived进入BACKUP状态时要执行的脚本,同理,这个脚本可以是一个状态报警脚本,也可以是一个脚本管理脚本。
notify_fault :指定当Keepalived进入FAULT状态时要执行的脚本,脚本功能与前两个类似。
notify_stop : 指定当Keepalived程序终止时需要执行的脚本。

五、健康检查模块

virtual_server 172.21.62.24 3306 { # 虚拟IP 端口号
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
#以上配置使用默认即可

    real_server 172.21.62.19 3306 { #本节点 真实ip 
            weight 3
            notify_down "/etc/keepalived/shutdown_keepalived.sh"   # 有数据库down时关闭keepalived

            TCP_CHECK {
                    connect_timeout 10
                    connect_port 3306
            }
    }

}

转自-https://www.cnblogs.com/sunjiwei/p/18413813
致谢!

标签:LVS,keepalived,vrrp,虚拟,MASTER,notify,BACKUP,节点
From: https://www.cnblogs.com/velloLei/p/18641822

相关文章

  • 安装虚拟机设置
    在Windows10上安装虚拟机需要进行一些特定的设置,以确保虚拟机能够正常运行。以下是详细的步骤和注意事项:1.启用虚拟化支持虚拟化是运行虚拟机的基础,需要确保你的CPU支持虚拟化,并且在BIOS/UEFI中启用它。检查CPU虚拟化支持打开任务管理器(按 Ctrl+Shift+Esc)。切换到“......
  • 虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)
    ......
  • 如何升级虚拟主机空间大小以满足业务需求?
    您好,当您的虚拟主机空间接近或超过限制时,建议您及时升级空间大小以确保网站和应用程序的正常运行。根据您的描述,您需要大约5GB的空间来支持业务扩展。以下是详细的升级步骤和推荐方案:登录管理中心:首先,请登录到您的虚拟主机管理控制台(网址)。在管理中心中,您可以查看当前使用的......
  • Keepalived备忘录
    (241230)基础内容Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不......
  • centos6虚拟机异常关闭,启动网络报错device eth0 does not seem to be present,delayin
    centos6虚拟机所在主机直接关机,导致虚拟机异常关闭,启动虚拟机网络报错deviceeth0doesnotseemtobepresent,delayingnitialization1、查看虚拟机的mac地址 2、修改eth0的mac地址修改完成后查看文件内容,more/etc/sysconfig/network-scripts/ifcfg-eth0  3、修改70-......
  • 解决在虚拟机中安装Jupyter Notebook,无法从宿主机防问的问题
    解决方案:主要原因是JupyterNotebook默认绑定到127.0.0.1了默认情况下,JupyterNotebook仅监听127.0.0.1(本地主机),只能在虚拟机内部访问。解决方法:修改JupyterNotebook的启动方式,使其监听虚拟机的网络接口。修改启动命令:jupyternotebook--allow-root--ip=0.0.0.0......
  • 折腾笔记[3]-迁移U盘的ubuntu到虚拟机
    摘要使用clonezilla工具迁移安装到U盘中的ubuntu18.04系统到vmware虚拟机.关键信息clonezillaubuntu18.04cpu:x86_64vmware:17.6.0ubuntu引导方式:UEFI+GRUB2windows11原理简介clonezilla简介[https://clonezilla.org/][https://linux.cn/article-3888-1.html]再......
  • 尝试 vmware 16.0.0 过虚拟化 过xf虚拟机检测
    前言最新想在vmware虚拟机上玩xf,网上找了不少教程,于是打算自己尝试下。如果可以修改成功的话,其价值嘛不可估量。环境vmware版本是16.0.0,已安装VMwareToolsvmware版本是16.1.2,已安装VMwareTools虚拟镜像cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816回......
  • 用户反映虚拟主机登录后台时速度很慢,如何排查和解决?
    您好,当用户反馈虚拟主机登录后台时速度很慢时,可以按照以下步骤进行排查和解决:确认网络环境:首先,让用户清除浏览器缓存并尝试重新登录。有时,浏览器缓存可能导致加载速度变慢。此外,建议用户更换不同的网络环境(如从Wi-Fi切换到有线网络)进行测试,排除本地网络问题。检查服务器......
  • 2024-12-05《关于pip总是下载到基础环境不下载到虚拟环境》
    关于pip总是下载到基础环境不下载到虚拟环境 今天使用pip安装包报错了,使用piplist查询了一下发现竟然默认安装在了基础环境里,我激活了conda的虚拟环境再运行pip依然是安装在了基础环境里,百度后发现解决方法为去除掉系统环境变量里的PYTHONHOME然后使用虚拟环境变量里的虚拟......