keepalived高可用服务配置管理
实验环境:
主机 | ipaddress | 服务 | 备注 |
---|---|---|---|
k8s-master1 | 10.0.0.63 | nginx | |
k8s-master2 | 10.0.0.64 | nginx | |
k8s-node1 | 10.0.0.65 | keepalived | 主 vrrp 10.0.0.100 |
k8s-node2 | 10.0.0.66 | keepalived | 备 vrrp 10.0.0.100 |
拓扑图:
VRRP协议理解
VRRP协议是一款网关冗余备份协议,由主备组成,目的是能实现业务冗余能力,在服务器出现故障出现和恢复时做到自动切换主备的一种技术,它利用vrrp发送组播包,进行主备竞选.完成竞选后实现主备切换能力.
后端节点配置[nginx]
k8s-master1配置:
yum install -y nginx
systemctl start nginx
echo "master1 10.0.0.63" >/usr/share/nginx/html/index.html
k8s-master2配置:
yum install -y nginx
systemctl start nginx
echo "master2 10.0.0.64" >/usr/share/nginx/html/index.html
检查:
[root@k8s-master1 ~]# curl 10.0.0.63
master1 10.0.0.63
[root@k8s-master1 ~]# curl 10.0.0.64
master2 10.0.0.64
前端nginx负载均衡配置:
# 10.0.0.65配置:
yum install -y nginx
egrep -v "^$|#" /etc/nginx/nginx.conf.default >/etc/nginx/nginx.conf
systemctl start nginx
修改/etc/nginx/nginx.conf为如下内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream leilei_poll {
server 10.0.0.63;
server 10.0.0.64;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://leilei_poll;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
测试:
[root@k8s-node1 ~]# curl 10.0.0.65
master1 10.0.0.63
[root@k8s-node1 ~]# curl 10.0.0.65
master2 10.0.0.64
-------------------------------------------------------------------------
# 10.0.0.66配置:
直接拷贝10.0.0.65的配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream leilei_poll {
server 10.0.0.63;
server 10.0.0.64;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://leilei_poll;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#测试:
[root@k8s-node1 ~]# curl 10.0.0.66
master1 10.0.0.63
[root@k8s-node1 ~]# curl 10.0.0.66
master2 10.0.0.64
网页访问效果一样.它默认是轮询算法.
keepalived原理:
keepalived部署
10.0.0.65
10.0.0.66 两台安装 keepalived
安装keepalived:
yum install -y keepalived
keepalived配置:
keepalived主配置文件: /etc/keepalived/keepalived.conf
精简后配置文件如下[未配置]:
! Configuration File for keepalived
global_defs {
router_id lb01 #唯一标识,如果有两台或多台,他们的ID不能够冲突.
}
vrrp_instance VI_1 {
state MASTER #定义master 状态.
interface eth0 #定义网卡名
virtual_router_id 51 #虚拟ID需要一样.否则无法交互.
priority 100 # 优先级,优先最高,就会成为主 主的服务器中会生成 虚拟IP地址
advert_int 1 # 发送组播包的时间间隔
authentication { #认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #vip虚拟地址.
10.0.0.100 #需要相同.
}
}
配置文件需要在两台负载上都修改
主:
keppalived配置10.0.0.65:
! Configuration File for keepalived
global_defs {
router_id lb01
}
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.100
}
}
#------------------------------------------------------------------------#
备:
keppalived配置10.0.0.66:
! Configuration File for keepalived
global_defs {
router_id lb02
}
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.100
}
}
两台lb配置完毕后都需要进行重启:
systemctl start keepalived.service
此时通过访问:
10.0.0.100 就可以完成访问. 注意: 配置了keepalived之后,web服务器就是10.0.0.100了.
keepalived 主备检查:
在10.0.0.65服务器中使用 ip a 进行IP查看,会发现生成了一个虚拟IP为 10.0.0.100
如果这台服务器优先级不够,虚拟IP就不存在.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:e0:50 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.65/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.0.100/32 scope global eth0 <<---------虚拟IP10.0.0.100 生成了.
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea2:e050/64 scope link
valid_lft forever preferred_lft forever
通过查看10.0.0.66的IP信息,无法发现 10.0.0.100 ,说明此时,10.0.0.65就是主.
另外注意,如果有域名,则需要绑定域名和IP 他们绑定的IP必须是虚拟IP.
故障转移:
在有主备的情况下,测试down掉主看是否会进行主备切换.
如果其中一台keep挂了 就会切换到另一台
如果其中一台lib挂了 也会切换到另一组
检查keepalived:
10.0.0.66优先级配置的100 10.0.0.65优先级默认150 如果两台keepalived同时开启,从访问日志能看到的应该是 10.0.0.65
如果关闭10.0.0.65keepalived,那么他会自动切换到10.0.0.66的keepalived
如果关闭10.0.0.63nginx,则访问keepalived的出现的结果一定会是10.0.0.64,且不会切换
如果关闭10.0.0.64nginx,则访问keepalived的出现的结果一定会是10.0.0.63,且不会切换
keepalived脑裂
1.高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
因心跳线坏了(包括断了,老化)。
因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。
因心跳线间连接的设备故障(网卡及交换机)。
因仲裁的机器出问题(采用仲裁的方案)。
2.高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
3.高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
4.其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
5.Keepalived配置里同一 VRRP实例如果virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
开启iptables防火墙后会阻止组播包,一旦开启后 就会产生脑裂
keepalived脑裂解决办法
问题1: 在主服务器上监控还是备服务器上监控?
需要在备用机上进行监控,用于发现备机在主还没down的情况下切换为了主.
问题2: 监控哪些信息?
备机上出现 虚拟 vip情况. 如: 脑裂,正常切换 等信息
在非主中配置脚本,来监控脑裂的发生,并及时通知管理员
通过shell脚本来监控脑裂:
echo '/proc/sys/net/ipv4/ip_nonlocal_bind =1' >>/etc/sysctl.conf
sysctl -p
10.0.0.66备用服务器配置:
1. 配置脚本[放在备用服务器中,在备用服务器出现漂移IP时通知管理员]
chmod a+x check_keepalived.sh
vim keepalived.sh
#!/bin/bash
if [ `ip a s eth0|grep 10.0.0.100|wc -l` -ne 0 ]
then
echo "keepalived is error!!"
else
echo "keepalived is ok" #这里也可以配置email
fi
2. 配置定时任务调用脚本[备用服务器配置]
echo '* * * * * bash check_keepalived.sh' >>/var/spool/cron/root
systemctl restart crond.service
crontab -l
3. 添加解析记录,将域名解析到虚拟ip中,两台主备均需要配置解析记录.
10.0.0.100 leilei.com
keepalived高可用服务配置管理的更多相关文章
- 十一.keepalived高可用服务实践部署
期中集群架构-第十一章-keepalived高可用集群章节======================================================================0 ...
- Keepalived高可用服务
Keepalived高可用服务 避免负载均衡服务出现单点问题 高可用服务原理 Keepalived的工作原理: Keepalived高可用对之间是通过VRRP通信的,因此,我从 VRRP开始了解起: ...
- 干货 | Keepalived高可用服务配置实例
一个执着于技术的公众号 Keepalived系列导读 Keepalived入门学习 keepalived安装及配置文件详解 前言 在前面的章节中,我们学习了Keepalived简介.原理.以及Keep ...
- keepalived高可用简介与配置
keepalived简介 keepalived介绍 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP ...
- Nginx入门篇(七)之Nginx+keepalived高可用集群
一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...
- Linux实战教学笔记31:Keepalived高可用集群应用实践
1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...
- Keepalived高可用集群应用
Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...
- nginx Keepalived高可用集群
一.Keepalived高可用 1.简介 Keepalived软件起初是专为LvS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此, ...
- 企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇
1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...
随机推荐
- Java中都通用文件下载(ContentType、文件头、response、out四步骤)
Java中都通用文件下载(ContentType.文件头.response.out四步骤) 新浪微博:IT国子监(记得关注噢) http://weibo.com/itguozijian 我们就直接 ...
- 007-函数-C语言笔记
007-函数-C语言笔记 学习目标 1.[了解]函数的分类 2.[掌握]函数的声明定义和调用 3.[掌握]函数的形参和实参 4.[掌握]带返回值的函数 5.[掌握]全局变量和局部变量 6.[了解]注释 ...
- Redis之事务操作
1.Redis事务的概念: Redis 事务的本质是一组命令的集合.事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求 ...
- Python 开发工具推荐
对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...
- UML(续)
活动图 活动图定义 活动图描述了在一个过程中,顺序的/并行的活动及其之间的关系 应用于商业过程.工作流(业务过程).复杂算法的建模 活动图是顶点和弧的集合 活动节点 动作 流 对象值 注解和约束等 建 ...
- UML 建模工具的安装与使用
一. 实验目的1) 学习使用 EA(Enterprise Architect) 开发环境创建模型的一般方法: 2) 理解 EA 界面布局和元素操作的一般技巧: 3) 熟悉 UML 中的各种图的建立和表 ...
- 手把手教你使用Python爬取西刺代理数据(下篇)
/1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...
- 10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱!
原文链接:10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱! 你以为 Redis 这么快仅仅因为单线程和基于内存? 那么你想得太少了,我个 ...
- 百度云虚拟空间(BCH)
百度云虚拟空间(BCH)上的一些默认配置 :first-child { margin-top: 0;}blockquote > :last-child { margin-bottom: 0;}i ...
- Python学习16之input函数
'''''''''Input函数:作用:接受一个标准输入数据返回值:返回为 string 类型使用:input()'''a=input("请输入一个整数")print(a)prin ...