1、Nginx+keepalived 主从配置
这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

测试环境如下:

IP  VIP 角色
192.168.2.201 192.168.2.210 nginx+keepalived   MASTER
192.168.2.202 192.168.2.210 nginx+keepalived   BACKUP

2、Nginx+keepalived 双主配置

这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。

测试环境如下:

IP  VIP 角色
192.168.2.201 192.168.2.210

nginx+keepalived   

(MASTER+BACKUP)

192.168.2.202 192.168.2.220

nginx+keepalived   

(MASTER+BACKUP)

### 主从配置

一、安装nginx

1. 下载
  http://nginx.org/en/download.html

2. nginx 安装

./configure --prefix=/usr/local/nginx --sbin-path=/usr/bin/nginx

make && make install

3. 常用命令

3.1 启动
nginx 3.2关闭
nginx -s stop 3.3 重新启动
nginx -s reload

4. 查看

[root@Node201 nginx81]# ps -ef | grep nginx 

nginx默认配置启动成功后,会有两个进程,一个主进程(守护进程),一个工作进程。主进程负责管理工作进程,工作进程负责处理用户的http请求。


5. 开机启动

将/usr/bin/nginx命令添加到/etc/rc.d/rc.local文件中,rc.local文件会在系统启动的时候执行。但CentOS7建议将开机启动服务写成服务描述文件添加到系统服务中,rc.local默认没有执行权限,需要给它添加执行权限。

vim /etc/rc.d/rc.local
# 添加如下参数
/usr/bin/nginx # 授权
shell> chmod +x /etc/rc.d/rc.local

以上步骤,继续启动Node202的nginx。

二、安装keepalived

1. 下载
http://www.keepalived.org/download.html

2. 安装

[root@localhost keepalived-2.0.12]# yum -y install libnl libnl-devel 
[root@localhost keepalived-2.0.12]# pwd
/usr/local/keepalived-2.0.12
[root@localhost keepalived-2.0.12]# ./configure --prefix=/usr/local/keepalived
[root@localhost keepalived-2.0.12]# make && make install [root@localhost keepalived-2.0.12]# cd /usr/local/keepalived-2.0.12
[root@localhost keepalived-2.0.12]# cp keepalived/etc/init.d/keepalived /etc/init.d/ [root@localhost keepalived-2.0.12]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@localhost keepalived-2.0.12]# cd /usr/local/keepalived
[root@localhost keepalived]# mkdir /etc/keepalived #复制文件
[root@localhost keepalived]# cp etc/keepalived/keepalived.conf /etc/keepalived/

3. 添加检测nginx脚本

[root@Node201 keepalived]# vim /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx81 --no-header | wc -l`
if [ $A -eq 0 ];then
/usr/bin/nginx81 #尝试重新启动nginx
sleep 2 #睡眠2秒
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
fi
fi

4. 在201上修改 /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id Node201 #标识本节点的名称,通常为hostname
} ## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。 vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2 #每2秒检测一次nginx的运行状态
weight -20 #失败一次,将自己的优先级-20
} vrrp_instance VI_1 {
state MASTER # 状态,主节点为MASTER,备份节点为BACKUP
interface em1 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
virtual_router_id #虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
mcast_src_ip 192.168.2. # 本机IP地址
priority # 节点优先级,值范围0~254,MASTER要比BACKUP高
advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
nopreempt #非抢占模式使用 # 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
} # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
virtual_ipaddress {
192.168.2.210
} track_script {
chk_nginx # nginx存活状态检测脚本
}
}

5. 启动

[root@localhost keepalived]# systemctl start keepalived

6. 查看

[root@localhost keepalived]# ps -ef | grep keepalived


7. 将以上配置文件,拷贝到Node202,修改配置文件中红色对应部分

router_id Node202
state BACKUP
interface em1
mcast_src_ip 192.168.2.202
priority 90

然后启动keepalived。

  此时,在Node201上可以看到绑定了VIP(192.168.2.210),Node202上没有。

8. 故障模拟

8.1 停止Node1的nginx,此时由于脚本nginx_check.sh 的作用,nginx2s后会重启。

8.2 停止Node201上的keepalived

假如,此时将201的keepalived启动,201会重新成为master(因为当前是抢占模式)。

9. 抢占与非抢占模式

