实验拓扑图```

实验步骤:
一.做nginx和tomcat的代理
二.做keepalived+nginx的双机热备份,vip:192.168.10.100
三.做keepalived+redis的哨兵模式,vip:192.168.10.200
四.在tomcat上做会话保持实验环境:
Keepalived主+nginx101:192.168.10.1
Keepalived从+nginx102:192.168.10.2
Tomcat103:192.168.10.3
Tomcat104:192.168.10.4
Keepalived主+Redis主:192.168.10.5
keepalived从+Redis从1:192.168.10.6
Keepalived从+Redis从2: 192.168.10.7

1.两个tomcat主机都操作
①在两台tomcat服务器上都执行此操作,关闭防火墙,关闭selinux

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce  0

2.tomcat 10.3操作
①将tomcat7.0软件包和redis插件上传到服务器/usr/src目录下,解压tomcat包并移动tomcat到/usr/local/目录下并命名为tomcat

[root@localhost ~]# cd /usr/src/
[root@localhost src]# tar xzvf apache-tomcat-7.0.90.tar.gz
[root@localhost src]# mv apache-tomcat-7.0.90 /usr/local/tomcat

②新建test.jsp测试页到tomcat项目ROOT目录下,并启动tomcat服务

[root@localhost src]# vim /usr/local/tomcat/webapps/ROOT/test.jsp
-------------------------------写入test页面内容--------------------------
<html><body bgcolor="yellow"><center><%=  request.getSession().getId()  %><h1>192.168.10.3</h1><h1>port:8080</h1><h1>this is Tomcat-node1! </h1></center></body
</html><%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>
SessionID:<%=session.getId()%><BR>
SessionIP:<%=request.getServerName()%> <BR>
SessionPort:<%=request.getServerPort()%><%     out.println("This is Tomcat server 223 !");     %>
[root@localhost src]# /usr/local/tomcat/bin/startup.sh      #启动tomcat服务
[root@localhost src]# ss -tnl | grep 8080          #查看8080是否监听

3.tomcat 10.4操作
①将tomcat7.0软件包和redis插件上传到服务器/usr/src目录下,解压tomcat包并移动tomcat到/usr/local/目录下并命名为tomcat

[root@localhost ~]# cd /usr/src/[root@localhost src]# tar xzvf apache-tomcat-7.0.42.tar.gz
[root@localhost src]# mv apache-tomcat-8.5.42 /usr/local/tomcat

②新建test.jsp测试页到tomcat项目ROOT目录下,并启动tomcat服务

[root@localhsot src]# vim /usr/local/tomcat/webapps/ROOT/test.jsp-------------------------------写入test页面内容--------------------------<html>    <body bgcolor="red">    <center>    <%=  request.getSession().getId()  %>   <h1>192.168.10.4</h1>   <h1>port:8080</h1>    <h1>this is Tomcat-node2! </h1>   </center>   </body>
</html> <%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>SessionID:<%=session.getId()%><BR>SessionIP:<%=request.getServerName()%> <BR>SessionPort:<%=request.getServerPort()%><%     out.println("This is Tomcat server 224 !");     %>
    [root@tomcat-node2 src]# /usr/local/tomcat/bin/startup.sh   #启动tomcat服务[root@localhsot src]# ss -tnl | grep 8080

2.Nginx-master主机上操作内容
①使用yum方式安装Nginx和keepalived服务程序

[root@Nginx-master /]# yum install -y nginx keepalived

②配置nginx-master代理服务器,新建一个代理配置文件,检测nginx配置文件语法是否正确并启动Nginx服务

[root@Nginx-master /]# vim /etc/nginx/conf.d/nginx-master.conf

upstream tomcat {           #定义负载均衡列表
server 192.168.10.3:8080 max_fails=2 fail_timeout=2;  ##tomcat-node1       server 192.168.10.4:8080 max_fails=2 fail_timeout=2; ##tomcat-node2  #max_fails=2连续检测失败两次认为该节点不可用   ##fiil_timeout=2 每次检测超过2秒未响应为检测失败}server { listen 80;                  ##客户端访问的端口  server_name www.test.com;           ##绑定的域名location / { proxy_pass http://tomcat;           ##反代到负载均衡服务器列表  }}}
     [root@Nginx-master /]# nginx -t            #检测NGINX语法nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@Nginx-master /]# nginx           #启动NGINX服务

③配置Nginx-master的keepalived服务,修改keepalived配置文件,添加nginx健康检查脚本,启动keepalived服务

[root@Nginx-master /]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {             ##默认配置段
router_id nginx-proxy-master        ##定义设备名称
}
vrrp_script chk_ngx {               ##定义nginx服务状态检查规则
script "/etc/keepalived/scripts/chk_ngx.sh"   ##检查脚本的位置  interval 3               ##每3秒执行一次脚本检查   fail 2              ##连续失败2次就认定为状态检查失败  rasi 1                  ##只要成功1次就认定为成功   weight -2              ##检测失败本设备优先级减2}vrrp_instance nginx-proxy {          ##定义备份组实例    state MASTER               ##定义本设备在实例中的角色    interface ens33               ##vip要绑定的网卡    virtual_router_id 22         ##routeid,同一个组要一致    priority 100                ##本设备的优先级    advert_int 3               ##设备间每3秒进行一次心跳检测    authentication {                ##验证信息        auth_type PASS            ##验证类型        auth_pass nginx-proxy     ##验证的密码   }   virtual_ipaddress {                   192.168.10.100 dev ens33 label ens33:1  ##定义vip并设定一个网卡别名   }    track_script {        chk_ngx               ##调用nginx健康检查脚本    }   }

##新建nginx状态检查脚本

[root@Nginx-master /]# mkdir /etc/keepalived/scripts        ##创建脚本存放目录
[root@Nginx-master /]# vim /etc/keepalived/scripts/chk_ngx.sh  ##新建脚本文件
-------------------------------写入以下内容--------------------------
#!/bin/bash#此脚本为检测nginx状态,如果正常则退出0,nginx服务未开启则会自动启动一次,如果启动失败则退出返回1
STATUS=`netstat -anpt | grep 80 |wc -l`
if [ "$STATUS" -eq 0 ];then
/usr/sbin/nginx     #如果开启当nginx死掉会尝试自动启动一次服务
sleep 4
STATUS=`netstat -anpt | grep 80 |wc -l`if [ "$STATUS" -eq 0 ];then     exit 1  else        exit 0  fi
else    exit 0
fi
[root@Nginx-master /]# chmod +x /etc/keepalived/scripts/chk_ngx.sh #脚本加执行权限
[root@Nginx-master scripts]# systemctl restart keepalived  #启动服务
[root@Nginx-master scripts]# ifconfig |grep -A 2 ens33:1       #查看vip是否配置ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.10.100  netmask 255.255.255.255  broadcast 0.0.0.0
ether 00:0c:29:ab:e3:ca  txqueuelen 1000  (Ethernet)

2.Nginx-backup主机上操作内容
①使用yum方式安装Nginx和keepalived服务程序

[root@Nginx-backup /]# yum install -y nginx keepalived

②配置nginx-master代理服务器,新建一个代理配置文件,检测nginx配置文件语法是否正确并启动Nginx服务

[root@Nginx-backup /]# vim /etc/nginx/conf.d/nginx-backup.conf
upstream tomcat {
server 192.168.10.3:8080 max_fails=2 fail_timeout=2;
server 192.168.10.4:8080 max_fails=2 fail_timeout=2;
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://tomcat;       }
}
root@Nginx-backup /]# nginx -t          #检测NGINX语法nginx: the configuration file
/etc/nginx/nginx.conf syntax is oknginx: configuration file
/etc/nginx/nginx.conf test is successful
root@Nginx-backup /]# nginx            #启动NGINX服务
[root@nginx-backup /]# lsof -i:80          ##查看服务是否启动并监听

③配置Nginx-backup的keepalived服务,修改keepalived配置文件,启动keepalived服务

[root@Nginx-backup /]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {  router_id nginx-proxy-slave}vrrp_instance nginx-proxy {    state BACKUP    interface ens33   virtual_router_id 22    priority 99    advert_int 3    authentication {        auth_type PASS        auth_pass nginx-proxy   }    virtual_ipaddress {        192.168.10.100 dev ens33 label ens33:1   }}

④客户端添加一条hosts解析记录www.test.com解析到vip的192.168.10.100,然后使用浏览器访问www.test.com/test.jsp测试页面验证负载均衡是否生效

![测试]验证:
从图中可以看出会话标识符不一样,所以下面将做tomcat的会话保持

二、配置tomcat+redis会话共享

  1. 配置redis-master单机redis服务器,并配置tomcat使用redis缓存会话
  2. ①将redis源码包上传到服务器/usr/src目录下,关闭防火墙,关闭selinux,解压redis源码包,编译并编译安装
 [root@redis-master /]# cd /usr/src/[root@redis-master src]# tar xzvf redis-5.0.5.tar.gz[root@redis-master redis-5.0.5]# yum install -y gcc gcc-c++[root@redis-master redis-5.0.5]# make && make install

②初始化redis配置信息,修改redis配置文件,启动redis服务

[root@redis-master redis-5.0.5]# ./utils/install_server.sh 【一路回车】
[root@redis-master redis-5.0.5]# vim /etc/redis/6379.conf protected-mode no            ##此参数改为no,默认yes的话tomcat无法连接#bind 127.0.0.1                   ##将此参数注释掉,监听所有地址
[root@redis-master redis-5.0.5]# /etc/init.d/redis_6379 start
[root@redis-master redis-5.0.5]# netstat -anpt | grep 6379
12. tcp        0      0 0.0.0.0:6379            0.0.0.0:*     LISTEN      66150/redis-servertcp6       0      0 :::6379                 :::*          LISTEN      66150/redis-server
  1. ③此步骤在两台tomcat服务器同样的操作,将打包对应版本的三个jar包上传到服务器/usr/src目录下,然后复制到tomcat根目录下的lib目录中,修改tomcat下的context.xml配置文件,添加redis配置项
[root@tomcat-node1 /]# cd /usr/src/
[root@tomcat-node1 src]# cp commons-pool2-2.3.jar /usr/local/tomcat/lib/
[root@tomcat-node1 src]# cp tomcat-redis-session-manager-master-2.0.0.jar /usr/local/tomcat8.5/lib/
[root@tomcat-node1 src]# cp jedis-2.7.3.jar  /usr/local/tomcat8.5/lib/
[root@tomcat-node1 src]# vim /usr/local/tomcat8.5/conf/context.xml
 -------------------------修改为以下内容---------------------<?xml version="1.0" encoding="UTF-8"?><Context>    <WatchedResource>WEB-INF/web.xml</WatchedResource>    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />      <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"              host="192.168.10.200"              port="6379"              database="0"             maxInactiveInterval="60" /></Context>
==提示:如果远程redis设置了密码,则就多加一行配置:password="123456"==
[root@tomcat-node1 src]# /usr/local/tomcat/bin/shutdown.sh  ##停止tomcat服务
[root@tomcat-node1 src]# /usr/local/tomcat/bin/startup.sh
    一、安装redis和哨兵服务1、下载redis服务软件包到服务器,解压后并编译安装(主从步骤一样,这里只安装一次)
     [root@centos01 /]# tar xzvf redis-3.2.9.tar.gz [root@centos01 /]# cd redis-3.2.9/[root@centos01 redis-3.2.9]# make && make install [root@centos01 redis-3.2.9]# ./utils/install_server.sh Welcome to the redis service installer            ##一路回车Installation successful!
    2、修改redis配置文件,修改为后台运行、监听所有地址(其他参数按需修改),重启redis服务
[root@centos01 redis-3.2.9]# vim /etc/redis/6379.conf bind 0.0.0.0daemonize yes
[root@centos01 redis-3.2.9]# /etc/init.d/redis_6379 restart3、复制哨兵的配置文件和启动文件到redis安装目录
[root@centos01 redis-3.2.9]# cp sentinel.conf /etc/redis/
[root@centos01 redis-3.2.9]# cp src/redis-sentinel /etc/redis/

二、设置redis主从复制,并配置哨兵监控1、登录slave-redis服务器6和7,将master设置为192.168.10.5

[root@slave /]# redis-cli 127.0.0.1:6379> SLAVEOF 192.168.10.5 6379  ##设置master为10.5
127.0.0.1:6379> INFO Replication

3、修改master和slave服务器的sentinel.conf配置文件(master和slave配置一致)##修改master的哨兵文件

[root@master /]# cd /etc/redis/
[root@master /]# vim /etc/redis/sentinel.conf
port 26379
dir "/tmp"
sentinel monitor mymaster 192.168.10.5 6379 2   #(指定监控的master地址和端口号,1表示多个sentinel同意才进行主从切换)
sentinel down-after-milliseconds mymaster 4000  #(超过多少毫秒连接不到master认定为master死掉)
sentinel failover-timeout my
daemonize yes               #(后台运行)
logfile "/var/log/redis_sentinel.log"     #(日志文件保存路径)
[root@master redis]# ./redis-sentinel sentinel.conf     #启动哨兵服务

三、配置keepalived实现高可用
1、使用yum方式安装keepalived软件包(master和slave都安装)

[root@master redis]# yum install -y keepalived
[root@master redis]# ./redis-sentinel sentinel.conf    #启动哨兵服务2、修改keepalived配置文件10.5上Master配置文件内容

! Configuration File for keepalivedglobal_defs {
router_id redis-10.5            ##设备名称
}
vrrp_instance VI_redis {   state MASTER             ##当前设备为master    interface eth0             ##vip绑定的网卡    virtual_router_id 79          ##备份组id,同一备份组要一致    priority 100             ##优先级,优先级高的成为master    advert_int 3              ##每多少秒进行一次健康检查    authentication {        auth_type PASS       auth_pass redis   }    virtual_ipaddress {        192.168.10.200 dev eth0 label eth0:1   ##vip地址并设置一个网卡别名   }}在10.6、10.7的BACKUP上配置文件内容   ! Configuration File for keepalivedglobal_defs {   router_id redis-10.6}vrrp_script chkmaster {        script "/etc/keepalived/scripts/chkmaster.sh"  #检查当前redis是否为master        interval 3           #每3秒检查一次        weight 2            #当本机为master检测结果返回0,将优先级加2        fall 2              ##检测失败多少次就才认为是真的失败        rise 1                ##检测成功1为就认为是成功的   }vrrp_instance VI_redis {    state BACKUP         #本机的状态信息    interface eth0          #vip绑定的网卡   virtual_router_id 79        ##备份组id,同一备份组要一致    priority 99          ##优先级,优先级高的成为master    advert_int 3          ##每多少秒进行一次健康检查    authentication {        auth_type PASS        auth_pass redis    }    virtual_ipaddress {        192.168.10.200 dev eth0 label eth0:1    }    track_script {          ##调用状态检查       chkmaster    }}
状态检查脚本内容:#!/bin/bashSTATUS=`/usr/local/bin/redis-cli info | grep role:master | wc -l`echo $STATUSif [ "$STATUS" -eq 0 ];then    exit 1else    exit 0fi

在主、从redis上重启keepalived

[root@localhsot~]#systemctl restart keepalive



从上图中可以看出tomcat的sentinel会话已经成功,redis的哨兵模式也已搭建完毕,通过netstat -anpt | grep redis查看redis的26379端口,哨兵则开启!当105上的redis-master down掉后,redis-master将会转移到106或107上,脚本上说明当将测到redis为master,所在服务器上keepalived的优先级将加2,抢占原来主的vip:192.168.10.200

Nginx+tomcat+redis实现高可用负载均衡session共享集群+redis哨兵监控相关推荐

  1. 搭建Keepalived+Nginx高可用负载均衡服务器

    一.服务器搭建策略 单机模式: 只有一台应用服务器,组成一个单机模式 优点:简单方便(搭建.运营.维护) 缺点:不能出故障(停电.断网.系统崩溃.硬件老化.性能瓶颈) 应用场景:小型项目(几十个人) ...

  2. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

  3. Keepalived+Nginx实现高可用负载均衡集群

    转载自 https://www.cnblogs.com/mrlapulga/p/6857294.html 一 环境介绍 1.操作系统 CentOS Linux release 7.2.1511 (Co ...

  4. Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

    Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Kee ...

  5. 高可用负载均衡反向代理服务

    高可用负载均衡&反向代理服务 概念简介 什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. ...

  6. 汇总-13台虚拟机搭建一个高可用负载均衡集群架构

    要求 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,具体需求如下. 设计你认为合理的架构,用visio把架构图画出来 搭建lnmp.tomcat+jdk环境 三个站点分别为:dis ...

  7. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  8. ngnix+keepalived 实现N主高可用负载均衡web群集

    ngnix+keepalived 实现N主高可用负载均衡web群集 思路: 总结一下最近学习的nginx+keepalived 的负载均衡架构,发现linux的群集系统都是负载均衡层加服务器群组层,实 ...

  9. RHCS套件实现高可用负载均衡集群(三)——共享存储

    注:此博文在博文"RHCS套件实现高可用负载均衡集群(二)"的基础上完成 实验开始前设置实验环境 target端配置--server3 [root@server3 ~]# yum ...

最新文章

  1. 【Android】CM在repo中使用local manifest
  2. 微软软件保护平台 白皮书.pdf
  3. linux内核启动过程2:保护模式执行流程
  4. python如何使用geotools_Python pygeotools包_程序模块 - PyPI - Python中文网
  5. python 货币合适_算法之Python实现 - 001 : 换钱的最少货币数
  6. BP(反向传播)神经网络
  7. erlang 读取confg文件异常 could not start kernel pid error in config file
  8. 近期工作:规则引擎/专家系统
  9. 华为笔试题大全(史上最齐全)
  10. 个人介绍网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
  11. matlab3维傅里叶变换,MATLAB 分数傅里叶变换三维图像
  12. 华硕主板装系统蓝屏_华硕台式电脑蓝屏怎么重装系统 华硕台式电脑蓝屏重装系统步骤...
  13. SIFT、SURF、Harris、BRIEF、FAST、DAISY、FAST经典描述子简介
  14. 分享一个漂亮的后台 admin 前端模板
  15. Mysql报错1055
  16. Origami – 简洁轻快的WordPress主题
  17. mysql误删数据恢复操作
  18. 大学毕业标语计算机学院,大学毕业季横幅标语
  19. 第一个完整页面来啦~小米官网
  20. ASIC设计中的分频时钟

热门文章

  1. 金声玉振-数据库技术和生态变革创新的十年
  2. CSS3的网页定位技术(1)——绝对定位
  3. 李维:NLP 工业研发的掌故
  4. ROS 消息描述格式、消息编译、内置消息介绍
  5. 服务器知识:终端连接Linux服务器、重启服务器、重启服务
  6. java 聊天室系统实训总结_Java聊天系统实训报告.doc
  7. Netty 核心组件源码剖析
  8. Kickstarter开源了其移动应用程序,面向小型企业的OpenOffice,以及更多新闻
  9. 《Android 应用 之路》 简易手电筒
  10. Kafka Streams流式原理解析