首页 > 其他分享 >keepalived 安装部署

keepalived 安装部署

时间:2024-09-14 13:51:52浏览次数:11  
标签:脚本 部署 keepalived etc vrrp notify 安装 节点

一、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 {
     [email protected]
     [email protected]
     [email protected]
   }
   
   notification_email_from [email protected]   # 指定发件人
   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 <string name> {
	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
                }
        }
}



标签:脚本,部署,keepalived,etc,vrrp,notify,安装,节点
From: https://www.cnblogs.com/sunjiwei/p/18413813

相关文章

  • SQLynx的安装及特点
    SQLynx是原生基于Web的SQL编辑器,支持企业的桌面和Web数据库管理。它是适用于所有处理数据的跨平台数据库工具。它支持所有流行的数据库,如MySQLMariaDB、PostgreSQL、sQLite、Hive、Impala、Hadoop等。1.官网下载:www.sqlynx.com如果已经有用户信息,直接登录,如里没有,需要先......
  • 微同城小程序源码系统帮你轻松本地生活服务平台 带完整的安装代码包以及搭建部署教程
    系统概述微同城小程序源码系统是一款专为打造本地化生活服务生态而设计的软件框架。它不仅拥有高度模块化的设计,还集成了丰富的功能组件,覆盖餐饮外卖、生鲜配送、家政服务、二手交易、房屋租赁等多个生活领域。通过这套源码系统,用户可以轻松实现平台的快速搭建与个性化定制,满......
  • 基于php+mysql开发制作的全景在线制作网站源码系统 附带完整的安装代码包以及搭建部署
    系统概述本系统是一款集全景图片上传、编辑、展示于一体的综合性解决方案。采用PHP作为后端开发语言,结合MySQL数据库的强大功能,实现了高效稳定的数据处理与存储。前端则运用了HTML5、CSS3及JavaScript等现代Web技术,确保跨浏览器兼容性和良好的用户体验。通过简洁明了的操作界......
  • 原创开发的响应式网站建站系统源码 附带完整的安装代码包以及搭建部署教程
    系统概述原创开发的响应式网站建站系统源码是一款集灵活性、易用性与强大功能于一体的建站解决方案。它采用前沿的Web开发技术,如HTML5、CSS3、JavaScript等,确保网站能够在各种设备上流畅运行,包括桌面电脑、平板电脑以及智能手机,实现真正的响应式设计。该系统经过精心设计与优......
  • 多用户AI雷达名片平台版小程序源码系统 附带完整的安装代码包以及搭建部署教程
    系统概述多用户AI雷达名片平台版小程序源码系统是一款基于微信小程序生态开发的创新产品,它巧妙地将人工智能技术与传统商务名片相结合,打造了一个集名片交换、智能识别、数据分析、社交互动等功能于一体的综合性平台。该系统支持多用户同时在线,每个用户都能拥有自己独特的AI雷......
  • 一元盲盒脱单小程序源码系统 带分销功能 附带完整的源代码包以及搭建部署教程
    系统概述本系统是一款集盲盒交友与分销功能于一体的小程序源码系统,旨在通过趣味性的盲盒玩法,让用户在享受拆盒惊喜的同时,也能遇见心仪的另一半。系统采用先进的后端技术架构,确保数据的稳定与安全,同时提供简洁易用的前端界面,让用户体验流畅自然。此外,系统附带完整的源代码包,方......
  • 自助式响应式建站系统源码 海量网站模版随心选择 带完整的安装代码包以及搭建部署教程
    系统概述自助式响应式建站系统,顾名思义,是一种允许用户无需深入了解编程技术,即可通过简单的拖拽、选择等操作,快速创建并管理网站的在线工具。它结合了响应式设计理念,确保网站能够在不同设备(如电脑、平板、手机)上自动调整布局,提供最佳浏览体验。此类系统通常提供丰富的网站模版......
  • 使用脚本部署openstack平台
    一、案例分析1.部署架构一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。计算节点主要安装nova-comput......
  • 蓝易云服务器 - ubuntu安装rediscli教程
    在Ubuntu上安装RedisCLI的教程如下:打开终端:按下 Ctrl+Alt+T组合键可打开终端。更新软件包列表:运行以下命令更新软件包列表。sudoaptupdate安装Redis:使用以下命令安装Redis服务器。sudoaptinstallredis-server验证Redis安装:安装完成后,Redis将自动作为系统服务运行。可以......
  • windows 安装 openssl
    1.官网下载openssl安装包https://slproweb.com/products/Win32OpenSSL.html下载对应的light版本就行 2.安装安装默认配置安装,最后捐赠可以选择不勾选,有条件的建议捐赠。 3.配置环境变量在高级系统配置里找到环境变量配置,新增一条用户环境变量就可以。选择Path......