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服务 ...
随机推荐
- Javaweb学习笔记(一)
一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...
- 2019.11.15 JQ图片轮播
<div class="three"> <div class="bjtp"> <img class="bjpic b1& ...
- 解决Cannot find config.m4 Make sure that you run '/home/php/bin/phpize' in the top level source directory of the module
oot@DK:/home/daokr/downfile/php-7.0.0/ext/mysqlnd# /home/php/bin/phpizeCannot find config.m4. Make s ...
- leetcode解题报告(26):Add Binary
描述 Given two binary strings, return their sum (also a binary string). For example, a = "11" ...
- Problem 6 二分
$des$有 $n$ 个物品,第 $i$ 个物品有两个属性 $k_i, b_i$ ,表示它在时刻 $x$ 的价值为 $k_i \times x + b_i$ .当前处于时刻 $0$ ,你可以选择不超过 ...
- Cogs 763. [USACO Open09] 数字的游戏(博弈)
[USACO Open09] 数字的游戏 ★☆ 输入文件:cdgame.in 输出文件:cdgame.out 简单对比 时间限制:1 s 内存限制:128 MB Bessie正跟FJ玩一个数字游戏,她 ...
- Matlab与数学建模
一.学习目标. (1)了解Matlab与数学建模竞赛的关系. (2)掌握Matlab数学建模的第一个小实例—评估股票价值与风险. (3)掌握Matlab数学建模的回归算法. 二.实例演练. 1.谈谈你 ...
- warning insecure world writable dir ruby mode 040777,gem insstal sass error failed to build gem native extension
//1.删除原gem源 gem sources --remove https://rubygems.org/ //2.添加国内镜像 gem source -a https://gems.ruby-ch ...
- 内核中根据进程Pid获取卷的全目录
目录 一丶简介 二丶原理 3.代码实现. 一丶简介 在内核中有时候想通过PID 获取进程的全路径以达到监控的作用 比如我们设置了进程回调.则可以根据PID看下进程的全路径. 二丶原理 原理就是在内核中 ...
- 最大字段和&洛谷11月月赛DIV2 T1
蒟蒻只能打一打DIV2的基础题 太卑微了 这道题的本质其实是再建一个数组,如果s串i位置是0那么就给a[i]赋值为1,表示要累加个数,如果是1那么就把a[i]赋值为-1,表示个数减一,最后求最大子段和 ...