keepalived是什么?原理
keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单节点故障。keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
工作原理:keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单节点故障,keepalived是一VRRP协议来实现的,VRRP是虚拟路由冗余协议,在keepalived服务正常时,主master节点会不断的向备用节点发送心跳消息,用以告诉备用节点自己还活着,当主master节点发生故障时,就无法发送心跳消息,备用节点也就无法检测master的心跳了,于是就调用自身的接管程序,接管master节点的vip以及当前的服务,当master节点恢复时,因为master节点的优先级比较高,所以vip就会重新回到master,继续工作
keepalived实现nginx高可用实操
实施过程
俩台nginx服务器作为代理服务器,配置nginx负载均衡,给两台代理服务器安装keepalived制作高可用集群,生成vip,
这里我们使用四台机器,两台作为代理服务器,;两台作为后端服务器,代理服务器一台作为主(master),一台作为备用(backup),
master ip 192.168.126.140
backup ip 192.168.126.133
nginx-1 ip 192.168.126.139
nginx-2 ip 192.168.126.142
1.nginx做负载均衡
master
vim /etc/nginx/conf.d/default.conf
upstream webbackup {
server 192.168.126.139:80;
server 192.168.126.142:80;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://webbackup;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
backup机器
vim /etc/nginx/conf.d/default.conf
upstream webbackup {
server 192.168.126.139:80;
server 192.168.126.142:80;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://webbackup;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2.安装高可用软件keepalived
master和backup都要下载
[root@master ~]# yum -y install keepalived
[root@backup ~]# yum -y install keepalived
3.修改master的keepalived的配置文件
配置文件在 /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id directory1 #辅助改为directory2
}
vrrp_instance VI_1 {
state MASTER #定义主还是备
interface ens33 #VIP绑定接口
virtual_router_id 80 #整个集群的调度器一致
priority 100 #优先级,backup改为50
advert_int 1 #心跳检测的时间间隔1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.126.189/24 #注意在同一网段
}
}
4.修改backup的keepalived的配置文件
! Configuration File for keepalived
global_defs {
router_id directory2
}
vrrp_instance VI_1 {
state BACKUP #设置为backup
interface ens33
nopreempt #设置到back上面,不抢占资源(VIP)
virtual_router_id 80
priority 50 #辅助改为50
advert_int 1 #检测间隔1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.126.189/24 #注意要和master一致
}
}
5.启动服务查看ip
[root@master ~]# systemctl start keepalived
[root@backup ~]# systemctl start keepalived
6.两台后台客户端下载nginx,然后进行测试
这里为了方便了解,我修改了nginx访问页面
都启动nginx
然后访问vip 192.168.126.189
第二个页面
配置成功