nginx的高可用解决方案

keepalive 是 VRRP 协议的完美实现, 通过vip(虚拟ip)来实现主从双击热备, 自动切换的高可用方案, nginx的主从是通过keepalived实现的

通过权重进行主从切换的

keepalived 是为ipvs开发的, 会自动执行健康检查, 如果需要给其他服务提供高可用, 需要舍弃健康检查, 并自己手写检查脚本添加到vrrp中

通常部署在2台服务器上, 一主一备, 一旦master检测出问题, 将自己切换为backup状态, 并通知另一个为master, 通过切换VIP实现

http://www.keepalived.org

1, 安装keepalived, 多台nginx的服务器上分别安装

yum install keepalived

也可以通过本地安装包进行安装

最新版本 Version 2.0.6

$ wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
$ tar -zxvf keepalived-1.2..tar.gz

$ cd keepalived-1.2.
$ ./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.-573.8..el6.x86_64
$ make && make install
$ ln -s /usr/local/sbin/keepalived /sbin/

最后创建软连接是为了, service keepalived start 进行启动

配置开机启动: 目录可能不对, 在1.2.15的基础上直接修改的, 没有试验

cp /usr/local/sbin/keepalibed/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
cp /usr/local/src/keepalived/etc/sysconfig/keepalived /etc/sysconfig
dhmod +x /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on

2, 修改keepavlied配置

修改keepalived.conf

主机:

# 全局配置
global_defs {
notification_email {
test@.com  # 发送的邮箱
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout
router_id LVS_MASTER
}
vrrp_script chk_http_port {
script "/home/keepalived/check_nginx_pid.sh"
interval #(检测脚本执行的间隔)
weight 2      # 权重
}
# 虚拟冗余luyou
vrrp_instance VI_1 {
#state MASTER
state BACKUP
nopreempt
#设置非抢占模式时,修改“state MASTER”为“state BACKUP”,添加“nopreempt“
interface bond0  # 网卡名
virtual_router_id 51  # 在一个网络中唯一
priority 100      # 优先级
advert_int 1      # 出问题, 优先级减少
authentication {
auth_type PASS  # 心跳设置
auth_pass
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {  # 虚拟ip地址
192.168.208.126    # 多个虚拟ip换行即可
}
}

从机配置:

global_defs {
notification_email {
test@.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout
router_id LVS_BACKUP
}
vrrp_script chk_http_port {
script "/home/keepalived/check_nginx_pid.sh"
interval #(检测脚本执行的间隔)
weight 2    # 权重, 从机可以小一点
}
vrrp_instance VI_1 {
state BACKUP
interface bond0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.208.126
}
}

主机和从机的配置值在权重上有所差别, 别的都一样, 另外看了一些博客好多配置的权重都一样, 没有测试

3, vim /etc/keepalived/keepalived.conf

或者拷贝过来:

cp $KEEP_HOME/etc/keepalived/keepavlied.conf /etc/keepalived/
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
/usr/local/nginx/sbin/nginx
sleep
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
killall keepalived
fi
fi

4, 绑定虚拟ip, 就可以了

由于时间太久, 这次做补充, 没有找到原始的文档!!!!! 根据自己的vip进行修改

https://blog.csdn.net/huoyuanshen/article/details/68483188

ifconfig eth0: 166.111.69.100 netmask 255.255.255.0 up

keepalive 相关参数说明:

 ! Configuration File for keepalived

global_defs {
notification_email {
admin@lvtao.net #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
}
notification_email_from admin@lvtao.net #设置邮件的发送地址
smtp_server 127.0.0.1 #设置smtp server地址
smtp_connect_timeout #设置连接smtp server的超时时间
router_id LVS_DEVEL #表示运行keepalived服务器的一个标识。发邮件时显示在邮件主题的信息
} vrrp_instance VI_1 {
state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
interface eth0 #指定HA监测网络的接口
virtual_router_id #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
priority #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
advert_int #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
10.0.0.148
}
} virtual_server 10.0.0.148 { #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
delay_loop #设置运行情况检查时间,单位是秒
lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法
lb_kind DR #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
persistence_timeout #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。
#有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。
#需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果50秒内没有执行任何操作,
#那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制
protocol TCP #指定转发协议类型,有TCP和UDP两种 real_server 10.0.0.137 { #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开
weight #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器
#分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源
TCP_CHECK { #realserver的状态检测设置部分,单位是秒
connect_timeout #表示3秒无响应超时
nb_get_retry #表示重试次数
delay_before_retry #表示重试间隔
connect_port
}
}
real_server 10.0.0.139 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}

