keepalived-高可用集群部署
)
概念:高可用服务–keepalived
a 将多台服务从逻辑上捆绑成一台
b 可以提供一个虚拟的IP地址,供用户进行访问
c 实现自动主备切换
完成高可用集群部署
lb01 10.0.0.5 vip 10.0.0.3
lb02 10.0.0.6
lb服务器部署流程:
第一个历程:安装keepalived软件
yum install -y keepalived
keepalived配置文件编写方法
keepalived配置文件主要分为三个部分
GLOBAL CONFIGURATION — 全局配置
VRRPD CONFIGURATION — 高可用的配置
LVS CONFIGURATION — LVS配置部分(用来配置LVS)
LVS配置部分用不到 为了配置文件简单易懂 删除这个部分 (删除之前做好备份)
[root@lb01 ~]# cp /etc/keepalived/keepalived.conf{,.bak}
[root@lb01 ~]# ll /etc/keepalived/
total 8
-rw-r--r-- 1 root root 3598 Jan 6 16:47 keepalived.conf
-rw-r--r-- 1 root root 3598 Feb 26 10:30 keepalived.conf.bak
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
清除virtual_server 192.168.200.100 443 { 之后的内容
大概在36行
保存 退出
[root@lb01 ~]# cat -n /etc/keepalived/keepalived.conf
1 ! Configuration File for keepalived 实现通知告警功能
2
3 global_defs {
4 notification_email { 邮件配置
5 [email protected] [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 如果邮箱无法发送邮件 会在30s后换下一个邮箱
12 router_id LVS_DEVEL 在一个高可用集群中不能重复 定义主机的名称 例: router_id lb01
13 vrrp_skip_check_adv_addr
14 vrrp_strict
15 vrrp_garp_interval 0
16 vrrp_gna_interval 0
17 }
18
19 vrrp_instance VI_1 { 定义一个家族名称 叫VI_1
20 state MASTER 定义贮备信息注释(主MASTER 备BACKUP)
21 interface eth0 指定VIP地址 在哪个网卡生成
22 virtual_router_id 51 优先级越高 越有可能成为主
23 priority 100 家族标识 高可用集群每个节点必须一致
24 advert_int 1 发送组播包间隔时间 单位s (每秒一次 我还活着)
25 authentication { 认证信息 明文方式
26 auth_type PASS
27 auth_pass 1111
28 }
29 virtual_ipaddress { 定义一个虚IP地址
30 192.168.200.16
31 192.168.200.17
32 192.168.200.18
33 }
34 }
35
第二个历程: keepalived服务配置
lb01-作为主服务器
lb01 配置信息
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance aixinjueluo {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
10.0.0.3
}
}
lb02-作为备服务器
lb02 配置信息
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance aixinjueluo {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
10.0.0.3
}
}
什么是vrrp协议(重点)
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)
a 进行VRRP协议通讯
b 进行主备竞选
c 主服务器间断的发送组播包信息 224.0.0.18
企业实际配置高可用服务
第一个历程:确认lb01 lb02服务器上keepalived已经部署完毕
第二个历程:确保lb01 lb02都可以正常访问后端web节点
确认lb01 lb02负载均衡配置
[root@lb01 conf.d]# cat lb.conf
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
lb01 lb02
curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
第三个历程: 模拟用户访问测试
配置hosts解析信息
10.0.0.3 www.etiantian.org bbs.etiantian.org
keepalived服务常见异常情况
脑裂问题:多个高可用集群节点都同时出现了vip地址信息
- 备主机上接收不到组播包(心跳线有问题了 物理原因(线缆) 逻辑原因(防火墙))
- 配置有问题(virtual_router_id 51)
解决方式:发送告警信息
利用脚本进行监控
lb02是否出现vip地址:
a 出现脑裂问题
b 主服务器挂了