Tomcat+nginx+Keepalived部署实现集群

环境说明:

系统:Centos-7

主机:Centos-7 x3

IP地址:

服务器1(192.168.10.102/24)

服务器2(192.168.10.103/24)

服务器3(192.168.10.104/24)

源码安装包路径:/GZ/

安装路径:/usr/loval/

一、Tomcat安装部署:(全部服务器安装)

1、安装Tomcat,安装之前必须先安装Java,先安装java

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

>1、解压安装java

[root@lzc GZ]# tar zxvf jdk-8u151-linux-x64.tar.gz

>2、配置java

[root@lzc GZ]# mv jdk1.8.0_151/ /usr/local/java

[root@lzc GZ]# vim /etc/profile.d/java.sh

#写入

export JAVA_HOME=/usr/local/java

export PATH=$PATH:$JAVA_HOME/bin

#保存退出

>3、导入环境变量,查看Java版本

[root@lzc GZ]# source /etc/profile.d/java.sh   #导入环境变量

[root@lzc GZ]# java -version  #查看JAVA版本

2、下载安装Tomcat(每台服务器配置Tomcat8080、Tomcat8081)

安装路径:/usr/local/Tomcat/

├── Tomcat8080

        ├── Tomcat8081

>1、下载解压Tomcat

下载地址:https://tomcat.apache.org/download-90.cgi

[root@lzc GZ]# tar
zxvf apache-tomcat-9.0.2.tar.gz

>2、Tomcat安装路径

[root@lzc GZ]# mv apache-tomcat-9.0.2 /usr/local/Tomcat/Tomcat8080

[root@lzc GZ]# mv apache-tomcat-9.0.2 /usr/local/Tomcat/Tomcat8081

>3、修改Tomcat端口号:(修改前先备份 cp
server.xml server.xml.bak)

/usr/local/Tomcat/Tomcat8081/conf

vim server.xml(把8005修改8006)

(8080修改8081)

#保存退出

>4、启动Tomcat

[root@lzc /]#
/usr/local/Tomcat/Tomcat8080/bin/startup.sh

Using CATALINA_BASE:  
/usr/local/Tomcat/Tomcat8080

Using CATALINA_HOME:  
/usr/local/Tomcat/Tomcat8080

Using CATALINA_TMPDIR: /usr/local/Tomcat/Tomcat8080/temp

Using JRE_HOME:       
/usr/local/java

Using CLASSPATH:      
/usr/local/Tomcat/Tomcat8080/bin/bootstrap.jar:/usr/local/Tomcat/Tomcat8080/bin/tomcat-juli.jar

Tomcat started.

[root@lzc /]#
/usr/local/Tomcat/Tomcat8081/bin/startup.sh

Using CATALINA_BASE:  
/usr/local/Tomcat/Tomcat8081

Using CATALINA_HOME:  
/usr/local/Tomcat/Tomcat8081

Using CATALINA_TMPDIR: /usr/local/Tomcat/Tomcat8081/temp

Using JRE_HOME:       
/usr/local/java

Using CLASSPATH:      
/usr/local/Tomcat/Tomcat8081/bin/bootstrap.jar:/usr/local/Tomcat/Tomcat8081/bin/tomcat-juli.jar

Tomcat started.

>5、查看Tomcat端口

[root@lzc /]# netstat -ntpl | egrep ":8080|8081"

tcp6       0     
0 :::8080                
:::*                   
LISTEN      16907/java

tcp6       0     
0 :::8081                
:::*                    LISTEN      17430/java

>6、修改web页面为对应的服务器和端口号

路径:/usr/local/Tomcat/Tomcat8080/webapps/ROOT

[root@lzc ROOT]# pwd

/usr/local/Tomcat/Tomcat8080/webapps/ROOT

[root@lzc ROOT]# more index.jsp

<%@ page session="false"
pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"
%>

<center><H1> 服务器:192.168.10.102
<br>  Tomcat:8080</H1></center>

<hr>

[root@lzc ROOT]# pwd  #复制index.jsp到Tomcat8081

