Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统
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高可用-搭建千万级网站系统相关推荐
- nginx 反向代理负载均衡 tomcat集群应用
nginx 反向代理负载均衡 tomcat集群应用 环境介绍: 系统:centos5.8_64 192.168.0.201:nginx服务器 192.168.0.202:tomcat服务器 192.1 ...
- Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)
摘要:随着网站的访问量越来越多,所以就考虑给网站增加服务器了,现在比较流行的做法就是给网站做集群环境,下面我把我做的过程记录一下,方便日后查看,同时也希望可以帮助到有需要的朋友! 一:首先是环境: 1 ...
- Nginx反向代理 负载均衡sky
Nginx服务部署 Nginx简介 Nginx (engine x) 是一个轻量级的.高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗 ...
- Nginx 反向代理 负载均衡 虚拟主机
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- 基于nginx的tomcat负载均衡和集群(超简单)
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群t ...
- php 集群 session共享,Session共享:php和redis集群如何实现Session共享
本篇文章给大家带来的内容是关于Session共享:php和redis集群如何实现Session共享,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.redis 数据库集群安装软件版 ...
- Nginx反向代理负载均衡虚拟主机动静分离UrlRewrite防盗链
文章目录 1. Nginx简介 1.1 Nginx背景 1.2 Nginx的优点 1.3 Nginx的功能特性及常用功能 2.Nginx安装 2.1 下载上传解压 1.2 安装 3.nginx核心概念 ...
- Nginx 反向代理 负载均衡 动静分离 高可用 原理
1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...
- Nginx 反向代理+负载均衡
一.Nginx 的引入背景 ● 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户. 用户少, ...
最新文章
- Android 快速选择联系人
- 为什么面试官总喜欢问String?
- 关于Dockerfile那些事: 基础镜像的坑
- tp5设置session有效期
- python无人机路径规划算法_快速拓展随机树(RRT)路径规划,python
- swing tree 去掉双击默认展开 关闭_如何保护自己的电脑,关闭危险端口(一)
- 深入理解前端跨域问题的解决方案——前端面试
- CountDownLatch详解
- 缓存击穿 穿透 雪崩_缓存雪崩、缓存穿透、缓存击穿的问题
- 【预测模型】基于BP神经网络预测股票matlab代码
- 极米旗舰级新品极米H5强势来袭:画质性能在线,硬核配置拉满
- 多传感器融合定位 第七章 基于滤波的融合方法
- 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统
- css将商品加入购物车,vue实现点击商品加入购物车动画
- windows系统背景淡绿护眼色设置
- 大学计算机基础贾宗璞答案,大学计算机应用基础C教学大纲
- Java版本kafka-clients的介绍
- 奇瑞汽车召回部分瑞虎3xe纯电动汽车 共计8580辆
- c语言极限方法求e方法,极限值确定函数式中参数的求解方法.pdf
- UCOS-II学习文档
热门文章
- Spring的bean加载流程
- Error:java: Compilation failed: internal java compiler error(直译:错误:java:编译失败:内部java编译器错误 )
- js中includes()、indexOf()、search()、match()几种方法的区别
- 基于FullCalendar插件的简单个人日程安排系统(3)
- 2023年常见的20道JavaScript面试题及其答案解析,你知道多少
- KindEditor 编辑器在springboot使用
- kindeditor html5 播放,kindeditor编辑器,视频不显示,视频格式embed改成video
- MySql中的自动编号
- XSS漏洞分类及危害
- 关于数据库服务质量的问卷调研设计