1.什么事高可用
启动相同业务的两个系统 一台故障另一台顶上 彼此可以互相检测存活状态 集群是相同服务组成的集群 彼此之间不知道
2.ip高可用的实现工具
keepalived 还有硬件
3.keepalived如何实现高可用
keepalived基于VRRP协议 虚拟“路由”冗余协议
4.VRRP解决的问题
通过虚拟的ip地址切换 保证虚拟ip不会下线 保证服务的可用性
5.流量的调度方式
1.抢占式
2.非抢占式
6.安装
安装
yum install keepalived
7.配置
lb01
! Configuration File for keepalived
global_defs {
router_id 192.168.1.201 #身份标识
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 7443"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER #状态标识
interface eth0 # 根据实际网卡更改
virtual_router_id 251 #虚拟路由id标识 一组vrrp协议 id相同
priority 100 #优先级
advert_int 1 #检测间隔时间
mcast_src_ip 192.168.1.201
nopreempt #非抢占式 主节点回复后不会抢占vip
authentication {
auth_type PASS #检测明文认证
auth_pass 11111111 #加测明文密码
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.200 #虚拟ip
}
}
lb02
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 192.168.1.202
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 7443"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 # 根据实际网卡更改
virtual_router_id 251
mcast_src_ip 192.168.1.202
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 11111111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.200
}
}
两套配置文件的差别
参数 | 主节点 | 备节点 |
---|---|---|
router_id | 192.168.1.201 | 192.168.1.202 |
state | MASTER | BACKUP |
priority | 100 | 90 |
8.非抢占式
1.两个节点的state都必须配置为BACKUP
2.两个节点都必须配置上 nopreempt
3.其中一个节点的优先级必须高于另外一个节点的优先级
lb01
! Configuration File for keepalived
global_defs {
router_id 192.168.1.201
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 7443"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 # 根据实际网卡更改
virtual_router_id 251
priority 100
advert_int 1
mcast_src_ip 192.168.1.201
nopreempt
authentication {
auth_type PASS
auth_pass 11111111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.200
}
}
lb02
! Configuration File for keepalived
global_defs {
router_id 192.168.1.202
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 7443"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 # 根据实际网卡更改
virtual_router_id 251
mcast_src_ip 192.168.1.202
priority 90
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 11111111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.200
}
}