配置上区别:
1> 在vrrp_instance块下两个节点各增加了nopreempt指令,表示不争抢vip 
2> 非抢占模式两个节点的state都为BACKUP ,抢占模式是一个MASTER,BACKUP
两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟。

### 双主配置

双主模式下,需要添加新的VIP,即两个VIP,一共两个节点,每个节点各有一个自己的主VIP。

[root@Node201 keepalived]# pwd
/etc/keepalived 修改Node201配置文件keepalived.conf,添加如下类容: vrrp_instance VI_2 {
state BACKUP # 状态,主节点为MASTER,备份节点为BACKUP
interface em1 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
virtual_router_id #虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
mcast_src_ip 192.168.2.201 # 本机IP地址
priority # 节点优先级,值范围0~254,MASTER要比BACKUP高
advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
nopreempt # 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
} # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
virtual_ipaddress {
192.168.2.220
} track_script {
chk_nginx # nginx存活状态检测脚本
}
}
[root@Node202 keepalived]# pwd
/etc/keepalived 修改Node202配置文件keepalived.conf,添加如下类容: vrrp_instance VI_2 {
state MASTER # 状态,主节点为MASTER,备份节点为BACKUP
interface em1 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口
virtual_router_id #虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
mcast_src_ip 192.168.2.202 # 本机IP地址
priority 100 # 节点优先级,值范围0~254,MASTER要比BACKUP高
advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
nopreempt # 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
} # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
virtual_ipaddress {
192.168.2.220
} track_script {
chk_nginx # nginx存活状态检测脚本
}
}  
以上配置文件表示:192.168.2.210 作为Node201的主VIP,192.168.2.220 作为Node202的主VIP.

10.测试



  

 

nginx+keepalived高可用 (主从+双主)的更多相关文章

  1. nginx+keepalived高可用及双主模式

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

  2. nginx+keepalived高可用及双主模式【h】

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

  3. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  4. Nginx+keepalived(高可用双主模式)

    Nginx+keepalived(高可用双主模式) tips:前面已经介绍了nginx+keepalived高可用主从模式,今天补充下高可用的双主模式,均可以作为主机使用 server1:192.16 ...

  5. Nginx+keepalived(高可用主备模式)

    Nginx+keepalived(高可用主备模式) 环境:centos6.7 准备:两台服务器(虚拟机).两台应用(Tomcat).Nginx.keepalived server1:192.168.2 ...

  6. Centos7+nginx+keepalived集群及双主架构案例

    目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...

  7. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

  8. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  9. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

  10. nginx+keepalived 高可用方案

    nginx+keepalived 高可用方案 准备工作 192.168.157.11 192.168.157.12 安装nginx 跟新yum源文件 rpm -ivh http://nginx.org ...

随机推荐

  1. Java字符串无意识的递归

    Java中的每个类基本上都继承自Object,标准容器类自然也不例外.因此容器类都有toString()方法,并且重写了该方法,使得它生成的String结果能够表达容器本身,以及容器所包含的对象.例如 ...

  2. 【LeetCode】无重复字符的最长子串【滑动窗口法】

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

  3. [转帖]Reactor模式

    Reactor模式 https://www.cnblogs.com/crazymakercircle/p/9833847.html 看不懂代码 只看的图.. 疯狂创客圈,一个Java 高并发研习社群  ...

  4. Django组件之cookie、session

    一.cookie 1.1 产生背景 HTTP协议是无状态的,对服务器来说,每次的请求都是独立的.状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据 ...

  5. 微信小程序的登入与授权

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登录 小程序可以通 ...

  6. leetcode无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  7. 【LEETCODE】56、数组分类,适中级别,题目:62、63、1035

    package y2019.Algorithm.array.medium; /** * @ClassName UniquePathsWithObstacles * @Description TODO ...

  8. 如何将 Redis 用于微服务通信的事件存储

    来源:Redislabs作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的.松耦合的.可协同工作的独立逻辑业务服务会更易于构建和维护.这 ...

  9. IDEA远程DEBUG Tomcat配置

    IDEA远程DEBUG Tomcat配置 IDEA远程DEBUG Tomcat很简单,配置如下: 1.修改tomcat服务器配置 打开tomcat/bin/catalina.sh 在空白处添加如下参数 ...

  10. [winfrom]C#中使用SendMessage

    在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在C#中使用消息有时候还是 ...