keepalived双机热备nginx
nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好。以后也会写如何使用docker跑nginx集群。
环境准备:
2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119
配置keepavlived
分别在105和118上安装keepalived
yum install keepalived
准备心跳角本
keepalived的配置相当灵活,可以定时执行角本命令,用于心跳检查,比如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从而切换到从nginx来实现不间断的服务支持。
vi /etc/keepalived/keepalived.conf
#!/bin/bash count=
for (( k=; k<; k++ ))
do
check_code=$( curl --connect-timeout -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null )
if [ "$check_code" != "" ]; then
count=count +
continue
else
count =
break
fi
done
if [ "$count" != "" ]; then
killall keepalived
exit
else
exit
fi
这段角本的意思就是说每次的心跳检查会执行一个for循环,访问http://localhost:81,在for的2次循环中如果返回的状态都不是200就会关闭keepalived。这个角本在105和118两台机器上都要准备好。
设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置文件差不太多
vi /etc/keepalived/keepalived.conf
118机器keepalived的配置文件
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh" # 心跳检测角本
interval #脚本执行间隔,每2s检测一次
weight - #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -
fall #检测连续2次失败才算确定是真失败。会用weight减少优先级(-255之间)
rise #检测1次成功就算成功。但不修改优先级
} vrrp_instance VI_1 {
state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
interface eth0 #指定监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的
mcast_src_ip 192.168.0.118 ## 发送多播数据包时的源IP地址
virtual_router_id #虚拟路由标识,MASTER和BACKUP必须是一致的
priority #定义优先级,数字越大,优先级越高
advert_int #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码。主从必须一样
auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
auth_pass #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress {
192.168.0.119 #VRRP 虚拟地址 如果有多个VIP,换行填写
}
track_script {
chk_nginx # 心跳脚本,即在 vrrp_script 部分指定的名字
}
}
115机器上的角本对上面的角本稍做变动即可
改变 state MASTER -> state BACKUP,priority 100 -> priority 90,mcast_src_ip 192.168.0.118 -> mcast_src_ip 192.168.0.105。其他的地方保持不变,是不是很简单。
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval
weight -
} vrrp_instance VI_1 {
state BACKUP # 修改
interface eth0
mcast_src_ip 192.168.0.105 # 修改 为本机IP
virtual_router_id
priority #数字变小
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.0.119
}
track_script {
chk_nginx
}
}
到这里keepalived的简单配置就完成了下面就启动keepalived
service keepalived start
安装Nginx

yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel
mkdir nginxsrc
cd nginxsrc/

wget http://nginx.org/download/nginx-1.13.9.tar.gz tar zxvf nginx-1.13..tar.gz cd nginx-1.13./

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
make&&make install


/usr/local/nginx/sbin/nginx

ps aux|grep nginx

因为我的机器上80端口被别的应用占用了,所以就修改105和118的 nginx.conf 把端口80 修改为81
vi /usr/local/nginx/conf/nginx.conf
分别个性105 和119上的index.html 加上一个ip以便们们识别打开的是哪个ip上的index.html
vi /usr/local/nginx/html/index.html
nginx重新加载配置
/usr/local/nginx/sbin/nginx -s reload
好了,我们访问一下
curl 192.168.0.119:
返回的html是 118机器上的index.html
现在我们把118的nginx停止
/usr/local/nginx/sbin/nginx -s stop
这时118上的keepalived的心跳检查角本发现nginx无法访问会把keepalived关闭,然后转向从节点
我们再访问一下119
curl 192.168.0.119:
在118上重新启动nginx和keepalived
再访问119 返回的网址是118上的index.html
keepalived双机热备nginx的更多相关文章
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+keepalived 双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!
写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...
- Keepalived双机热备
一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...
- nginx + keepalived 双机热备
序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP—— ...
- Keepalived 双机热备
使用 Keepalived 做双机热备非常简单,经常和 LVS 搭配来实现高可用负载平衡方案. 1. Master / Slave 首先准备两台测试服务器和一个虚拟IP. Server A: 192. ...
- keepalived双机热备实现故障时发送邮件通知
目前项目已经采用nginx来实现负载均衡,但是nginx调度器只有一台,上次还意外的down机一次,导致整个服务应用全部瘫痪,这次准备再加一个调度器来实现站点高可用性,也就是常说的双机热备了. mas ...
- keepalived双机热备,安装部署文档
keepalived双击热备,安装部署文档: 下载目录:/apps/keepalived-1.2.7.tar.gz 1:---> yum install -y make wget 2:---&g ...
- Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
随机推荐
- jspf与jsp的区别
如果想把一个jspf的文件引入(incurred)到一个jsp页面中,只能使用"@include"指令引入 如果使用<jsp:include>引入,jspf文件中的内容 ...
- 在Intellij IDEA 中clean报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
解决办法:添加VM属性 -Dmaven.multiModuleProjectDirectory=$M2_HOME
- jQuery-niceScroll滚动条错位问题
虽然niceScroll插件很好用,毕竟它不依赖css,只是单纯的js就可以设置出好看的滚动条了. 最近在项目中使用到niceScroll,而且在表格里有横滚动条,竖滚动条时很容易错位,就是滚动条会悬 ...
- tomcat无法打开8080页面
tomcat已启动 app已经正常执行 但不能打开8080管理页面 可能是在webapps目录下没有ROOT目录
- 【转】wget
wget 下载整个网站,或者特定目录 需要下载某个目录下面的所有文件.命令如下 wget -c -r -np -k -L -p www.xxx.org/pub/path/ 在下载时.有用到外部域名的图 ...
- Android开发之漫漫长途 XIV——ListView
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- SAS SATA SSD基本介绍
SATA硬盘采用新的设计结构,数据传输快,节省空间,相对于IDE硬盘具有很多优势: 1 .SATA硬盘比IDE硬盘传输速度高.目前SATA可以提供150MB/s的高峰传输速率.今后将达到300 MB/ ...
- System.nanoTime
System.currentTimeMillis()返回的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数. System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意 ...
- bzoj 4835: 遗忘之树 [树形DP]
4835: 遗忘之树 题意:点分治,选标号最小的重心,上一次重心向下一次重心连有向边,求原树方案数. md我真不知道当初比赛时干什么去了...现在一眼秒啊... \(size[v]=\frac{siz ...
- CF 208E. Blood Cousins [dsu on tree 倍增]
题意:给出一个森林,求和一个点有相同k级祖先的点有多少 倍增求父亲然后和上题一样还不用哈希了... #include <iostream> #include <cstdio> ...