Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构

1、安装Nginx

安装机器IP地址为:

192.168.91.129 (主)

192.168.91.130(备)

192.168.91.199(虚拟IP)

1.1首先Nginx需要gcc,pcre,zlib,openssl 第三方库支持(主,备服务器都安装Nginx,Keepalived)

首先使用yum安装依赖的第三方库

yum install -y gcc

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install -y openssl openssl-develplain

1.2 下载Nginix安装包(我这边下载的是nginx-1.8.1.tar.gz)

下载地址:http://nginx.org/en/download.html

1.3 编译安装Nginx

在根目录新建目录/soft ,并且在此目录下解压nginx-1.8.1.tar.gz

解压命令:

tar -zxvf nginx-1.8.1.tar.gz

编译安装Nginx:

cd /soft/nginx-1.8.1

./configure

make

make install

此时Nginx安装完毕,安装目录为/usr/local/nginx/

cd /usr/local/nginx/

启动Nginx服务

./sbin/nginx

关闭Nginx服务

./sbin/nginx -s stop

此时访问默认端口为80,http://192.168.91.129/

此时可以看到Nginx欢迎页面

有些童鞋可能访问不到,这时候你必须查看你的防火墙是否开启,开启你需要打开关闭防火墙,或者添加防火墙规则

第一种方案关闭防火墙(不建议):

查看防火墙状态

service iptables status

关闭防火墙

service iptables stop

第二种方案增加防火墙规则(建议):

这里的80是nginx默认端口

iptables -A INPUT -p tcp --dport 80   -j ACCEPT

service iptables save

service iptables restart

2、安装Keepalived

首先画一下流程图,帮助大家更好的理解Keepalived的作用。

2.1如图主机正常情况。

2.2如图主机宕机情况,备机接管服务。

·

正常情况下,主nginx作为反向代理服务器即可,假设nginx服务器挂了的话,能够立即切换到备份机上,保证用户可以访问,然后运维人员把主nginx服务器故障修好之后,又能够自动切换到主nginx提供服务。通过keepalived来监测两台服务器,正常情况时,将nginx主服务器ip(192.168.91.129)绑定到keepalived定义的一个虚拟ip(我设置为192.168.91.199)上,通过这个虚拟IP可以访问nginx,然后备机(192.168.91.130)啥事不干,就是每隔一小段时间(设置为1秒)keepalived会告诉备机,你不用管,我还活着呢,如果突然主机死了,那么就会超过一秒备机没有收到主机或者的消息,那么备机马上接管主机,keeplived将虚拟ip绑定到备机身上,网站继续提供服务。

突然主机又复活了(运维人员排除故障了),那么备机又将收到主机的活着的消息,于是将管理权交回给主机,虚拟ip又绑到主机上,大概就是这么个过程,个人理解。

首先在两台Nginx上安装Keepalived,我们这里选用rpm安装方式,当然你可以选择其他的安装方式。只要配置文件更改就可以了。

下载 keepalived-1.2.13-5.el6_6.x86_64.rpm

keepalived依赖openssl,上述我们已经使用yum安装完毕,如果上述未安装openssl请自行下载

keepalived-1.2.7-3.el6.x86_64.rpm

并且现行安装,命令如下:

rpm –Uvh --nodeps ./openssl-1.0.1e-30.el6_6.4.x86_64.rpm

接下来安装keepalived,命令如下:

rpm –Uvh --nodeps ./keepalived-1.2.13-5.el6_6.x86_64.rpm

安装完毕以后在/etc/keepalived/会出现keepalived.conf配置文件

更改其中两段配置,其他的不用管暂时用不到,192.168.91.129(主)的配置文件如下:

global_defs {

notification_email {

#这里指定,遇到故障发送邮件的

luojie@1foli.com

}

notification_email_from caohuayang@1foli.com

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

#主机是MASTER,备机是BACKUP

state MASTER

#这里绑定网卡一般为网卡0

interface eth0

#同一实例下,virtual_router_id必须相同

virtual_router_id 51

#这里表示权重,主机为100,备机最高为99

priority 100

#主备机相互检测的时间间隔,单位为秒,这里设置一秒钟

advert_int 1

#认证设置

authentication {

#主从服务器验证方式,这里PASS为明文

auth_type PASS

#密码

auth_pass 1111

}

virtual_ipaddress {

#这里为虚拟IP

192.168.91.199

}

}

更改其中两段配置,其他的不用管暂时用不到,192.168.91.130(备)的配置文件如下:

global_defs {

notification_email {

luojie@1foli.com

}

notification_email_from caohuayang@1foli.com

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.91.199

}

}

配置完Keepalived,这里启动Keepalived。

启动

service keepalived start

关闭

service keepalived stop

这里两台机器启动Keepalived

查看一下两台机器信息,主服务器如下:

[root@localhost keepalived]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

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 state UP qlen 1000

link/ether 00:0c:29:20:29:a1 brd ff:ff:ff:ff:ff:ff

inet 192.168.91.129/24 brd 192.168.91.255 scope global eth0

inet 192.168.91.199/32 scope global eth0

inet6 fe80::20c:29ff:fe20:29a1/64 scope link

valid_lft forever preferred_lft forever

3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN

link/ether be:0d:e9:32:77:00 brd ff:ff:ff:ff:ff:ff

备用服务器

[root@localhost keepalived]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

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 state UP qlen 1000

link/ether 00:0c:29:e8:b5:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.91.130/24 brd 192.168.91.255 scope global eth0

