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,一经查实,立即删除!

相关文章

经典监督学习方法

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

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

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

安装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;同样也是经过…

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

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

VUE.JS 组件化开发实践

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

提升开发效率的十个工具

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

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

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

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

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

大数据 — Hadoop

HDFS Hadoop 1.0: 3个组件&#xff1a; NamenodeSecondNamenodeDatanodenamenode&#xff08;主节点&#xff0c;master&#xff0c;只有一个&#xff0c;单点故障的风险&#xff09;中间存储信息&#xff08;元数据&#xff09; 2种映射关系&#xff1a; path -> blockid l…

VUE:兄弟组件间传参

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、定义一个中间 eventBus.js &#xff0c;只有 2 行代码&#xff0c;用于传参&#xff1a; // 此页面是vue 巴士&#xff0c;用于兄…

asp.net ajax的学习第一篇

自己理解的asp.net ajax的核心思想&#xff1a; javascript 调用web service <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />由于工作的原因&#xff0c;要在自己的网页上使用无刷新技术&#xff0c;增加客户体验。开始学习asp…

解决:No goals have been specified for this build. You must specify a valid lifecycle phase or a goal i

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行打包命令报错&#xff1a; No goals have been specified for this build. You must specify a valid lifecycle phase or a goa…

生成随机码,保存随机文件.

PrivateFunction GetRandomizeNo()Function GetRandomizeNo() As Integer 功能说明:生成随机验证码 Dim RandomizeNo As Integer Randomize() RandomizeNo 9999 * Rnd() 1000 If (RandomizeNo).ToString.Length > 5 Then R…

解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题&#xff0c;即在mybatis中dao接口与mapper配置…

Mac 远程命令工具

转载于:https://www.cnblogs.com/BrightMoon/p/4479375.html

OpenCL 第6课:矩阵转置

上一节我们写了个一维向量相加的程序。这节我们来看一个44矩阵转置程序。 4X4矩阵我们采用二维数组进行存储&#xff0c;在程序设计上&#xff0c;我们让转置过程分4次转置完成&#xff0c;就是一次转一行。注意这里的OpenCL的工作维数是二维。&#xff08;当然用一维的方式也…

OpenCL 第7课:旋转变换(1)

旋转是一个常用的处理功能。图片中所有的点以某一个点为轴&#xff0c;顺时或逆时方向旋转N个角度。我们利用OpenCL就可以对图片中所有的点进行并行转换&#xff0c;大大提高效率。 上两节中&#xff0c;我们编写了CL文件来传递数组的地址&#xff0c;这一节中我们会多加入几个…

WinForms多线程编程之摇奖程序

利用多线程模拟一个电脑摇奖程序&#xff0c;如图所示。在点击【滚动号码】&#xff0c;启动线程&#xff0c;对后台的电话号码进行循环显示&#xff1b;点击【开奖】按钮&#xff0c;关闭线程&#xff0c;此时显示在文本框中的电话号码即为中奖号码 using System;using System…

idea 版本控制忽略文件、文件夹设置

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 setting 中&#xff1a; 或者底部的 设置 忽略某个文件 后面选择框可以去选择 忽略某个文件夹 后面选择框可以去选择 忽略某种文件 后面…