cp index.jsp /usr/local/Tomcat/Tomcat8081/webapps/ROOT/

/usr/local/Tomcat/Tomcat8081/webapps/ROOT

[root@lzc ROOT]# sed -i "s/8080/8081/g"
index.jsp

[root@lzc ROOT]# more index.jsp

<%@ page
session="false" pageEncoding="UTF-8"
contentType="text/html; charset=UTF-8" %>

<center><H1>
服务器:192.168.10.102
<br>  Tomcat:8081</H1></center>

<hr>

>7、访问浏览器测试,http://服务器地址:8080、http://服务器地址:8081,如果出现下图,则说明Tomcat成功启动

>8、扩展内容Tomcat:

启动Tomcat:

[root@lzc]# /usr/local/Tomcat/Tomcat8080/bin/startup.sh

[root@lzc]# /usr/local/Tomcat/Tomcat8081/bin/startup.sh

关闭Tomcat:

[root@lzc]# /usr/local/Tomcat/Tomcat8080/bin/shutdown.sh

[root@lzc]# /usr/local/Tomcat/Tomcat8081/bin/shutdown.sh

或者

[root@lzc]# ps -ef | grep Tomcat8080 |
grep -v grep | awk '{print $2}' | xargs kill -9

shell脚本进程守护:

创建脚本:

[root@lzc shell]# more keeptomcat.sh

#!/bin/bash

#脚本功能每一分钟检测Tomcat进程是否存在

#如Tomcat进程不存在自动重启Tomcat

#Tomcat8080

netstat -ntpl | grep ":8080"

if [ $? -ne 0 ]

then

ps
-ef | grep Tomcat8080 | grep -v grep | awk '{print $2}' | xargs kill -9

sleep
3

/usr/local/Tomcat/Tomcat8080/bin/startup.sh

fi

#Tomcat8081

netstat -ntpl | grep ":8081"

if [ $? -ne 0 ]

then

ps
-ef | grep Tomcat8081 | grep -v grep | awk '{print $2}'

sleep
5

/usr/local/Tomcat/Tomcat8081/bin/startup.sh

fi

添加到定时任务:

[root@lzc shell]# crontab -l

*/1 * * * * /usr/bin/sh
/shell/keeptomcat.sh

2、Nginx安装部署:

 1、 安装pcre

注:安装这个pcre库是为了让nginx支持HTTP
Rewrite模块

创建一个专用的软件工具目录(实际生产环境中一定要养成好的规范习惯)

下载pcre软件(Centos 6版本下载)

[root@lzc GZ]# wget
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

编译安装

[root@lzc GZ]# tar -xvf
pcre-8.38.tar.gz

[root@lzc GZ]# mv pcre-8.38 /usr/local/

[root@lzc GZ]# cd /usr/local/pcre-8.38

[root@lzc pcre-8.38]#  ./configure

[root@lzc pcre-8.38]#  make && make install

2、安装配置Nginx

>1、源码编译安装nginx

[root@lzc]# useradd nginx -s
/sbin/nologin -M

[root@lzc GZ]# wget
http://nginx.org/download/nginx-1.10.1.tar.gz

[root@lzc GZ]# tar zxf
nginx-1.10.1.tar.gz

[root@lzc GZ]# cd nginx-1.14.2/

[root@lzc GZ]# ./configure --user=nginx
--group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module  --with-pcre=/usr/local/pcre-8.38
--without-http_gzip_module

[root@lzc GZ]# make && make
install

>2、配置启动nginx

[root@lzc
GZ]# cd /usr/local/nginx/

[root@lzc
nginx]# tree

├── conf   #nginx配置文件

│   ├── fastcgi.conf

│   ├── fastcgi.conf.default

│   ├── fastcgi_params

│   ├── fastcgi_params.default

│   ├── koi-utf

│   ├── koi-win

│   ├── mime.types

│   ├── mime.types.default

│   ├── nginx.conf

│   ├── nginx.conf.default

