keepalived通过飘移ip实现高可用配置步骤
本次测试环境:
两台虚拟机
centos7.3虚拟机A 10.0.3.46
centos7.3虚拟机B 10.0.3.110
对外开放的虚拟ip 10.0.3.96(这个ip只需要在keepalived里面配置就可以了)
简述实验原理:
虚拟机A和B都需要安装nginx和keepalived(过程省略,其中keepalived为yum安装模式yum install keepalived -y,编译安装的貌似不能正常运行,暂时不清楚什么原因)我简单将keepalived理解为检测i服务器是否可用,如果某台服务器宕机,则将虚拟ip转移到另一台服务器
实验步骤:
为了区别虚拟机AB,修改nginx的默认页面
分别开启nginx
分别修改keepalived的配置文件keepalived.conf,yum安装默认放在/etc/keepalived/keepalived.conf,或者也可以自行find / -name keepalived.conf。注意需要把原文件内容全部删除(或者把原文件重命名做备份),否则会出错
在两台keepalived上都需要在/etc/sysctl.conf中添加以下参数,否则无法正常绑定虚拟ip
net.ipv4.ip_nonlocal_bind = 1
虚拟机A的keepalived配置文件全部内容为:(正常来说还应该配套一个检测Nginx存活状态的脚本,后续我实践了再加进来)
vrrp_instance VI_1 {
state MASTER
interface ens33 #这里需要根据自己的网卡接口修改
virtual_router_id 66 #该值保持一致,默认为51,但是建议修改为其他值,我的就是因为局域网内已经部署有一个keepalived占用了51这个id,导致keepalived无法正常启动
priority 101 #具有更高的优先级,比如说当这台虚拟机A宕机恢复后,keepalived根据这个优先级决定是否优先使用虚拟机A
advert_int 1
authentication { #类型和密码必须与另一台虚拟机保持一致
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.0.3.96 #这个是我随便取的,只要局域网内该ip没有被占用就可以了
}
}
虚拟机B的keepalived配置文件为
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 66
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.0.3.96
}
}
Nginx存活状态检测脚本:(目前没有添加这个配置,放在这里是让大家知道有这个东西)
#!/bin/bash
A=`ps -C nginx–no-header |wc -l`
if [ $A -eq ];then
/usr/local/nginx/sbin/nginx
sleep
if [ `ps -C nginx --no-header |wc -l` -eq ];then
killallkeepalived
fi
fi
现在启动两台虚拟机的keepalived
systemctl start keepalived
此时ping 10.0.3.96会有反应,必须能ping通
PS:这种配置方法,会出现在ifconfig无法找到virtual_ipaddress的情况,但是可以正常ping通,整个keepalived也可以正常使用。这个以后熟悉了再回来补充
测试实验效果
尝试从外界访问10.0.3.96,优先访问46,因为46的优先级101比另一台的优先级100大

现在我们把虚拟机B上的keepalived服务停掉,再次访问,发现切换到虚拟机B上了(该nginx默认页面我没有进行修改)

现在把虚拟机A的keepalived重新启动

题外话扩展:
另外,还有一个关于Nginx的session(会话)处理问题,之前面试的时候被问过,一脸懵逼,所以这里顺便提一下
解决方法
1.Nginx配置ip_hash,使client访问的服务器固定
2.使用Redis等缓存会话
3.设置使用浏览器本地cookie
keepalived通过飘移ip实现高可用配置步骤的更多相关文章
- MariaDB+Keepalived双主高可用配置MySQL-HA
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...
- Keepalived保证Nginx高可用配置
Keepalived保证Nginx高可用配置部署环境 keepalived-1.2.18 nginx-1.6.2 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1. ...
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区 作者:fuquanjun [字体:大 中 小] 一:环境介绍: M ...
- linux中keepalived实现nginx高可用配置
linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...
- keepalived+mysql实现双主高可用
环境: DB1:centos6.8.mysql5.5.192.168.2.204 hostname:bogon DB2:centos6.8.mysql5.5.192.168.2.205 hostn ...
- mysql+keepalived 双主热备高可用
理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互 ...
- 基于Keepalived实现LVS双主高可用集群
Reference: https://mp.weixin.qq.com/s?src=3×tamp=1512896424&ver=1&signature=L1C7us ...
- Keepalived+Nginx实现负载均衡高可用
一.负载均衡高可用 Nginx作为负载均衡器,所有请求都到了Nginx,可见Nginx处于非常重点的位置,如果Nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了避免负载均衡服务器的宕机 ...
- suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...
随机推荐
- 学到了林海峰,武沛齐讲的Day34 完 线程 进程 协程 很重要
线程 进程 协程 很重要 ...儿子满月回家办酒,学的有点慢,坚持
- 2-使用git管理一个单片机程序
https://www.cnblogs.com/yangfengwu/p/10842205.html 我用电脑压缩一个文件,然后通过git上传,然后在新买的linux系统通过wget 网络下载这个压缩 ...
- flutter 从接口获取json数据显示到页面
如题,在前端,是个很简单的ajax请求,json的显示,取值都很方便,换用dart之后,除了层层嵌套写的有点略难受之外,还有对json的使用比js要麻烦 1. 可以参照 flutter-go 先封装一 ...
- UOJ226. 【UR #15】奥林匹克环城马拉松 [组合数学,图论]
UOJ 思路 我们知道关于有向图欧拉回路计数有一个结论:在每个点入度等于出度的时候,答案就是 \[ t_w(G)\prod (deg_i-1)! \] 其中\(t_w(G)\)是以某个点为根的树形图个 ...
- 《挑战30天C++入门极限》新手入门:C/C++中的结构体
新手入门:C/C++中的结构体 什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构 ...
- P5385 [Cnoi2019]须臾幻境(LCT+主席树,思维题)
题目 P5385 [Cnoi2019]须臾幻境 做法 考虑一条边\((u,v)\)是否\([L,R]\)中的贡献:\([L,R]\)中第一条位于\(u,v\)链的边,则减少了一个联通块 实现:\(LC ...
- select2多选设置select多选,select2取值和赋值
select2设置select多选,select2取值和赋值,作为筛选条件的时候,取值相对简单,把选中的id值转为字符串传给后端查询,查询之后会刷新页面,为了在下拉框中显示刚刚选中的值,就需要给sel ...
- zabbix与agent端通信加密
Zabbix版本从3.0之后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通信加密,加密 ...
- 【转载】sudoers改坏后无法使用sudo的解决办法
练习安装odoo的时候,创建了一个odoo用户,想把它赋予sudo权限,然而,编辑的时候不留意,改坏了,导致sudo无法使用,无法编辑sudoers文件修改回来. 提示如下信息: >>&g ...
- 谈谈你对This对象的理解?
1.this总是指向函数的直接调用者(而非间接调用者):2.如果有new关键字,this指向new出来的那个对象:3.在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent ...