nginx+keepalived实现双机热备高可用性
搭建准备:
机器两台 ip分别为192.168.100.128 192.168.100.129(能够用虚拟机測试。虚拟机网络模式为NET模式。且为静态ip)
另外须要准备一个虚拟ip对外提供服务。即通过该ip訪问web程序。
(keepalive会将虚拟ip绑定到两台机器上)keepalived的核心原理是vrrp协议。英文好能够查看最新协议RFC3768。
1.nginx安装
两台机器都须要安装。能够參考我的上篇博文 Linux tar包安装Nginx http://blog.csdn.net/caicongyang/article/details/46388845
2.安装keepalived (两台机器都要安装,而且都要做例如以下操作!)
下载最新版本号的keepalived-1.2.17.tar.gz 下载地址:http://www.keepalived.org/download.html
将文件上传到/usr/local/文件夹下
#tar -zxvf keepalived-1.2.17.tar.gz
将解压出来的目录重命名
#mv keepalived-1.2.17 keeplived
进入目录,编译安装
#cd keepalived
#./configure --prefix=/usr/local/keepalived
#make && make install
改动配置文件 /usr/local/keepalived/etc/keepalived/keepalived.conf
主机器配置文件例如以下:
global_defs {
notification_email {
1491318829@qq.com #接收警报的email地址,能够加入多个
}
notification_email_from admin@caicongyang.com ###发件人地址
smtp_server 127.0.0.1 ###发送邮件的服务器
smtp_connect_timeout 30 ###超时时间
router_id LVS_DEVEL ####load balancer 的标识 ID,用于email警报
}
vrrp_script chk_http_port {
script “/opt/nginx_pid.sh” ####检測nginx状态的脚本路径
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER ############ 辅机为 BACKUP
interface eth0 ####HA 监測网络接口 此项默觉得eth0,由于本人在虚拟机下做測试所以将其改为eth2,能够用ifconfing
virtual_router_id 51 #主、备机的 virtual_router_id 必须同样
mcast_src_ip 192.168.100.128 ###本机IP地址
priority 100 ########### 权值要比 back 高
advert_int 1 #主备之间的通告间隔秒数
authentication {
auth_type PASS ###默认配置 主备切换时的验证
auth_pass 1111
}
track_script {
chk_http_port ### 运行监控的服务
}
virtual_ipaddress {
192.168.100.133/24 ####虚拟ip,vip的地址
}
}
backup机器配置文件
global_defs {
notification_email {
1491318829@qq.com #接收警报的email地址,能够加入多个
}
notification_email_from admin@caicongyang.com ###发件人地址
smtp_server 127.0.0.1 ###发送邮件的服务器
smtp_connect_timeout 30 ###超时时间
router_id LVS_DEVEL ####load balancer 的标识 ID,用于email警报
}
vrrp_script chk_http_port {
script “/opt/nginx_pid.sh” ####检測nginx状态的脚本路径
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP ############ 辅机为 BACKUP
interface eth2 ####HA 监測网络接口 注意。此项默觉得eth0,由于本人在虚拟机下做測试所以将其改为eth2。能够先查看自己的网络端口
virtual_router_id 51 #主、备机的 virtual_router_id 必须同样
mcast_src_ip 192.168.100.129 ###本机IP地址
priority 90 ########### 权值要比 back 高
advert_int 1 #主备之间的通告间隔秒数
authentication {
auth_type PASS ###主备切换时的验证
auth_pass 1111
}
track_script {
chk_http_port ### 运行监控的服务
}
virtual_ipaddress {
192.168.100.133/24 ####虚拟ip,vip的地址
}
}
将keepalived安装成Linux系统服务
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ #cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ #mkdir /etc/keepalived #cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
设置开机启动服务
# chkconfig --level 2345 keepalived on
在/opt/下编写校验脚本,/opt/nginx_pid.sh(已配置在keepalived.conf中)
nginx_pid.sh :假设nginx停止执行,尝试启动。假设无法启动杀死本机keepalived进程,keepalied将虚拟ip绑定到备用机器上
建议脚本用vi或者vim在linux下编辑。由于linux的换行符和windows的不同,假设在windowsx下编辑,在传上去可能没法用!
#!/bin/bash
A=`ps -C nginx -–no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx ##这个地方写你nginx启动命令的路径
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
測试:
分别启动两台机器上nginx 和 keepalived
利用命令查看虚拟ip是否绑定成功
#ip a
主机的结果是
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ff:ca:24 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.128/24 brd 192.168.100.255 scope global eth1
<span style="color:#ff6666;">inet 192.168.100.133/32 scope global eth1</span>
inet6 fe80::20c:29ff:feff:ca24/64 scope link
valid_lft forever preferred_lft forever
能够看到 虚拟IP 192.168.100.133已经绑定到128的机器上了
另外可以利用杀死主服务的nginx进程。訪问192.168.100.133是否依旧可以訪问web页面,再次利用#ip a 命令查看备用机器虚拟ip是否绑定成功!
也能够用以下的命令查看keepalived启动过程日志
#tail -f /var/log/messages
后记:双机热备模式尽管可用性高,可是有一台机器处于被分在状态。资源有点浪费。楼主将在下篇文章配置双机互为双主的模式。
不懂运维的程序猿。不是好的project师!
我的个人站点:http://www.caicongyang.com
我的CSDN博客地址: http://blog.csdn.net/caicongyang
nginx+keepalived实现双机热备高可用性的更多相关文章
- nginx:负载均衡实战(四)nginx+keepalived配置双机热备
1.下载安装 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-.tar.gz 安装o ...
- Nginx+Keepalived主从双机热备+自动切换
1 安装配置nginx 参考: http://www.cnblogs.com/jager/p/4388202.html 2 安装配置keepalived tar xvf keepalived-1.2. ...
- Nginx+keepalived做双机热备加tomcat负载均衡
Nginx+keepalived做双机热备加tomcat负载均衡 环境说明: nginx1:192.168.2.47 nginx2:192.168.2.48 tomcat1:192.168.2.49 ...
- 使用keepalived实现双机热备
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合tom ...
- Java技术中如何使用keepalived实现双机热备
Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...
- tomcate+keepalived配置双机热备
环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9 ...
- Keepalived 实现双机热备
原理 首先有一个虚拟ip暴露给客户端,虚拟ip对应的mac地址为一台真实服务器, 即用户向虚拟ip发送一个请求,该请求会被分发到真实服务器上. 现在有2台真实服务器,一台master,一台backup ...
- HAproxy + keepalived 实现双机热备
一.HAProxy简介: HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点, ...
- Nginx+Keepalived 实现双击热备及负载均衡
Nginx master : 10.1.58.191 Nginx负载均衡主机 Nginx slave : 10.1.58.181 Nginx负载均衡备机Nginx_VIP_TP: 10 ...
随机推荐
- Php中常见的4种随机密码生成方法详解
使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法 ...
- 论文笔记《Fully Convolutional Networks for Semantic Segmentation》
一.Abstract 提出了一种end-to-end的做semantic segmentation的方法,也就是FCN,是我个人觉得非常厉害的一个方法. 二.亮点 1.提出了全卷积网络的概念,将Ale ...
- HDU 5696 RMQ+滑窗
区间的价值 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 洛谷P1175 表达式的转换
P1175 表达式的转换 44通过 147提交 题目提供者该用户不存在 标签云端 难度提高+/省选- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 这题有毒 抄题解棒责五十! ...
- callee返回正被执行的Function对象
arguments.length是实参长度, arguments.callee.length是形参长度. function fn(a, b, c, d) { console.log(arguments ...
- HDOJ-1671 Phone List
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- 【HDOJ5996】dingyeye loves stone(Nim游戏)
题意:dingyeye喜欢和你玩石子游戏.dingyeye有一棵n个节点的有根树,节点编号为0到n−1,根为0号节点. 游戏开始时,第i个节点上有a[i]个石子.两位玩家轮流操作,每次操作玩家可以选择 ...
- .NET设计模式系列文章《转》
原文发布时间为:2008-11-02 -- 来源于本人的百度文章 [由搬家工具导入] http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911 ...
- 修复Kaos的中文显示
前段时间为了尝鲜KDE5,于是安装了Kaos 2015.2,默认的kde5桌面,速度也不错,软件更新很及时,计划淘汰掉chakra算了,一直中文在终端下显示为乱码,经网上搜索整理记录如下: (1)使用 ...
- hdu 4970 树状数组 “改段求段”
题意:塔防.给1--n,给出m个塔,每个塔有攻击力,给出k个怪兽的位子和血量,问有几只可以到达n点. 今天刚刚复习了树状数组,就碰到这个题,区间更新.区间求和类型.第三类树状数组可以斩. 注意一下大数 ...