一、基本思路

网络拓扑图

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负载均衡相关推荐

  1. nginx和tomcat实现反向代理、负载均衡和session共享

    这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/888 ...

  2. Nginx——Session共享

    文章目录 其他文章 1.Session共享 1.1.session 一致性解决方案 1.1.1.session 复制 1.1.2.共享 session 1.2.安装memcached 1.2.1. n ...

  3. tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

    首先:配置tomcat集群 nginx+ tomcat7 1 安装jdk (可以选择6或者7都可以) 此处不用多说. 2 下载nginx-1.2.5 (下载附件) 3 下载 memcached(下载附 ...

  4. NGINX配置基于Node.js服务的负载均衡服务器

    NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...

  5. Nginx以及通过Nginx实现tomcat集群配置与负载均衡

    Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1.RR(默认) 2.权重 3.ip_hash 4.fair(第三方) 5.url_h ...

  6. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...

  7. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  8. Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...

    Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fe ...

  9. nginx学习文档之二 配置负载均衡-windows配置负载均衡

    #windows配置负载均衡 nginx+tomcat负载均衡的意思大概如下图: 所有请求先经过nginx服务器,然后由nginx服务器进行转发,将请求根据配置需要分发给指定的tomcat服务器 ## ...

最新文章

  1. Lecture 0 --基本说明
  2. python学哪个版本-我现在应该学习哪个版本的Python?哪个方向更好?
  3. getRectSubPix函数
  4. RDLC 报表的制作(图文)
  5. Android开发笔记(一百七十六)借助FileProvider发送彩信
  6. pytorch 对特征进行mean_Pytorch的mean和std调查实例
  7. TortoiseGit安装配置详解同时支持github,gitee,gitlab
  8. 代码之美~强大的构造方法重载
  9. javascript笔记—— call 简单理解
  10. matlab 2017安装教程
  11. CGLIB动态代理模式详解
  12. 正则表达式 Regular Express
  13. chan算法 matlab,TDOA定位的Chan算法MATLAB源代码
  14. Java修改图片元数据Exif信息
  15. Hbuilder安装及使用教程
  16. mysql 查询最近三个月的数据
  17. asus华硕 开启安全启动
  18. Docker容器无法启动,里面的配置文件如何修改
  19. 具有外内学习和单色瓶颈的图像修复——两阶段渐进式图像修复示例【CVPR 2021】
  20. [Android][设置最小(大)宽高]

热门文章

  1. 基于主成分分析与支持向量机的人脸识别
  2. 在布局空间标注的尺寸量不对_CAD图纸中标注值和实际测量值不一样怎么回事?...
  3. 数据分析如何从1进阶到10?
  4. 你知道 Sql 中 left join 的底层原理吗?
  5. 本地开发的 SAP UI5 应用,部署到 ABAP 服务器执行出错的问题分析
  6. SAP UI5 初学者教程之二十六 - OData 服务配合 Mock 服务器的使用步骤详解试读版
  7. SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
  8. 内容分发网络 CDN 体系中原始服务器 Original Server 的定义
  9. SAP Spartacus unit detail 页面显示后自动 focus 设置的原理
  10. 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用