inet6 fe80::20c:29ff:fee8:b5e2/64 scope link

valid_lft forever preferred_lft forever

3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN

link/ether c2:ee:84:44:8d:48 brd ff:ff:ff:ff:ff:ff

这里我们可以看到,主服务器上面 inet 192.168.91.199/32 scope global eth0这里显示我们的虚拟ip绑定成功,而备用服务器没有绑定虚拟IP。我们通过访问虚拟IP访问我们后端的服务。

上面显示one,访问的是我们的主服务器192.168.91.129

我们这边测试Keepalived是否生效,我们关闭主服务器的Keepalived,或者关闭服务器。

这里瞬间跟改为two,访问的是我们备机。我们看看备机的网卡信息

[root@localhost keepalived]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

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 state UP qlen 1000

link/ether 00:0c:29:e8:b5:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.91.130/24 brd 192.168.91.255 scope global eth0

inet 192.168.91.199/32 scope global eth0

inet6 fe80::20c:29ff:fee8:b5e2/64 scope link

valid_lft forever preferred_lft forever

3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN

link/ether c2:ee:84:44:8d:48 brd ff:ff:ff:ff:ff:ff

这里备机已经获取到虚拟IP地址

当然实践过程我们会遇到脑裂等问题,这些问题不在这节讨论范围内后续补充。

然后我们后续做的操作就是要保证Nginx与Keepalived要保持共存亡的,这些可以写shell脚本,相互扫描。

这里的tomcat安装,与通过nginx访问tomcat不叙述。

通过nginx访问多台tomcat会遇到session共享的问题,请参考

http://blog.csdn.net/u013381397/article/details/51565288这篇文章。

Redis集群Twemproxy请参考另外一篇文章 http://blog.csdn.net/u013381397/article/details/72472521

Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统相关推荐

  1. nginx 反向代理负载均衡 tomcat集群应用

    nginx 反向代理负载均衡 tomcat集群应用 环境介绍: 系统:centos5.8_64 192.168.0.201:nginx服务器 192.168.0.202:tomcat服务器 192.1 ...

  2. Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)

    摘要:随着网站的访问量越来越多,所以就考虑给网站增加服务器了,现在比较流行的做法就是给网站做集群环境,下面我把我做的过程记录一下,方便日后查看,同时也希望可以帮助到有需要的朋友! 一:首先是环境: 1 ...

  3. Nginx反向代理 负载均衡sky

    Nginx服务部署 Nginx简介 Nginx (engine x) 是一个轻量级的.高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗 ...

  4. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  5. 基于nginx的tomcat负载均衡和集群(超简单)

    今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群t ...

  6. php 集群 session共享,Session共享:php和redis集群如何实现Session共享

    本篇文章给大家带来的内容是关于Session共享:php和redis集群如何实现Session共享,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.redis 数据库集群安装软件版 ...

  7. Nginx反向代理负载均衡虚拟主机动静分离UrlRewrite防盗链

    文章目录 1. Nginx简介 1.1 Nginx背景 1.2 Nginx的优点 1.3 Nginx的功能特性及常用功能 2.Nginx安装 2.1 下载上传解压 1.2 安装 3.nginx核心概念 ...

  8. Nginx 反向代理 负载均衡 动静分离 高可用 原理

    1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...

  9. Nginx 反向代理+负载均衡

    一.Nginx 的引入背景 ● 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户. 用户少, ...

最新文章

  1. Android 快速选择联系人
  2. 为什么面试官总喜欢问String?
  3. 关于Dockerfile那些事: 基础镜像的坑
  4. tp5设置session有效期
  5. python无人机路径规划算法_快速拓展随机树(RRT)路径规划,python
  6. swing tree 去掉双击默认展开 关闭_如何保护自己的电脑,关闭危险端口(一)
  7. 深入理解前端跨域问题的解决方案——前端面试
  8. CountDownLatch详解
  9. 缓存击穿 穿透 雪崩_缓存雪崩、缓存穿透、缓存击穿的问题
  10. 【预测模型】基于BP神经网络预测股票matlab代码
  11. 极米旗舰级新品极米H5强势来袭:画质性能在线,硬核配置拉满
  12. 多传感器融合定位 第七章 基于滤波的融合方法
  13. 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统
  14. css将商品加入购物车,vue实现点击商品加入购物车动画
  15. windows系统背景淡绿护眼色设置
  16. 大学计算机基础贾宗璞答案,大学计算机应用基础C教学大纲
  17. Java版本kafka-clients的介绍
  18. 奇瑞汽车召回部分瑞虎3xe纯电动汽车 共计8580辆
  19. c语言极限方法求e方法,极限值确定函数式中参数的求解方法.pdf
  20. UCOS-II学习文档

热门文章

  1. Spring的bean加载流程
  2. Error:java: Compilation failed: internal java compiler error(直译:错误:java:编译失败:内部java编译器错误 )
  3. js中includes()、indexOf()、search()、match()几种方法的区别
  4. 基于FullCalendar插件的简单个人日程安排系统(3)
  5. 2023年常见的20道JavaScript面试题及其答案解析,你知道多少
  6. KindEditor 编辑器在springboot使用
  7. kindeditor html5 播放,kindeditor编辑器,视频不显示,视频格式embed改成video
  8. MySql中的自动编号
  9. XSS漏洞分类及危害
  10. 关于数据库服务质量的问卷调研设计