Nginx+Tomcat+Redis实现集群搭建
背景: 最近几天一直在琢磨Nginx反向代理以及使用Redis保存session,因为本人对java开发比较熟悉,所以在闲暇之余将公司的一个系统在虚拟机上搭建一个集群。特此总结过程。
一.需要使用的一些Linux命令。
1.1. 查看端口占用程序
netstat -tunlp |grep 22
1.2. 查看服务的pid
ps -ef |grep tomcat
1.3. 根据对应端口杀死进程
kill pid(找到端口号信息后通过pid)
1.4. 查看防火墙的状态
service iptables status
1.5. 开启防火墙
chkconfig iptables on
/etc/init.d/iptables start
service iptables start
1.6. 关闭防火墙
chkconfig iptables off
/etc/init.d/iptables stop
service iptables stop
1.7. 开启80端口
vi /etc/sysconfig/iptables
添加
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
1.8. 禁止指定ip访问80端口
iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
1.9. 只打开22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
1.10 参数讲解:
–A 参数就看成是添加一条规则
–p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端 口的DNS
–dport 就是目标端口,当数据从外部进入服务器为目标端口
–sport 数据从服务器出去,则为数据源端口使用
–j 就是指定是 ACCEPT -接收 或者 DROP 不接收
二.需要安装的软件
Mysql5.1+JDK1.7+Tomcat7+Redis3.0.7+Nginx1.8.1
三.环境
Centos6.5
四.安装JDK1.7
4.1.1. 列出所有jdk版本
yum list java*
4.1.2. 安装
yum install java-1.7.0-openjdk.x86_64
4.2.1. 查看自带版本
rpm -qa|grep jdk
4.2.2. 安装
rpm -ivh jdk-7u40-linux-i586.rpm
4.3.1. 配置环境变量
vim ~/.bashrc;vim /etc/profile
配置过程略
五.安装Mysql
1.系统自带mysql版本过低
yum update 更新试试没有放弃吧
2.通过wget下载后rpm安装
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar(可以去官网下载)
tar -xvf 解压后rpm -ivh 安装
六. Mysql 初始化密码
My.cnf是mysql的配置文件可以配置mysql的字符集,大小写敏感等,还可以加入
[mysqld]
skip-grant-tables
重启服务进入无密码方式进入mysql
use user;
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
FLUSH;
quit;
七. 安装Redis
1. 下载
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
2. 解压
tar -zxvf redis-3.0.7.tar.gz
3. 安装
1. cd redis-3.0.7
2.ll
已经有Makefile,直接可以用make安装
make&&make install
再试试: make MALLOC=libc
redis-cli
八. 将Tomcat的session存储到redis中已达到在集群下用户session的数据一致性。
1. 将所需的jar导入tomcat7的bin中
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manager-2.0.0.jar
2. 在./conf/context.xml做以下配置
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- tomcat-redis-session共享配置 -->
<Valve className="com.orangefunction.tomcat.redissessions
.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions
.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />
<!----------------------------- -->
</Context>
以上配置参数很容易明白什么意思。配置完成后最好重启tomcat7看看日志信息了解是否配置成功。
九. 下载安装nginx-1.8.1稳定版(可以去官网找到下载路径)
1.下载安装包
wget http://nginx.org/download/nginx-1.8.1.tar.gz
2. 解压
tar-zxvf nginx-1.8.1.tar.gz
3. 安装
可以看到里面有个configuer文件那么直接编译安装即可。
./configure
错误原因没有找到pcre-**需要指定pcre路径
查找:find/-name fileName没有找到需要安装
yum remove pcre*
yum list pcre*
yum install pcre*
make && make install
安装完成
十.配置启动
1. 启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2.查看是否启动
ps -ef | grep nginx
或浏览器访问http://127.0.0.1
3. 关闭nginx
ps -ef |grep nginx
kll 5578(杀掉进程)
4. 配置nginx实现反向代理
vim /usr/local/nginx/conf/nginx.conf
下面是配置信息:
#Nginx所用用户和组,window下不指定
#user maybo maybo;
#工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes 2;
#错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#指定pid存放文件
pid logs/nginx.pid;
events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
#use epoll;
#允许最大连接数
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
#定义日志格式
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log off;
access_log logs/access.log;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 75 20;
include gzip.conf;
upstream localhost {
#根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#ip_hash;
server localhost:8080;
server localhost:8088;
}
server {
listen 80;
server_name localhost;
location / {
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://localhost;
}
}
}
以上是配置文件内容
5. 测试文件的正确性
nginx -t -c /usr/local/nginx/conf/nginx.conf
6. 在重新启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
Nginx+Tomcat+Redis实现集群搭建的更多相关文章
- nginx+tomcat+redis的集群+session共享
nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...
- 同主机下Docker+nginx+tomcat负载均衡集群搭建
想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...
- Redis本地集群搭建(5版本以上)
Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...
- redis的集群搭建(很详细很详细)
说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...
- linux环境下redis安装(redis伪集群搭建)
redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- Redis笔记-集群搭建
Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...
随机推荐
- Hibernate 中一对多和多对多映射
1. 一对多映射 1.1 JavaWeb 一对多建表原则 多方表的外键指向一方表的主键; 1.2 编写一对多的 JavaBean // 客户(一方)和联系人(多方) // 客户(一方) JavaBea ...
- SpringMVC是单例的,高并发情况下,如何保证性能的?
首先在大家的思考中,肯定有影响的,你想想,单例顾名思义:一个个排队过... 高访问量的时候,你能想象服务器的压力了... 而且用户体验也不怎么好,等待太久~ 实质上这种理解是错误的,Java里有个A ...
- 解决:JQuery "Uncaught ReferenceError: $ is not defined"错误
重登了一下emo项目,发现新建朋友功能出了问题:MultiValueDictKeyError.查看了一下报错提示,发现ajax中发送的数据包中少了两个参数. 于是调试js前端,发现console报错: ...
- 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:
我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...
- Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法
Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Android图片加载框架Picasso最全使用教程4
通过前几篇的学习,我们已经对Picasso的加载图片的用法有了很深的了解,接下来我们开始分析Picasso为我们提供的其他高级功能及内存分析,Let’sGo ! Picasso进行图片的旋转(Rota ...
- mysql中变量的定义
mysql中的变量定义 mysql的变量分为系统变量和用户变量,mysql系统定义的变量是系统变量,用户自己定义的变量为用户变量.对于系统变量,用户只能够改变它的值不能够创建新的系统变量.对于用户变量 ...
- django基础2: 路由配置系统,URLconf的正则字符串参数,命名空间模式,View(视图),Request对象,Response对象,JsonResponse对象,Template模板系统
Django基础二 request request这个参数1. 封装了所有跟请求相关的数据,是一个对象 2. 目前我们学过1. request.method GET,POST ...2. reques ...
- Spark --idea无法new scala class
问题: 无法新建Scala class 解决: 1.下载插件 setting-->Plugins-->安装scala插件-->提示重启idea-->自动提示你安装scala s ...
- 学习地址 hadoop生态圈
http://my.oschina.net/leejun2005/blog/140462 http://www.codelast.com/?p=3621&cpage=1#comment-361 ...