│   ├── scgi_params

│   ├── scgi_params.default

│   ├── uwsgi_params

│   ├── uwsgi_params.default

│   └── win-utf

├── html   #web项目代码

│   ├── 50x.html

│   └── index.html

├── logs   #nginx日志

└── sbin   #nginx启动文件

└── nginx

[root@lzc nginx]# ./sbin/nginx  #启动nginx

[root@lzc nginx]# ps -ef | grep nginx    #查看nginx进程

root     
37276      1  0 15:20 ?        00:00:00 nginx: master process
./sbin/ngin

nginx    
37277  37276  0 15:20 ?        00:00:00 nginx: worker process

root     
37327  15908  0 15:22 pts/0    00:00:00 grep --color=auto nginx

[root@lzc
nginx]# netstat -ntpl | grep ":80"   #查看nginx端口号

tcp        0     
0 0.0.0.0:80             
0.0.0.0:*               LISTEN      37276/nginx: master

浏览器访问测试 http://ip地址

>3、配置nginx反向代理

[root@lzc conf]# vim
/usr/local/nginx/conf/nginx.conf   #添加以下内容

#keepalive_timeout  0;

keepalive_timeout  65;

###############################################

upstream tomcat.lzc.com {   
#定义主机池

server 192.168.10.102:8080
weight=1; #按权重的方式进行轮询、数值越大

server 192.168.10.102:8081
weight=1;

server 192.168.10.103:8080
weight=1;

server 192.168.10.103:8081
weight=1;

server 192.168.10.104:8080
weight=1;

server 192.168.10.104:8081
weight=1;

}

###############################################

#gzip 
on;

server {

listen       80;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

proxy_pass http://tomcat.lzc.com;      #将监听到请求转发到这个虚拟地址

root   html;

index  index.jsp index.html index.htm;

}

#保存退出

[root@lzc nginx]# ps -ef | grep nginx |
grep -v grep | awk '{print $2}' | xargs kill 
-9     #杀死nginx进程

[root@lzc nginx]# ./sbin/nginx   #启动nginx

Web页面正常访问到Tomcat项目

>4、扩展内容

关闭nginx:

[root@lzc nginx]# ps -ef | grep nginx |
grep -v grep | awk '{print $2}' | xars kill -9

启动nginx:

[root@lzc /]#
/usr/local/nginx/sbin/nginx

shell脚本进程守护:创建脚本

[root@lzc
shell]# more keepNginx.sh

#!/bin/bash

#脚本功能检测nginx进程是否存在

#如nginx进程不存在自动重启nginx

netstat -ntpl | grep ":80" |
grep nginx

if [ $? -ne 0 ]

then

ps
-ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9

sleep
3

cd
/

/usr/local/nginx/sbin/nginx

fi

添加到定时任务:每分钟执行一次

[root@lzc
shell]# crontab -l

*/1
* * * *  /usr/bin/sh
/shell/keeptomcat.sh  &>/dev/null
2>&1

*/1 * * * *  /usr/bin/sh /shell/keepNginx.sh  &>/dev/null 2>&1

3、Keepalived安装部署:

 

1、环境配置

>1、主Keepalived服务器IP地址 192.168.10.102

>2、备Keepalived服务器IP地址 192.168.10.103

>3、备Keepalived服务器IP地址 192.168.10.104

>4、Keepalived虚拟IP地址     192.168.10.200

 

2、yum安装keepablived

>1、环境说明:

主Keepalived服务器IP地址   192.168.10.102

备Keepalived服务器IP地址   192.168.10.103

备Keepalived服务器IP地址   192.168.10.104

Keepalived虚拟IP地址        192.168.10.200

>2、yum安装配置

[root@lzc /]# yum install openssl-devel
popt* -y

[root@lzc /]# yum install -y keepalived

 

修改配置文件(主)

[root@lzc /]# tree /etc/keepalived/

/etc/keepalived/

├── keepalived.conf

[root@lzc /]# vim
/etc/keepalived/keepalived.conf

 

修改配置文件(备)

