第1章 keeplived工作原理
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
1.1 keepalived原理模式
1)VRRP协议,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,
2)VRRP是用过IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信的。
3)工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。
4)VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。
第2章 配置
2.1 环境准备
lb01 10.0.0.5
lb02 10.0.0.6
web01 10.0.0.8
web02 10.0.0.7
web03 10.0.0.9
2.2 安装keeplived
两台lb01 lb02都需要装keepalived
[root@lb01 ~]# yum install keepalived -y [root@lb02 ~]# yum install keepalived -y
2.3 测试
配置文件 keepalived.conf 分为基本分
TOP HIERACHY ##等级配置 GLOBAL CONFIGURATION ### 全局定义 VRRPD CONFIGURATION ###虚拟ip的配置 LVS CONFIGURATION ###配置与管理 LVS
2.3.1 全局变量(GLOBAL CONFIGURATION)部分
这部分主要用来设置keepalived的故障通知机制和Router ID 标志。示例配置如下:
[root@lb02 ~]# head -13 /etc/keepalived/keepalived.conf |cat -n
1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { 5 acassen@firewall.loc 6 failover@firewall.loc 7 sysadmin@firewall.loc 8 } 9 notification_email_from Alexandre.Cassen@firewall.loc 10 smtp_server 192.168.200.1 11 smtp_connect_timeout 30 12 router_id LVS_DEVEL ###keepalived 软件的身份证号码 13 }
第1行是注释,!开头和#开头一样,都是注释。
第2行是空行;
第3-8行是定义服务器故障报警的Email地址,作用是当服务器法伤切换或TS及诶单灯油故障时,发报警邮件,这几行是可选配置,notifcation_email指定在keepalived发生时间时,需要发送Email地址,可以有多个,每行一个。
第9行是指定发动邮件的发送人,即发件人地址,也是可选配置。
第10行smtp_server指定发送邮件的smtp服务器,如果本机开启了sendmail或postfix,就可以使用上面默认配置实现邮件发送,也是可选配置。
第11行smtp_connect_timeout是链接smtp的超时时间,也是可选配置。
---------------------------------------------------------------------------------------------------------------------------------
注意:第4-11行所有和邮件报警相关的参数均可以不配置,在时间工作中会将监控的任务交给更山城的监控报北京的Nagios或zabbix软件。
---------------------------------------------------------------------------------------------------------------------------------
第12行是keepalived服务器的路由标识(router_id),在一个局域网内,这个标识(router_id)应该是唯一的。
在大括号“{}”,用来分隔区块,要成对出现,如果漏写了半个大括号,keeplived运行时会报错,但也不会得到语气的结果,特别提示:由于区块间存在多层嵌套关系,因此很容易遗漏区块结尾处的大括号,要特别注意。
更多参数信息请执行man keepalived.conf获取。
2.3.2 VRRP实例定义取块(VRRPD CONFIGURATION)部分
这部分主要用来定义服务的实例配置,包括keepalived主备装填、接口、优先级、认证方式和IP信息等,示例代码如下:
15 vrrp_instance VI_1 {
16 state MASTER
17 interface eth0
18 virtual_router_id 51 ###家族名称
19 priority 100 ###优先级
20 advert_int 1 ###1秒钟发送一次请求
21 authentication {
22 auth_type PASS
23 auth_pass 1111 ###官方推荐简单密码:1111
24 }
25 virtual_ipaddress { ###虚拟IP
26 192.168.200.16
27 192.168.200.17
28 192.168.200.18
29 }
30 }
2.4 实例配置
2.4.1 lb01配置
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs { router_id LVS_01 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:1 } }
2.5 全局定义,keepalived高可用配置成功
2.5.1 vrrp_实例的配置部分
lvs配置lb01
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs { router_id LVS_01 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:1 } }
2.5.2 vrrp_实例的配置部分
lvs配置lb02
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
global_defs { router_id LVS_02 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:1 } }