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.薪火相传,即集群中的 ...
随机推荐
- Java I/O(一) NIO概述
基本概念 BIO:是堵塞I/O,无论是磁盘I/O,还是网络I/O,数据在写入OutputStream和InputStream都可能发生堵塞,一旦有堵塞,线程会失去CPU的使用权(堵塞). NIO:简单 ...
- 关于 tf.nn.softmax_cross_entropy_with_logits 及 tf.clip_by_value
In order to train our model, we need to define what it means for the model to be good. Well, actuall ...
- mysql 从零学习
一 .下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download ...
- python2函数
1.函数的定义 函数的定义形式如下: def <name>(arg1,arg2...argN): <statements> 函数的名字必须以字母开头,可以包括下划线.函数的目的 ...
- Cpython支持的进程与线程(Day33)
一.multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分情况使用多进程.python中提供了非常好的多进程包multiprocessing. mul ...
- rsync高级同步
rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份工具.适用于unix/linux/windows等多种操作系统平台. 两台机器拷贝数据scp,nfs(linux之间) ...
- Python(装饰器)
eval 内容从字符串中提取出来,用Python运行一遍__name__得到函数名字 闭包函数 定义: 函数内部定义的函数称为内部函数 该内部函数包含对外部作用域,而不是对全局作用域的名字的引用 那么 ...
- python全栈开发从入门到放弃之元组的内置应用
1.元组的字符类型tuple t=(1,[1,3],'sss',(1,2)) print(type(t)) <class 'tuple'> 2.按索引号取值 t=(1,[1,3],'sss ...
- httpmessageconverter requestbody responsebody
@ResponseBody @RequestMapping("/testHttpMessageConverter") public String testHttpMessageCo ...
- CodeForces - 894E Ralph and Mushrooms (强连通缩点+dp)
题意:一张有向图,每条边上都有wi个蘑菇,第i次经过这条边能够采到w-(i-1)*i/2个蘑菇,直到它为0.问最多能在这张图上采多少个蘑菇. 分析:在一个强连通分量内,边可以无限次地走直到该连通块内蘑 ...