[root@lzc /]# tree /etc/keepalived/

/etc/keepalived/

├── keepalived.conf

[root@lzc /]# vim
/etc/keepalived/keepalived.conf

#保存退出

>3、启动keepalived

[root@lzc /]# systemctl
enable keepalived.service
  #加入启动项

[root@lzc /]# systemctl
start keepalived.service
   #启动keepalived

[root@lzc /]# systemctl restart
keepalived.service
#重启keepalived

[root@lzc /]# systemctl stop
keepalived.service
    #停止keepalived

 

>4、验证和测试

#正常ping

 

模拟故障手动stop服务器1(192.168.10.102)的keepalived服务

[root@lzc /]# systemctl stop
keepalived

成功切换到服务器3(192.168.10.104)

由于服务器2服务器3优先级都是99,两者同等的优先级。

Tomcat+nginx+Keepalived部署实现集群的更多相关文章

  1. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  2. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

  3. nginx Keepalived高可用集群

    一.Keepalived高可用 1.简介 Keepalived软件起初是专为LvS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此, ...

  4. Keepalived+Nginx+Tomcat 实现高可用Web集群

    https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...

  5. 同台电脑部署多组Tomcat负载均衡(或集群)

    可能这种需求比较少见,不过如果手上服务器不够用.可以考虑先这么干着.. 具体Tomcat怎么搭集群,就不在这细说了.只写同台电脑部署多组集群需要修改和注意的地方. 一.Apache 先是Apache, ...

  6. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  7. docker 快速部署ES集群 spark集群

    1) 拉下来 ES集群  spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...

  8. Keepalived高可用集群应用

    Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...

  9. 二进制部署kubernetes集群(上篇)

    1.实验架构 1.1.硬件环境 准备5台2c/2g/50g虚拟机,使用10.4.7.0/24 网络 .//因后期要直接向k8s交付java服务,因此运算节点需要4c8g.不交付服务,全部2c2g足够. ...

随机推荐

  1. Redis单线程架构以及工作方式

    一.单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程.其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的每一条到达服务端的命令都不会 ...

  2. Redis实现分布式文件夹锁

    缘起 最近做一个项目,类似某度云盘,另外附加定制功能,本人负责云盘相关功能实现,这个项目跟云盘不同的是,以项目为分配权限的单位,同一个项目及子目录所有有权限的用户可以同时操作所有文件,这样就很容易出现 ...

  3. django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register( ...

  4. CSRF漏洞实战靶场笔记

    记录下自己写的CSRF漏洞靶场的write up,包括了大部分的CSRF实战场景,做个笔记. 0x01 无防护GET类型csrf(伪造添加成员请求) 这一关没有任何csrf访问措施 首先我们登录tes ...

  5. ‎Cocos2d-x 学习笔记(13) ActionEase

    ActionEase是ActionInterval的子类,能够变速执行动作.把内部动作进行了包装,通过传进update的time,加上不同的计算公式,算出新的time,作为内部动作的time,实现了内 ...

  6. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  7. cmake::编译一个工程

    1.编译工程,构建过程产生的临时文件等文件与源码隔离,避免源码被污染. # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 proj ...

  8. 【教程】基于Ubuntu系统的PyTorch虚拟环境配置

    目录 一.PyTorch虚拟环境配置 二.PyTorch虚拟环境使用 三.常用命令 Editor: Veagau Time: 2019/10/17 一.PyTorch虚拟环境配置 该部分操作均在终端( ...

  9. ThreadPoolExecutor使用方法

    先看构造方法 ,ThreadPoolExecutor共4个构造方法: 直接看参数最多的7个参数分别代表: public ThreadPoolExecutor(int corePoolSize, int ...

  10. Visual Studio Code 添加C/C++编译功能

    VS Code作为一个文本/代码编辑器,相较于VS比较轻量化,而且可以支持C/C++.Python等多种语言,并具有丰富的拓展模块. 但是作为一个编辑器,在VS Code上安装C/C++模块之后,并不 ...