git做网站根目录,建设私人网站,百度移动端点赞排名软件,企业app软件定制开发系统目录 背景方案简介KeepalivedHeartbeat Keepalived技术介绍Keepalived通信方式时间同步 Keepalived配置案例Keepalived日志配置Keepalived服务配置全局配置段VRRP配置段Keepalived服务启动 服务异常检测 背景
在实际应用中#xff0c;为了提高服务器的高可用性#xff0c;往… 目录 背景方案简介KeepalivedHeartbeat Keepalived技术介绍Keepalived通信方式时间同步 Keepalived配置案例Keepalived日志配置Keepalived服务配置全局配置段VRRP配置段Keepalived服务启动 服务异常检测 背景
在实际应用中为了提高服务器的高可用性往往会部署多套服务器避免一台服务器故障后引起服务瘫痪。针对无需数据冗余的服务可以用第三方的成熟方案实现高可用性。 第三方方案可与当前业务逻辑完全分离互不影响实现更加灵活。目前主要存在两种成熟的高可用性方案Keepalived与Heartbeat。
方案简介
Keepalived
Keepalived可用于服务器状态检测如果有一台服务器宕机或工作出现故障Keepalived将检测到并将有故障的服务器从集群系统中剔除同时使用其他服务器代替该服务器的工作当服务器工作正常后Keepalived自动将服务器加入到服务器群中这些工作全部自动完成不需要人工干涉需要人工做的只是修复故障的服务器。
优势使用更简单从安装、配置、使用、维护等角度上对比Keepalived都比Heartbeat简单并且满足集群倒切需求劣势没有管理功能编码难度较小满足功能需求
Heartbeat
Heartbeat 项目是 Linux-HA 工程的一个组成部分它实现了一个高可用集群系统。HeartbeatLinux-HA的工作原理Heartbeat最核心的包括两个部分心跳监测部分和资源接管部分心跳监测可以通过网络链路和串口进行而且支持冗余链路它们之间相互发送报文来告诉对方自己当前的状态如果在指定的时间内未收到对方发送的报文那么就认为对方失效这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
优势功能更强大配套工具更全适合做大型集群管理而Keepalived主要用于集群倒换基本没有管理功能劣势:功能复杂使用难度较大编码难度大主要用于大型集群管理。
综上所述针对只有两架服务器作为温备组成的冗余系统Keepalived方式即可满足需求实现设备倒切。
以下主要介绍Keepalived的实现方式
Keepalived技术介绍
Keepalived通信方式
Keepalived支持单播和组播两种方式由于方案中目前只存在两台设备作为温备单播即可满足要求同时也可避免其他系统Keepalived组播消息干扰。 Keepalived通信消息中携带鉴权类型为PASS方式密码为一组任意的字符串保证Keepalived安全通信。
时间同步
Keepalived通信裁决主备时要求两台服务器的时间差不能太大否则无法正确进行主备裁决因此该方案采用NTP方式进行设备时间同步。 服务器操作系统安装时已默认安装NTP服务该文档只讲述NTP服务的配置。NTP配置文件路径/etc/ntp.conf。在配置文件中分别添加如下两行 server xx.xx.xx.xx server 127.127.1.0 xx.xx.xx.xx为NTP服务器IP表示该设备向NTP服务器同步时间。 第二行表示当上级NTP时钟失效时使用本地时钟继续提供服务方便其他设备进行时间同步。
当两台设备时间相差过大时NTP服务无法进行时间同步。所以需要结合ntpdate服务进行时间同步。ntpdate可强制进行时间同步。可在开机启动脚本/etc/rc.d/rc.local中添加如下三行 service ntpd stop ntpdate xx.xx.xx.xx service ntpd start 由于NTP、ntpdate两个服务冲突必须停止NTP服务后ntpdate才能提供服务。 xx.xx.xx.xx为NTP服务器IP表示设备向NTP服务器强制同步时间。 最后再重新启动NTP服务
NTP结合ntpdate时间同步后会出现硬件时间与系统时间不一致的情况可在文件/etc/sysconfig/ntpd添加如下配置向使硬件时间与系统时间保持一致。 SYNC_HWCLOCKyes NTP时间同步时硬件时间也进行相应的时间同步。
Keepalived配置案例
Keepalived日志配置
Keepalived安装成功后配置其日志输出路径为/var/log/keepalived.log。
在/etc/sysconfig/keepalived配置文件中将KEEPALIVED_OPTIONS设置修改为 KEEPALIVED_OPTIONS”-D -d -S 0” 同时在/etc/rsyslog.conf配置文件中添加一行 local0.* /var/log/keepalived.log Keepalived服务配置
Keepalived服务配置共分为三个部分全局配置段、VRRP配置段、LVS配置段。其中全局配置段用于定义全局设置VRRRP配置段用于配置实例LVS配置段用于定义虚拟服务器的设置。该方案中无需LVS配置段。
全局配置段
全局配置段中只需修改router_id即可其中温备的两台设备该值必须区分开作为设备唯一标志。 示例 global_defs { notification_email { acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc } notification_email_from Alexandre.Cassenfirewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL1 } VRRP配置段
VRRP配置段内包含服务监控脚本及vrrp同步组配置、相应的实例配置。 vrrp_script为监控脚本定时执行周期为2秒用于监控四个浮动IP的状态。 vrrp_sync_group为同步组配置组内共有两个实例任何一个监控实例出现异常后即进行主备切换。角色切换后执行notify脚本服务器根据角色执行相应的操作。 vrrp_script monitor_service { script monitor_service.sh 20.31.250.13 20.31.250.14 192.168.10.13 192.168.10.14 interval 2 } vrrp_sync_group VG_1 { group { VI_1 VI_2 } notify_master “/etc/keepalived/notify.sh master” notify_backup “/etc/keepalived/notify.sh backup” notify_fault “/etc/keepalived/notify.sh fault” } 需要监测两个网卡时可写两个实例实例名对应于同步组group内的节点名对于只需监测一个网卡的情况可只写一个实例。该方案以两个实例为例进行介绍两个实例只有网卡名、IP、virtual_router_id其他项都基本一致。
实例1 vrrp_instance VI_1 { state BACKUP nopreempt interface bond0 track_interface { bond0 } virtual_router_id 133 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 337639943 } unicast_src_ip 20.31.250.10 unicast_peer { 20.31.250.11 } virtual_ipaddress { 20.31.250.13 20.31.250.14 } track_script { monitor_service } 实例2 vrrp_instance VI_2 { state BACKUP nopreempt interface eth2 track_interface { eth2 } virtual_router_id 233 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 337639943 } unicast_src_ip 192.168.10.10 unicast_peer { 192.168.10.11 } virtual_ipaddress { 192.168.10.13 192.168.10.14 } track_script { monitor_service } 实例参数介绍
参数名称解释state可配置为MASTER、BACKUP该方案中温备两台设备都配置为BACKUPinterface浮动IP绑定的物理网口track_interface监控的物理网口virtual_router_id唯一标识id用于区分vrrp实例温备两台设备VI_1都配置为133VI_2都配置为233priority优先级默认配置为100advert_int发送vrrp通告的时间间隔默认为1秒authenticationvrrp实例协商的方式及密码方式默认为PASS密码为本地核心网十进制IP地址unicast_src_ip本端interface网口上的固定IPunicast_peer对端interface网口上的固定IPvirtual_ipaddressInterface网口上的浮动IPtrack_script监控脚本默认为vrrp_scrip定义的脚本
Keepalived服务启动
Keepalived安装完成后可通过命令 service keepalived start 启动。 同时在开机启动配置文件/etc/rc.d/rc.local中添加如下一行使Keep alived可开机自启动。 service keepalived start 服务异常检测
Keepalived服务只能监测硬件、网络的状态无法服务进行检测。所以一般需要增加服务异常检测。 在/etc/crontab定时任务文件中增加一行每十分钟执行一次定时任务。 */10 * * * * root my_keepalived_crontime.sh 当十分钟内服务重启超过5次则认为设备或服务出现问题进行主备切换。