背景: 最近几天一直在琢磨Nginx反向代理以及使用Redis保存session,因为本人对java开发比较熟悉,所以在闲暇之余将公司的一个系统在虚拟机上搭建一个集群。特此总结过程。

Linux命令。

查看端口占用程序

  

netstat -tunlp |grep 22

查看服务的pid

   

ps -ef |grep tomcat

根据对应端口杀死进程

找到端口号信息后通过pid)

查看防火墙的状态

    

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

禁止指定ip访问80端口

   

iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP

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

列出所有jdk版本

        yum list java*

 

nginx redis 限流 nginx redis集群_运维

安装

        yum install java-1.7.0-openjdk.x86_64

查看自带版本

        rpm -qa|grep jdk

     

nginx redis 限流 nginx redis集群_操作系统_02

安装

        rpm -ivh jdk-7u40-linux-i586.rpm

    4.3.1. 配置环境变量

        vim ~/.bashrc;vim /etc/profile

        配置过程略

  五.安装Mysql

系统自带mysql版本过低

更新试试没有放弃吧

wget下载后rpm安装

       wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar(可以去官网下载)

解压后rpm -ivh 安装

初始化密码

是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

nginx redis 限流 nginx redis集群_操作系统_03

Makefile,直接可以用make安装

 

        make&&make install

 

      再试试: make MALLOC=libc

               

nginx redis 限流 nginx redis集群_运维_04

    redis-cli

 

Tomcat的session存储到redis中已达到在集群下用户session的数据一致性。

将所需的jar导入tomcat7的bin中

     

commons-pool2-2.2.jar
       jedis-2.5.2.jar
       tomcat-redis-session-manager-2.0.0.jar

在./conf/context.xml做以下配置

     

<Context>  
          <WatchedResource>WEB-INF/web.xml</WatchedResource>

共享配置 -->  

      

<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

      

nginx redis 限流 nginx redis集群_操作系统_05

    3. 安装

configuer文件那么直接编译安装即可。

      ./configure

              

nginx redis 限流 nginx redis集群_数据库_06

需要指定pcre路径

find/-name fileName没有找到需要安装

       

yum remove pcre*
        yum list pcre*
        yum install pcre*
        make && make install

  安装完成

  十.配置启动

nginx

    

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    2.查看是否启动

        

ps -ef | grep nginx

    或浏览器访问http://127.0.0.1

       

nginx redis 限流 nginx redis集群_数据库_07

nginx

ps -ef |grep nginx

杀掉进程)

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;  
            }  
              
   }  
}

以上是配置文件内容

 

测试文件的正确性

 

nginx -t -c /usr/local/nginx/conf/nginx.conf

在重新启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf