• KeepAlived的配置


    KeepAlived的相关配置

    KeepAlived 配置

    	参考帮助
    		man keepalived.conf
    	配置文件组件部分:
    		top hierachy(层次)
    			global configuration
    				Global definitions
    				Static routes/addresses
    			vrrpd configuration
    				VRRP synchronization group(s) :vrrp 同步组
    				VRRP instance(s) :即一个vrrp虚拟路由器
    			lvs configuration
    				Virtual server group(s)
    				Virtual server(s):ipvs 集群的vs和rs
    	配置语法:
    		配置虚拟路由器:
    			vrrp_instance <STRING> {
    				....
    			}
    		专用参数:
    			state MASTER|BACKUP :	当前节点在此虚拟路由器上的初始状态,只能有一个是MASTER ,余下的都应该为BACKUP
    			interface IFACE_NAME :	绑定为当前虚拟路由器使用的物理接口
    			virtual_router_id VRID :	当前虚拟路由器唯一标识,范围是0-255
    			priority 100 :	当前物理节点在此虚拟路由器中的优先级;范围1-254
    			advert_int 1 :	vrrp 通告的时间间隔,默认1s
    		认证机制
    			authentication { 
    				auth_type AH|PASS   ##认证类型
    				auth_pass <PASSWORD>    ##仅前8 位有效
    			}
    		虚拟IP
    			virtual_ipaddress { 
    				<IPADDR> / <MASK>  brd  <IPADDR>  dev  <STRING>  scope <SCOPE> label <LABEL>
    				192.168.200.17/24 dev eth1
    				192.168.200.18/24 dev eth2 label eth2:1
    			}
    		配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
    			track_interface { 
    				eth0
    				eth1
    				…
    			}
    		nopreempt :
    			定义工作模式为非抢占模式
    		preempt_delay 300 :
    			抢占式模式,节点上线后触发新选举操作的延迟时长,默认模式
    		定义通知脚本:
    			notify_master <STRING>|<QUOTED-STRING>: :
    				当前节点成为主节点时触发的脚本
    			notify_backup <STRING>|<QUOTED-STRING>: :
    				当前节点转为备节点时触发的脚本
    			notify_fault <STRING>|<QUOTED-STRING>: :
    				当前节点转为“失败”状态时触发的脚本
    			notify <STRING>|<QUOTED-STRING>: :
    				通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知
    

    KeepAlived单主配置示例

    	单主配置示例:
    		! Configuration File for keepalived
    		global_defs {
    			notification_email {                            #发送通知邮件的地址
    				root@localhost
    			}     ##邮件服务器配置
    			notification_email_from keepalived@localhost    #邮件来自于谁
    			smtp_server 127.0.0.1                           #邮件服务器地址
    			smtp_connect_timeout 30
    			router_id node1                                 # 主机名,在另一结点为node2,当前路由器设备id,通常为主机名,非必须
    			vrrp_mcast_group4 224.0.100.100                 # 加一个多播地址,用于主master向这个多播地址发送信息,证明自己还活着,
    		                                                                              当主master坏了的时候,多个从路由器向这个多播地址内发送信息,
    			                                                                      通过比较优先级选举出来一个master做为主来代替坏了的master工作。
    											 #如果没有指定这里使用224.0.0.18
    		}
    		vrrp_instance VI_1 {
    			state MASTER            #在另一个结点上为BACKUP,当物理设备在虚拟路由器设备中的状态
    			interface eth0            #绑定为当前虚拟路由器使用的物理接口
    			virtual_router_id 6      #多个节点唯一标识符,必须相同,范围0-255
    			priority 100                #当前物理节点在此虚拟路由器中的优先级,范围为1-254,在另一个结点上为90
    			advert_int 1               #通告间隔1s
    			authentication {         #认证机制
    				auth_type PASS       #预共享密钥认证,PASS或AH认证,AH不知道就不建议用,最长8位。
    				auth_pass 571f97b2   #仅前8位有效,可以用openssl rand -hex 4 取个随机数
    			}
    			virtual_ipaddress {
    				172.18.100.66/16 dev eth0 label eth0:0    #vip地址
    			}
    			track_interface {         #配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
    				eth0                  #定义要监控的接口,如果interface挂了,可以通过其他地址对外通信,通告是一个端口,对外服务的是另一个端口。
    			}
    		}
    		#nopreemt      #是否抢占,默认为不抢占,只允许backup抢占。
    

    KeepAlived 双主配置

    	双主模型示例:
    		! Configuration File for keepalived
    		global_defs {
    			notification_email {
    				root@localhost
    			}
    			notification_email_from keepalived@localhost
    			smtp_server 127.0.0.1
    			smtp_connect_timeout 30
    			router_id node1
    			vrrp_mcast_group4 224.0.100.100
    		}
    		vrrp_instance VI_1 {
    			state MASTER
    			interface eth0
    			virtual_router_id 6
    			priority 100
    			advert_int 1
    			authentication {
    				auth_type PASS
    				uth_pass 571f97b2
    			}
    			virtual_ipaddress {
    				172.16.0.10/16 dev eth0
    			}
    		}
    		vrrp_instance VI_2 {
    			state BACKUP
    			interface eth0
    			virtual_router_id 8
    			priority 98
    			advert_int 1
    			authentication {
    				auth_type PASS
    				auth_pass 578f07b2
    			}
    			virtual_ipaddress {
    				172.16.0.11/16 dev eth0
    			}
    		}
    

    脚本的调用方法

    		notify_master "/etc/keepalived/notify.sh master"
    		notify_backup "/etc/keepalived/notify.sh backup"
    		notify_fault "/etc/keepalived/notify.sh fault"
    

    通知脚本

    		#!/bin/bash
    		#
    		contact='root@localhost'
    		notify() {
    			mailsubject="$(hostname) to be $1, vip floating(流动)"
    			mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
    			echo "$mailbody" | mail -s "$mailsubject" $contact
    		}
    		case $1 in
    		master)
    			notify master
    			;;
    		backup)
    			notify backup
    			;;
    		fault)
    			notify fault
    			;;
    		*)
    			echo "Usage: $(basename $0) {master|backup|fault}"
    			exit 1
    			;;
    		esac
    

    KeepAlived 支持IPVS

    	虚拟服务器配置参数:
    		virtual_server IP port | virtual_server fwmark int
    		{
    			...
    			real_server {
    			...
    			}
    			...
    		}
    	常用参数
    		delay_loop <INT> :	服务轮询的时间间隔
    		lb_algo rr|wrr|lc|wlc|lblc|sh|dh :	定义调度方法
    		lb_kind NAT|DR|TUN :	集群的类型
    		persistence_timeout <INT> :	持久连接时长
    		protocol TCP :	服务协议,仅支持TCP
    		sorry_server <IPADDR> <PORT> :	所有RS故障时,备用服务器地址
    		real_server <IPADDR> <PORT>	RS地址和端口
    		{
    			weight <INT> 	RS 权重
    			notify_up <STRING>|<QUOTED-STRING> 	RS 上线通知脚本
    			notify_down <STRING>|<QUOTED-STRING> 	RS 下线通知脚本
    			HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { ... } :	定义当前主机的健康状态检测方法
    	      }
    

    KeepAlived 配置检测

    		HTTP_GET|SSL_GET 	应用层检测
    		HTTP_GET|SSL_GET {
    				url {
    					path <URL_PATH> :	定义要监控的URL
    					status_code <INT> :	判断上述检测机制为健康状态的响应码
    					digest <STRING> :	判断为健康状态的响应的内容的校验码
    				}
    				connect_timeout <INTEGER> :	连接请求的超时时长
    				nb_get_retry <INT> :	重试次数
    				delay_before_retry <INT> :	重试之前的延迟时长
    				connect_ip <IP ADDRESS> :	向当前RS哪个IP地址发起健康状态检测请求
    				connect_port <PORT> :	向当前RS的哪个PORT发起健康状态检测请求
    				bindto <IP ADDRESS> :	发出健康状态检测请求时使用的源地址
    				bind_port <PORT> :	发出健康状态检测请求时使用的源端口
    			}
    		TCP_CHECK {
    			connect_ip <IP ADDRESS> :	向当前RS的哪个IP地址发起健康状态检测请求
    			connect_port <PORT> :	向当前RS的哪个PORT发起健康状态检测请求
    			bindto <IP ADDRESS> :	发出健康状态检测请求时使用的源地址
    			bind_port <PORT> :	发出健康状态检测请求时使用的源端口
    			connect_timeout <INTEGER> :	连接请求的超时时长
    			}	
    

    keepAlived命令

    	keepalived - load-balancing and high-availability service
    	keepalived [OPTION...]
    		-f, --use-file=FILE          	使用指定的配置文件
    		-P, --vrrp                   	仅运行VRRP子系统
    		-C, --check                  	仅运行带有健康检查的子系统
    		-l, --log-console            	将信息记录到本地控制台
    		-D, --log-detail             	详细的日志信息
    		-S, --log-facility=[0-7]     	将日志功能设置为 LOG_LOCAL[0-7]
    		-X, --release-vips           	从信号转换中删除VIP
    		-V, --dont-release-vrrp      	在后台进程停止中不要删除VRRP VIPs和VROUTEs
    		-I, --dont-release-ipvs      	在后台进程停止中不要删除IPVS拓扑
    		-R, --dont-respawn           	不重生子进程
    		-n, --dont-fork              	不分叉后台进程
    		-d, --dump-conf              	转存配置数据
    		-p, --pid=FILE               	为当前进程使用指定的pid文件
    		-r, --vrrp_pid=FILE          	为VRRP子进程使用指定的pid文件
    		-c, --checkers_pid=FILE      	为检查子进程使用指定的pid文件
    		-a, --address-monitoring     	通过netlink报告所有地址的添加/删除通告
    		-x, --snmp                   	启动 SNMP 子系统
    		-A, --snmp-agent-socket=FILE 	为master代理使用指定的socket
    		-s, --namespace=NAME         	在网络名称空间NAME上运行,覆盖配置
    		-m, --core-dump              	如果异常终止,则生成核心转存
    		-M, --core-dump-pattern=PATN 	同时设置 /proc/sys/kernel/core_pattern to PATN (default 'core')
    		-i, --config_id id           	跳过任何与id不匹配的起始 '@'的配置行
    		-v, --version                	显示版本号
    
  • 相关阅读:
    git config配置,工作区和版本库联系。
    自动化监控系统(四) 客户端设计
    17、如何对字符串进行左, 右, 居中对齐 18、如何去掉字符串中不需要的字符 19、如何读写文本文件 20、如何处理二进制文件 21、如何设置文件的缓冲
    13、如何拆分含有多种分隔符的字符串 14、如何判断字符串a是否以字符串b开头或结尾 15、如何调整字符串中文本的格式 16、如何将多个小字符串拼接成一个大的字符串
    8、如何实现可迭代对象和迭代器对象 9、如何使用生成器函数实现可迭代对象 10、如何进行反向迭代以及如何实现反向迭代 11、如何对迭代器做切片操作 12、如何在一个for语句中迭代多个可迭代对象
    5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)
    1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序
    自动化监控系统(三) 搭建xadmin做网站后台
    自动化监控系统(二)连接数据库,创建app,添加model,同步数据库
    自动化监控系统(一)需求分析、架构设计
  • 原文地址:https://www.cnblogs.com/shenxm/p/8463193.html
Copyright © 2020-2023  润新知