nginx+keepalived高可用性负载均衡

一、前言
nginx进程基于于Master+Slave(worker)多进程模型,自 身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存 活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。
Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件lb方案。
二、nginx+keepalived架构实战
采用两台服务器做nginx主备,后端采用两个realserver(可以随意扩展),数据库采用mysql主从(这里就不说主从的配置了!)
1、 架构图如下:
Server 
ip
nginx master 
192.168.1.108
nginx backup
192.168.1.110
vip
192.168.1.100
real server1
192.168.1.105
real server2
192.168.1.103
2、 安装配置
(1)、安装keepalived(在nginx的mater和backup都安装)
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cd /etc/keepalived/
配置nginx master的keepalived配置文件
[root@zhang1 keepalived]# cat /etc/keepalived/keepalived.conf
bal_defs {
notification_email {
jimo291@gmail.com
}
notification_email_from jimo291@gmail.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id test1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass 123
}
virtual_ipaddress {
192.168.1.100
}
}
配置nginx backup的keepalived配置文件
[root@zhang1 keepalived]# cat /etc/keepalived/keepalived.conf
bal_defs {
notification_email {
jimo291@gmail.com
}
notification_email_from jimo291@gmail.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id test2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass 123
}
virtual_ipaddress {
192.168.1.100
}
}
启动keepalived!,查看虚拟IP是否绑定!
[root@zhang1 ~]# /etc/rc.d/init.d/keepalived start
Starting keepalived:                                       [ OK ]
[root@zhang1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:65:b4:ed brd ff:ff:ff:ff:ff:ff
inet 192.168.1.108/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.100/32 scope global eth0
inet6 fe80::20c:29ff:fe65:b4ed/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:65:b4:f7 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
红色部分显示IP已经加载过来了!
3、 nginx的安装和配置
1、创建供Nginx使用的组和帐号:
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
2、编译安装rewrite模块支持包
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
tar zxvf pcre-7.7.tar.gz
cd pcre-7.7/
./configure
make && make install
cd ../
3、编译安装Nginx
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_flv_module
make && make install
cd ../
4、备份默认nginx.conf配置文件
mv /usr/local/nginx/conf/nginx.conf  /usr/local/nginx/conf/nginx.old
5、配置nginx(两个nginx配置一样!)
[root@linux4 keepalived]# cat /usr/local/nginx/conf/nginx.conf
userwww     www;
worker_processes 8;
pid/var/run/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections      5120;
}
http
{
include           mime.types;
default_type application/octet-stream;
charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush         on;
keepalive_timeout 60;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers         4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types           text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream srtweb {
server 192.168.1.105:80;
server 192.168.1.103:80;
}
server {
listen 80;
server_name www.carl.com;
location /{
proxy_pass      http://srtweb;
proxy_set_header Host   $host;
proxy_set_header X-Real-IP      $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
4、 测试
首先单独对nginx测试看是否工作正常,(更改hosts文件来测试!)
其次对keepalived进行测试,停掉nginx master上的keepalived,看backup服务器是否接管!

本文出自 “第三方” 博客,请务必保留此出处http://2526575.blog.51cto.com/2516575/592218

转载于:https://www.cnblogs.com/hnlihao/p/3547445.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

白发变黑有诀窍

白发变黑发的有效方法 1、要远离焦虑&#xff1a; 如果天天的忧愁、烦恼、焦虑&#xff0c;则可能引起脱发&#xff0c;焦虑压抑的时间越长&#xff0c;脱发就会迅速的加快。不管工作如何忙碌&#xff0c;建议女性保持适当的运动量以及愉快的心情&#xff0c;头发也会富有光…

经典监督学习方法

生成算法尝试去找这个数据到底是怎么生成的&#xff08;产生的&#xff09;&#xff0c;然后再对一个信号进行分类。基于你的生成假设&#xff0c;哪个类别最有可能产生这个信号&#xff0c;这个信号就属于那个类别。 判别模型不关心数据是怎么生成的&#xff0c;它只关心信号之…

Map 集合循环、遍历的 四 种方式

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 package cn.jdbc.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry;/…

Ubuntu版本更新一路走来:朕就是这样的汉子

今日&#xff0c;Ubuntu发布了最新的14.04版本。当然&#xff0c;业界对新版Ubuntu褒贬不一&#xff0c;为此我们回顾了Ubuntu版本更新历史上几个比较有代表性的版本&#xff0c;看看Ubuntu这一路走来究竟有什么变化。Ubuntu刚刚发布了最新的14.04版本&#xff0c;围绕这一版本…

「2019纪中集训Day7」解题报告

T1、小L的数列 给一个数列 \(\{f_i\}\)&#xff1a;\[ f_i \prod_{j 1}^{j \leq k} f_{i - j}^{b_j}, \ (i > k) \] 现在给定数列的前 \(k \ (k \le 200)\) 项及 \({b_i}\)&#xff0c;求第 \(n\) 项。 \(Sol\)&#xff1a; 注意到数列的任意一项 \(f_i \ (i > k)\)&am…

我想拥有一座庄园:“ 暮春三月,江南草长,杂花生树,群莺乱飞 ... ”

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 // 或许这个心愿是缘于少时读的诗&#xff1a;其中大多是对于自然的期许和神往 ... // 亦或许是想太多的人大多都有这样的心愿 ... 我想…

安装Ubuntu 14.04后要做的5件事情

Ubuntu最新版本Ubuntu 14.04已经发布&#xff0c;它是一个长期支持版本&#xff08;LTS&#xff09;&#xff0c;提供软件包和安全更新的服务周期为5年。本文为大家简单介绍了Ubuntu 14.04版本新特性和安装Ubuntu 14.04后需要做的5件事情&#xff0c;以供参考。Ubuntu目前是世界…

昨天,我的大学学习[2]

昨天&#xff0c;我的大学学习[2] 曾毅 谁能改变我的命运[大学二年级] 如果说大学一年级的时候是一种被动学习状态&#xff0c;对计算机科学不能揽其全貌&#xff0c;那么进入大学二年级以后的学习便是比较有针对性的了&#xff0c;但这种转变并非偶然&#xff0c;同样也是经过…

VUE 项目 去除 input 框值 所有空格、vue 组件去除空格、input 去除空格

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.以下所有方法 我都试过&#xff1a;不行。 str.trim(); //去掉首尾空格 str.replace(" ",""); //去除所有空格&…

性能优化之节流、防抖

1. 防抖&#xff1a; 由于dom操作极其昂贵&#xff0c;所以尝试过多的dom操作有可能会将浏览器搞崩溃&#xff0c;比如onresize、onscroll这类事件操作&#xff1b;为了解决这个问题&#xff0c;引出防抖的概念&#xff08;某些代码不可以在没有间断的情况下连续重复执行&#…

百万用户规模的系统如何扩展

摘要&#xff1a;系统扩展一直是个让人头疼的事情&#xff0c;MatinKleppmann通过本文分享了他自己的6条经验&#xff0c;外加网友的一条建议&#xff0c;这些经验对于扩展Twitter这样规模的系统或许帮助不大&#xff0c;但是对于百万用户级别的系统扩展就另当别论了。 【编者…

springboot 项目输出 sql 到控制台、 SpringBoot 中 Mybatis 打印 sql

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 SpringBoot中Mybatis打印sql 如果使用的是 application.properties 文件&#xff0c;加入如下配置&#xff1a; logging.level.com.ex…

JS流程图解决方案GoJS

GoJs简介 一个实现交互类图表&#xff08;比如流程图&#xff0c;树图&#xff0c;关系图&#xff0c;力导图等等&#xff09;的JS库 GoJS依赖于HTML5&#xff0c;所以请保证您的浏览器版本支持HTML5&#xff0c;当然还要加载这个库。 首先个人建议先下载官方实例的 离线版本【…

VUE.JS 组件化开发实践

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言 公司目前制作一个H5活动&#xff0c;特别是有一定统一结构的活动&#xff0c;都要码一个重复的轮子。后来接到一个基于模板的活动…

Space Time Varying Color Palette

PDF Space Time Varying Color Palettes from Bo Zhou转载于:https://www.cnblogs.com/Jedimaster/p/4941857.html

提升开发效率的十个工具

Git 之前也有过不少版本控制的工具。有好的&#xff0c;也有糟糕的。不过它们都或多或少地误入歧途了。 这时候Git出现了。一旦你用上了这个神奇的工具&#xff0c;很难相像你还会碰到比它更好的了。 还没用过Git&#xff1f;试一下吧。 Stack Overflow 真的&#xff0c;我没…

Virtual Villagers 攻略

和大家分享一下这个游戏的攻略心得,希望对大家有帮助~~Puzzle 1 清洁水井&#xff08;难度&#xff1a;简单&#xff09;将一个拥有Building技能的村民拖到水井上就可以了。Puzzle 2 房屋建设&#xff08;难度&#xff1a;简单&#xff09;一开始会由一个掌握Building技能的村民…

input 框 去掉下面的提示文字、提示选项

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我的一个输入框总是有提示文字&#xff1a; 2. 去掉方法&#xff0c;给 input 加一个属性&#xff1a; autocomplete"off"…

科学合理的减肥

1、科学安排一日三餐    在正常生理情况下&#xff0c;一般人习惯于一日三餐。人体最大消耗是在一天中的上午。由于胃经过一夜消化早已排空&#xff0c;如果不吃早饭&#xff0c;那么整个上午的活动所消耗的能量完全要靠前一天晚餐提供&#xff0c;这就远远不能满足营养需要。…

解决: VUE 项目中表单提交中文乱码、接口请求参数中文乱码

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 表单提交出现乱码&#xff1a; 接口请求乱码同于上图。 2. 解决&#xff1a; 在出现乱码的内容外面加函数&#xff1a;decodeURI()…