7-nginx-keepalived配置主从双击热备的更多相关文章

  1. Nginx+keepalived 高可用双机热备(主从模式/双主模式)

    基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...

  2. haproxy/nginx+keepalived负载均衡 双机热备 邮件报警 实战及常见问题

    Haproxy 做http和tcp反向代理和负载均衡keepalived 为两台 Haproxy 服务器做高可用/主备切换.nginx   为内网服务器做正向代理,如果业务需求有变化,也可以部分替代 ...

  3. Nginx+keepalived 高可用双机热备(主从模式)

    环境:centos7.6 最小化安装 主:10.11.1.32 从:10.11.1.33 VIP:10.11.1.130 修改主节点主机名: hostnamectl set-hostname web_ ...

  4. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  5. keepalived配置主从备份

    keepalived配置主从备份   keepalived是一个用于做双机热备(HA)的软件,常和haproxy联合起来做热备+负载均衡,达到高可用. 运行原理 keepalived通过选举(看服务器 ...

  6. Mysql + keepalived 实现双主热备读写分离【转】

    Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论   架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...

  7. Jboss集群(五)--F5硬件负载均衡器双击热备 + Jboss集群终极实现

    BIG/IP利用定义在其上面的虚拟IP地址来为用户的一个或多个应用服务器提供服务.因此,它能够为大量的基于TCP/IP的网络应用提供服务器负载均衡服务.BIG/IP连续地对目标服务器进行L4到L7合理 ...

  8. 使用Keepalived配置主从热备实现Nginx高可用(HA)

    Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务 ...

  9. nginx:负载均衡实战(四)nginx+keepalived配置双机热备

    1.下载安装 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-.tar.gz 安装o ...

随机推荐

  1. Hibernate 注解和配置文件两种方法的对比(有实例)

    hibernate多对多形式(User类<---->Educate类) 1.基于注解的形式: User类: package com.ssh.entities; import java.ut ...

  2. Bad Day -- Daniel Powter

                                     Bad Day Bad Day (坏天气) 来自 Daniel Powter -- 2005年MTV欧洲音乐奖提名最佳新人, 出自专辑 ...

  3. Launch Google Map in Android / IOS Mobile

    <!--This only works in android mobile phone--><a href="geo:0,0?q=myaddress+encode)__&q ...

  4. Java-网络编程之-Internet地址

    在网络编程中,比较重要的部分,就是关于Internet地址的知识理解 连接到Internet的设备我们成为节点(node),而计算机节点我们称为主机(host),要记住每个node或者host,至少一 ...

  5. paxos ---学习笔记

    摘自维基百科:分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing).基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程 ...

  6. 一个初学者的指南,使用D3做数据绑定

    一个初学者的指南,使用D3做数据绑定 D3.js 是个强大的数据可视化库,可以做出惊艳的图表.比如:气泡图,线图和条形图--只需要很少行的代码 随着初学者对JavaScript的理解,可以将数组或者对 ...

  7. LeetCode139:Word Break

    题目: Given a string s and a dictionary of words dict, determine if s can be segmented into a space-se ...

  8. 【加密算法】3DES

    一.简介 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算 ...

  9. WebService 工作原理及实例教程

    一.WebService到底是什么? 先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统 ...

  10. python+pcap+dpkt 抓包小实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 """ imp ...