nginx session共享_Centos下实现nginx负载均衡
一、基本思路
网络拓扑图
1.利用nginx实现负载均衡和反向代理,减轻主服务器访问压力;
2.利用springboot实现多tomcat的session共享;
IP角色
192.168.0.170nginx(主)服务器、Tomcat服务器
192.168.0.171nginx(从)服务器、Tomcat服务器
二、安装Tengine(Nginx)并添加服务
1.Tengine简介
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
2.Tengine下载
http://tengine.taobao.org/download.html下载对应的Tengine版本
3.安装nginx对应的依赖库
yum -y install gcc openssl-devel pcre-devel zlib-devel
4.解压缩Tengine到相对应的文件夹
tar -zxvf 到相对应的文件夹
5.配置nginx对应的选项
./configure
6.安装Tengine
make & make install
7.添加nginx到服务并设置自启动
vi /lib/systemd/system/nginx.service --添加文件
---------------------添加以下代码----------------------------
[Unit]Description=The nginx HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target
# 修改文件权限
cd /lib/systemd/system/
chmod 745 nginx.service
# 设置为开机启动 systemctl enable nginx.service
# 启动nginx服务 systemctl start nginx.service
# 设置开机自启动 systemctl enable nginx.service
# 停止开机自启动 systemctl disable nginx.service
# 查看服务当前状态 systemctl status nginx.service
# 重新启动服务 systemctl restart nginx.service
# 查看所有已启动的服务 systemctl list-units --type=service
8.启动Nginx服务,浏览输入http://192.168.0.170如出现nginx相应画面标识安装成功,nginx默认端口80
三、安装Keepalived并添加服务
1.keepalived下载
下载方式一:
https://www.keepalived.org/download.html下载最新稳定版的keepalived,ftp上传到home目录下
yum install -y gcc gcc-c++ openssl-devel 安装依赖库,如已经安装可不比进行此操作
下载方式二:
wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz
2.解压缩keepalived文件
进入到home目录先
cd /home
tar -zxvf keepalived-2.0.19.tar.gz
3.检查配置
cd keepalived-2.0.19
./configure --prefix=/usr/local/keepalived
若系统出现如下警告
“*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.”
yum -y install libnl libnl-devel 执行此命令,重新进行./configure --prefix=/usr/local/keepalived 操作
4.安装
make & make install
5.配置keepalived服务
mkdir -p /etc/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp keepalived/etc/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived
vi /lib/systemd/system/keepalived.service 编辑keepalived服务文件
将所有的字符串 “/usr/local/keepalived” 替换为空白,替换完如下:
----------------------------------------------------------------------------------------------------------------------------
[Unit]Description=LVS and VRRP High Availability MonitorAfter=network-online.target syslog.targetWants=network-online.target[Service]Type=forkingPIDFile=/run/keepalived.pid#KillMode=processEnvironmentFile=-/etc/sysconfig/keepalivedExecStart=/sbin/keepalived $KEEPALIVED_OPTIONSExecReload=/bin/kill -HUP $MAINPID[Install]WantedBy=multi-user.target
systemctl daemon-reload 重读配置
6.修改keepalived.conf
vi /etc/keepalived/keepalived.conf
------------------------------------------------按照以下代码修改(master服务器192.168.0.170)------------------
! Configuration File for keepalivedglobal_defs {## keepalived 自带的邮件提醒需要开启 sendmail 服务。 建议用独立的监控或第三方 SMTProuter_id tdrc ## 标识本节点的字条串,通常为 hostname} ## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径interval 2 ## 检测时间间隔weight -20 ## 如果条件成立,权重-20}## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称vrrp_instance VI_1 {state MASTER ## 主节点为 MASTER, 对应的备份节点为 BACKUPinterface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 eth0virtual_router_id 33 ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址mcast_src_ip 192.168.0.170 ## 本机 IP 地址priority 100 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s## 设置验证信息,两个节点必须一致authentication {auth_type PASSauth_pass 1111 ## 真实生产,按需求对应该过来}## 将 track_script 块加入 instance 配置块track_script {chk_nginx ## 执行 Nginx 监控的服务} ## 虚拟 IP 池, 两个节点设置必须一样virtual_ipaddress {192.168.0.180 ## 虚拟 ip,可以定义多个}}
----------------------------------------按照以下代码修改(slave服务器192.168.0.171)-----------------------------
! Configuration File for keepalivedglobal_defs {router_id tdrc}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 33mcast_src_ip 192.168.0.171priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.0.180}}
--------------------------------------------------------------------------------------------------------------------------
7. /etc/keepalived 下添加nginx_check.sh脚本
-----------------------------------------------master(slave)服务器下添加以下代码---------------------------------------
#!/bin/bashcounter=$(ps -C nginx --no-heading|wc -l)echo "$counter"if [ "${counter}" = "0" ]; then /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /etc/init.d/keepalived stop fifi
------------------------------------------------------------------------------------------------------------------
保存后,给脚本赋执行权限:
# chmod +x /etc/keepalived/nginx_check.sh
8.重启nginx和keepqlived
浏览器访问(VIP)192.068.0.180 或192.168.0.170 或192.168.0.171
四、Nginx配置多个应用
测试需提前在192.168.0.170和192.168.0.171上部署号相应的测试应用
vi /usr/local/nginx/conf/nginx.conf
htt{}中添加
upstream cluster {
# 服务器访问的路径,可以指定多个服务器,此处可根据需求配置单个或者多个应用服务器、负载均衡策略
server 192.168.0.170:8080 weight=1;
server 192.168.0.171:8080 weight=1;
}
server{}中添加
location / {
proxy_pass http://cluster;
root html;
index index.html index.htm;
}
五、实现多应用服务器session共享
测试应用采用的是springboot,springboot自带session注释,@EnableRedisHttpSession
部分内容参考自https://blog.csdn.net/qq_33200967/article/details/80707616
nginx session共享_Centos下实现nginx负载均衡相关推荐
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/888 ...
- Nginx——Session共享
文章目录 其他文章 1.Session共享 1.1.session 一致性解决方案 1.1.1.session 复制 1.1.2.共享 session 1.2.安装memcached 1.2.1. n ...
- tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡
首先:配置tomcat集群 nginx+ tomcat7 1 安装jdk (可以选择6或者7都可以) 此处不用多说. 2 下载nginx-1.2.5 (下载附件) 3 下载 memcached(下载附 ...
- NGINX配置基于Node.js服务的负载均衡服务器
NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...
- Nginx以及通过Nginx实现tomcat集群配置与负载均衡
Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1.RR(默认) 2.权重 3.ip_hash 4.fair(第三方) 5.url_h ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...
- Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...
Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fe ...
- nginx学习文档之二 配置负载均衡-windows配置负载均衡
#windows配置负载均衡 nginx+tomcat负载均衡的意思大概如下图: 所有请求先经过nginx服务器,然后由nginx服务器进行转发,将请求根据配置需要分发给指定的tomcat服务器 ## ...
最新文章
- Lecture 0 --基本说明
- python学哪个版本-我现在应该学习哪个版本的Python?哪个方向更好?
- getRectSubPix函数
- RDLC 报表的制作(图文)
- Android开发笔记(一百七十六)借助FileProvider发送彩信
- pytorch 对特征进行mean_Pytorch的mean和std调查实例
- TortoiseGit安装配置详解同时支持github,gitee,gitlab
- 代码之美~强大的构造方法重载
- javascript笔记—— call 简单理解
- matlab 2017安装教程
- CGLIB动态代理模式详解
- 正则表达式 Regular Express
- chan算法 matlab,TDOA定位的Chan算法MATLAB源代码
- Java修改图片元数据Exif信息
- Hbuilder安装及使用教程
- mysql 查询最近三个月的数据
- asus华硕 开启安全启动
- Docker容器无法启动,里面的配置文件如何修改
- 具有外内学习和单色瓶颈的图像修复——两阶段渐进式图像修复示例【CVPR 2021】
- [Android][设置最小(大)宽高]
热门文章
- 基于主成分分析与支持向量机的人脸识别
- 在布局空间标注的尺寸量不对_CAD图纸中标注值和实际测量值不一样怎么回事?...
- 数据分析如何从1进阶到10?
- 你知道 Sql 中 left join 的底层原理吗?
- 本地开发的 SAP UI5 应用,部署到 ABAP 服务器执行出错的问题分析
- SAP UI5 初学者教程之二十六 - OData 服务配合 Mock 服务器的使用步骤详解试读版
- SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
- 内容分发网络 CDN 体系中原始服务器 Original Server 的定义
- SAP Spartacus unit detail 页面显示后自动 focus 设置的原理
- 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用