Keepalived介绍及安装部署(一)

2017年11月7日09:08:27 发表评论 805 views

第1章 Keepalived高可用软件

1.1 Keepalived介绍

Keepalived软件是用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)功能,它可以保证当个别节点宕机时整个网络可以不间断地运行,所以,Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以作为其他服务(如:Nginx、Haproxy、MysQL等)高可用解决方案。

提示:Keepalived软件的官方站点:http://www.keepalived.org/

1.2 Keeplived服务的重要功能

1.2.1 管理LVS负载均衡软件

Keepalived可以通过读取自身的配置文件(keepalived.conf)实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能。

1.2.2 实现对LVS集群节点健康检查功能

当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复后,Keepalived服务又会自动地把它们加入到正常转发的队列中对客户提供服务。

1.2.3 作为系统网络服务的高可用功能

Keepalived可以实现任意两台主机之间的故障转移和自动切换。实现的简单原理为:两台已经安装Keepalived的主机分别为Master和Backup角色,当Master失效或出现故障时,Backup将自动接管Master的所有工作,包括VIP资源及相应资源服务,而当Master故障修复后又自动接管回它原来处理的工作,Backup同时释放Master主机失效时它接管的工作。

第2章 Keepalived服务搭建

2.1 环境准备

2.1.1 主机架构规划

主机名 IP地址 说明
lb01 10.0.0.5 Keepalived主服务器
lb02 10.0.0.6 Keepalived备服务器
web01 10.0.0.8 web01服务器
web02 10.0.0.7 web02服务器
web03 10.0.0.9 web03服务器

2.1.2 系统环境

  • Keepalived服务器:

[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64

  • nginx服务器:

[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
[[email protected] ~]# nginx -V
nginx version: nginx/1.10.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.10.3 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

2.2 软件安装

2.2.1 yum安装keepalived

[[email protected] ~]# yum install -y keepalived
...省略部分输出...
Installed:
  keepalived.x86_64 0:1.2.13-5.el6_6                                                        

Dependency Installed:
  lm_sensors-libs.x86_64 0:3.1.1-17.el6           net-snmp-libs.x86_64 1:5.5-60.el6         

Complete!

2.2.2 启动并检查keepalived服务

[[email protected] ~]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]
[[email protected] ~]# ps -ef | grep keepalived
root      31482      1  0 09:13          00:00:00 /usr/sbin/keepalived -D
root      31483  31482  0 09:13          00:00:00 /usr/sbin/keepalived -D
root      31484  31482  0 09:13          00:00:00 /usr/sbin/keepalived -D
root      31490  31428  0 09:13 pts/0    00:00:00 grep keepalived

#关闭服务
[[email protected] ~]# service keepalived stop
Stopping keepalived:                                       [  OK  ]

2.3 配置文件说明

此处只说明keepalived配置文件高可用部分。

2.3.1 配置文件位置

[[email protected] ~]# ls -l /etc/keepalived/keepalived.conf
-rw-r--r-- 1 root root 3562 Mar 19  2015 /etc/keepalived/keepalived.conf

2.3.2 全局定义部分

这部分主要用来设置Keepalived的故障通知机制和Router ID标识。

[[email protected] ~]# head -13 /etc/keepalived/keepalived.conf | cat -n
     1  ! Configuration File for keepalived
     2 
     3  global_defs {
     4     notification_email {
     5       [email protected]
     6       [email protected]
     7       [email protected]
     8     }
     9     notification_email_from [email protected]
    10     smtp_server 192.168.200.1
    11     smtp_connect_timeout 30
    12     router_id LVS_DEVEL
    13  }

Keepalived介绍及安装部署(一)

  • 参数说明:
  1. 第1行:!和#开头一样都是注释
  2. 第3~8行:定义服务故障报警的Email地址,作用是当服务发生切换或RS节点等有故障时发报警邮件。notification_email指定在keepalived发生事件时需要发送的Email地址,可以有多个,每行一个
  3. 第9行:指定发送邮件的发送人,即发件人地址
  4. 第10行:smtp_server指定发送邮件的smtp服务器,如果本机开启了sendmail或posifix就可以使用上面默认配置实现邮件发送
  5. 第11行:smtp_connect_timeout是连接smtp的超时时间
  6. 第12行:Keepalived服务器的路由标识(router_id)。在一个局域网内这个标识应该是唯一的。
提示:实际工作中,4~11行可不配置,而将监控任务交个Nagios或Zabbix。

2.3.3 VRRP实例定义区块

这部分主要用来定义具体服务的实例配置,包括Keepalived主备状态、接口、优先级、认证方式和IP信息等。

[[email protected] ~]# awk 'NR==15,NR==30{print NR,$0}' /etc/keepalived/keepalived.conf
15 vrrp_instance VI_1 {
16     state MASTER
17     interface eth0
18     virtual_router_id 51
19     priority 100
20     advert_int 1
21     authentication {
22         auth_type PASS
23         auth_pass 1111
24     }
25     virtual_ipaddress {
26         192.168.200.16
27         192.168.200.17
28         192.168.200.18
29     }
30 }

Keepalived介绍及安装部署(一)

  • 参数说明:
注意:存在于主节点的实例在备节点中也要存在,这样才能实现故障切换接管。
  1. 第15行:定义了一个VI_1的实例(vrrp_instance)。每个实例可以认为是Keepalived服务的一个实例或作为一个业务服务,在Keepalived服务配置中这样的实例可以是多个。
  2. 第16行:state MASTER表示当前VI_1的角色状态。当前角色为Master,这个状态只有MASTER和BACKUP两种状态,并且需要大写字符
  3. 第17行:interface eth0为对外提供服务的网络接口
  4. 第18行:virtual_router_id 51为虚拟路由ID标识。最好是一个数字且在一个conf配置中是唯一的,但是MASTER和BACKUP配置中相同实例的virtual_router_id又必须是一致的,否则将出现脑裂问题
  5. 第19行:priority 100为优先级,数字越大表示实例优先级越高。在同一个vrrp_instance实例里MASTER的优先级配置要高于BACKUP,一般建议间隔50为佳,例如:MASTER 150,BACKUP 100
  6. 第20行:advert_int 1位同步通知间隔,单位为秒
  7. 第21~24行:authentication为权限认证配置,包括:认证类型(auth_type)和认证密码(auth_
    pass)。认证类型有PASS(Simple Passwd(suggested))、AH(IPSEC(not recommended))两种。官方建议使用PASS类型,验证密码为明文方式,最好长度不要超过8个字符,建议用4位数字,同一vrrp实例的MASTER和BACKUP使用相同的密码才能正常通信
  8. 第25~29行:virtual_ipaddress为虚拟IP地址,可以配置多个IP地址,每个地址占一行。配置时最好明确指定子网掩码以及虚拟IP绑定的网络接口,否则子网掩码默认为32位,绑定的接口和前面的interface参数配置一致
注意:这里的虚拟IP就是工作中需要和域名绑定的IP,即和高可用服务监听的IP要保持一致!
weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信
版权声明
1. 本网站名称:Leon的博客
2. 本站永久网址:https://blog.leonshadow.cn
3. 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ632113590进行删除处理。
4. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
liyang