nginx + keepalived 双机热备
序
双机热备是指两台机器都在运行,但并非两台机器同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短。
keepalived的工作原理是VRRP——虚拟路由冗余协议。
测试环境如下:
ip |
vip |
|
master |
192.168.174.135 |
192.168.174.140 |
backup |
192.168.174.137 |
192.168.174.140 |
nginx
安装
sudo apt-get install nginx
查找配置文件位置
sudo find / -name nginx.conf
/etc/nginx/nginx.conf
修改配置文件(nginx.conf)
user www-data;
worker_processes ;
pid /run/nginx.pid; events {
worker_connections ;
} http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout ;
types_hash_max_size ; include /etc/nginx/mime.types;
default_type application/octet-stream; access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log; server {
listen default_server;
server_name test;
charset utf-; location / {
root html;
index index.html index.htm;
proxy_set_header X-Real_IP $remote_addr;
client_max_body_size 100m;
}
}
}
文件/usr/share/nginx/html/index.html
在192.168.174.135上加上 <h1>Welcome to nginx! 135 </h1>
在192.168.174.137上加上 <h1>Welcome to nginx! ***137*** </h1>
启动
sudo service nginx start
关闭
sudo service nginx stop
keepalived
安装
下载keepalived-1.2.19.tar.gz
tar –zxvf keepalived-1.2..tar.gz
cd keepalived-1.2.
./configure --prefix=/usr/local/keepalived
make
sudo make install
期间可能出现问题:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
解决
sudo apt-get install libssl.dev
建立软链接
sudo ln -s /usr/local/keepalived/sbin/keepalived /sbin/
sudo ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
sudo ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
启动
sudo keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf
关闭
sudo killall keepalived
配置(keepalived.conf):
global_defs {
router_id NODEA
} vrrp_instance VI_1 {
state MASTER
interface eth0 #监测网络接口
virtual_router_id #主、备必须一样
priority #优先级:主>备
advert_int
authentication {
auth_type PASS #VRRP认证,主备一致
auth_pass #密码
} virtual_ipaddress {
192.168.174.140/ #VRRP HA虚拟地址
}
}
备用节点的配置
global_defs {
router_id NODEB
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
} virtual_ipaddress {
192.168.174.140/
}
}
测试
双击热备
两台机子均启动nginx和keepalived,浏览器各自访问
浏览器访问:http://192.168.174.140/,显示的是MASTER的页面。
同样用ip appr可以验证:
135机器:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:39:d4:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.174.135/24 brd 192.168.174.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.174.140/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe39:d488/64 scope link
valid_lft forever preferred_lft forever
137机器:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:0c:29:cf:23:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.174.137/24 brd 192.168.174.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecf:2362/64 scope link
valid_lft forever preferred_lft forever
现在关闭135机器的keepalived。
但当nginx宕掉或整个机子宕机后,这种情况不行了——通过浏览器访问192.168.174.140访问不到资源。
nginx宕掉/机器宕掉热备
为了解决上一问题,可以利用脚本,当检测到nginx进程宕掉后,自动关闭keepalived进程,从而实现热备份。
主节点的配置
global_defs {
router_id NODEA
} vrrp_script chk_http_port {
script "/home/jimite/keepalived/chk_nginx_pid.sh"
interval
weight
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.174.140/
}
}
备用节点的配置
global_defs {
router_id NODEB
} vrrp_script chk_http_port {
script "/home/jihite/keepalived/chk_nginx_pid.sh"
interval
weight
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
chk_http_port
} virtual_ipaddress {
192.168.174.140/
}
}
其中/home/jimite/keepalived/chk_nginx_pid.sh为
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq ]
then
echo 'nginx server is died'
sudo killall keepalived
fi
问题:杀死keepalived进程后,可以实现vip的偏移,但是原机器的vip无法自动删除
nginx + keepalived 双机热备的更多相关文章
- 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双机热备环境?这是最全的一篇了!!
写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...
- Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+keepalived 双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+keepalived双机热备(默认路径安装)- 基础篇
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+Keepalived双机热备
一.Keepalived Keepalived是保证集群高可用的服务软件.网络中优先级高的节点为master负责响应VIP的ARP包,将VIP和MAC地址映射关系告诉网络内其他主机,还会以多播的形式向 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
随机推荐
- jQuery 实现带下拉提示且自动填充的邮箱
/* ** 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js ** Author:博客园小dee*/ 本文用 jQuery 实现一个用户输入字符时出现能够提示邮箱后缀名的下拉 ...
- Yii源码阅读笔记(三)
接着上次的继续阅读BaseYii.php vendor/yiisoft/yii2/BaseYii.php—— public static function getRootAlias($alias)// ...
- 挑战python
00 热身 http://www.pythonchallenge.com/pc/def/0.html import math print math.pow(2,38); # 274877906944 ...
- Oracle 数据库安装
下载 www.oracle.com ->Downloads -> Oracle Database 安装: 解压到同一文件夹下 仅安装数据库软件 单实例数据库安装 企业版 oracle基目录 ...
- PHP文件操作 之往一个文件写入数据
//打开一个文件 $f = fopen($filename,'wb'); $filename:打开一个文件,不存在则自动创建,如果不能创建,说明指定的文件目录有错误 wb:写入的方式 ---- 覆盖原 ...
- 20145317彭垚《Java程序设计》实验二
20145317<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- arch框架人员、组织说明
目前ERP辅助系统集成了三大模块功能,分别是财务辅助.物理辅助.报账平台. 财务辅助模块人员在ARCH_USER 表中进行管理,通过单独的[用户映射功能]将ARCH系统用户和ERP用户进行关联,关联信 ...
- phaser
phaser http://www.csdn.net/article/2015-10-08/2825865 https://github.com/gavinanderegg/coffeeQuest
- [dpdk] 读官方文档(2)
续前节.切好继续: 一,文档里提到uio_pci_generic, igb_uio, vfio_pci三个内核模块,完全搞不懂,以及dpdk-devbind.py用来查看网卡状态,我得到了下边的输出: ...
- iOS新建项目文件管理规范
当我们进入到新的公司的第一天,看到以前老员工编写的代码,找个东西累死人咧,那个抓耳挠腮的啊,一般情况下都有想揍人的赶脚. 哈哈,不忙,先想一下自己的代码!想一下自己写的代码怎么才能新来的人一眼就能看懂 ...