博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Keepalive配置文件说明和实现高可用
阅读量:6078 次
发布时间:2019-06-20

本文共 5325 字,大约阅读时间需要 17 分钟。

Keepalive概述:

Keepalived是一个免费开源的,用C编写的,具备第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。

Keepalive配置文件说明和实现高可用
上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。 内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部分。
用户空间:

  • WatchDog:负载监控checkers和VRRP进程的状况
  • VRRP Stack:负载负载均衡器之间的失败切换FailOver,如果只用一个负载均稀器,则VRRP不是必须的。
  • Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有
  • VRRP Stack,但健康检查healthchecking是一定要有的。
  • IPVS wrapper:用户发送设定的规则到内核ipvs代码
  • Netlink Reflector:用来设定vrrp的vip地址等。

Keepalived的所有功能是配置keepalived.conf文件来实现的。

安装

[root@localhost ~]# yum install keepalived ipvsadm

[root@localhost ~]# rpm -ql keepalived
/etc/keepalived/keepalived.conf 主配置文件
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service 启动脚本

配置文件说明

[root@localhost ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {router_id maiya       #路由id,不能重复}vrrp_instance lvs_inst {           #定义vrrp实例名              state BACKUP             #定义vrrp角色,分为MASTER/BACKUP两种              interface ens33            #指定网络接口名              virtual_router_id 51         #同一组的vrrp成员,该id需要一致              priority 150                       #优先级,范围(0-255)              nopreempt                        #不抢占(只针对BACKUP生效)              advert_int 1                       #发送hello的时间间隔              authentication {                 #通过密码身份验证              auth_type PASS              auth_pass 1111         }             virtual_ipaddress {   #定义虚拟IP(VIP)                     10.18.42.123          }}virtual_server 10.18.42.123 80 {          #定义VIP相关配置              delay_loop 6              lb_algo rr                   #使用rr调度算法(rr|wrr|lc |wlc|lblc|sh|dh)              lb_kind DR                #使用DR模式 (DR/NAT/TUN)              persistence_timeout 50       #定义persistence保持时间              protocol TCP                          #tcp协议real_server 10.18.42.42 80 {         #定义real_server              weight 1               #weight权重为1              TCP_CHECK {                   #定义checker的方法(TCP/HTTP/SSL/MISC)                         connect_port 80               #定义tcp的port                         connect_timeout 3            #定义本次连接的超时时长为3s                         nb_get_retry 3              #定义尝试3次,如果3次都失败则宣告本real_server失效                         delay_before_retry 3        #定义重连接间隔时间为3s              }}real_server 10.18.42.6 80 {              weight 1              TCP_CHECK {                         connect_port 80                         connect_timeout 3                         nb_get_retry 3                          delay_before_retry 3                    }           }}

关于配置文件中的其它项:

HTTP_GET | SSL_GET{url{                #根据url check,可以指定多个path /            #定义要检查的URI地址digest 
#检查后的摘要信息#(可以使用genhash -s 目标服务器ip -p 端口号 status_code 200 -u uri地址得到摘要信息)status_code 200 #检查的返回状态码}}notify_master /path/xx.sh #指定当切换到master 时执行的脚本notify_backup /path/xx.sh #指定当切换到backup 时执行的脚本notify_fault "path/xx.sh VG_1" #故障时执行的脚本notify /path/xx.shvirtualhost
#检查的web服务器的虚拟主机sorry_server
#备用机的IP,所有的realserver失效后启用notify_up
#检测到服务器up后执行的脚本notify_down
#检测到服务器down后执行的脚本

实现MySQL的故障转移

1)、实现master与slave1两台主机的复制(AA复制)

2)、利用keepalived 的健康检查功能,检测本机的3306端口是否存活,如果端口失效,则自动执行自定义脚本
3)、自定义脚本的内容为:kill 本机的keepalived进程,并删除本机VIP;当本机keepalived进程被kill掉之后,另一台主机的keepalived进程即可获得虚拟IP,实现的故障转移
4)、测试:客户端连接keepalived提供的虚拟IP(mysql需要事先授权grant连接)

[root@localhost ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {           router_id teacher}vrrp_instance lvs_inst {          state MASTER          interface ens33          virtual_router_id 51          priority 250          nopreempt          advert_int 1          authentication {                  auth_type PASS                  auth_pass 1111}           virtual_ipaddress {                       10.18.42.123           }}virtual_server 10.18.42.123 3306 {             delay_loop 6             lb_algo rr             lb_kind DR             #persistence_timeout 50             protocol TCPreal_server 10.18.42.251 3306 {         weight 1         notify_down /etc/keepalived/kill.sh         TCP_CHECK {                   connect_port 3306                   connect_timeout 3                   nb_get_retry 3                   delay_before_retry 3                   }         }}[root@localhost ~]# cat /etc/keepalived/kill.sh#!/bin/bashpkill keepalived#systemctl stop keepalived #尽量使用此方式关闭keepalivedip addr del dev ens33 10.18.42.123/32

haproxy的故障转移

[root@localhost ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {     router_id teacher}vrrp_script chk_haproxy {     script "lsof -i:80 | grep haproxy || exit 1"     interval 2     fail 1}vrrp_instance lvs_inst {   state MASTER   interface ens33       virtual_router_id 51       priority 250       nopreempt       advert_int 1authentication {             auth_type PASS             auth_pass 1111}track_script {           chk_haproxy}virtual_ipaddress {           10.18.42.124          }}

转载于:https://blog.51cto.com/13581826/2109449

你可能感兴趣的文章
我的友情链接
查看>>
shell符号
查看>>
时钟和时区
查看>>
apache/httpd 安装
查看>>
oracle 可传输的表空间:rman
查看>>
模拟两地公司通过***专用网路远程搭建AD DC额外域的实验
查看>>
JAVA运行时数据区域
查看>>
淘宝和百度解禁:淘宝客前途堪忧
查看>>
windows server 2008 R2 之DNS
查看>>
Linux文件系统与目录配置
查看>>
zabbix安装配置
查看>>
9个永恒的UI设计原则
查看>>
[20180403]访问dba_autotask_task无输出问题.txt
查看>>
2015.3.12 C#运用正则表达式点滴
查看>>
zencart后台订单详细页显示产品图片和链接
查看>>
Android 项目隐藏标题栏
查看>>
OpenCV(1)读写图像
查看>>
BZOJ2648/2716:SJY摆棋子/[Violet]天使玩偶(K-D Tree)
查看>>
1.1js语言核心
查看>>
LightOJ - 1010 Knights in Chessboard
查看>>