×

linux redis集群 nginx Linux keepalived

Linux配置nginx及其redis

我的笔记 我的笔记 发表于2018-10-29 09:30:15 浏览3765 评论0

抢沙发发表评论

一.修改启动web服务器

在192.168.153.113和192.168.153.114上分别解压修改tomcat的index页面:

viwebapps/ROOT/index.jsp

修改页面html部分

<html>

<head>

</head>

 

<body>

SessionID:<%=session.getId()%>

<br/>

SessionIP:<%=request.getServerName()%>

<br/>

<h1>tomcat1 page</h1>

</body>

</html>

这样可以通过访问index来判断访问是不是轮询的

 

前期准备,

 修改ip

a;修改主机名,

b;修改网关能上网,

c;关闭防火墙

d;修改系统安全设置

1、/usr/sbin/sestatus -v     ##如果SELinux status参数为enabled即为开启状态

SELinux status:                 enabled

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件  

将SELINUX=enforcing改为SELINUX=disabled  

重启机器即可。  

二.安装配置nginx

1.安装GCC编译器等工具:

一、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

二、首先要安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2、解压安装包:

[root@bogon src]# tar zxvf pcre-8.35.tar.gz

3、进入安装包目录

[root@bogon src]# cd pcre-8.35

4、编译安装 

[root@bogon pcre-8.35]# ./configure

[root@bogon pcre-8.35]# make && make install

5、查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

 

2.下载安装Nginx:

CentOS 6.7下配置 yum 安装 Nginx

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo

cd /etc/yum.repos.d/

 

vim nginx.repo

填写如下内容:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/6/$basearch/

gpgcheck=0

enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

下面直接执行如下指令即可自动安装好Nginx:

yum install nginx -y

安装完成,下面直接就可以启动Nginx了:

service nginx start

现在Nginx已经启动了,直接访问服务器就能看到Nginx欢迎页面了的。



3.配置Nginx.conf

配置文件二个nginx负载均衡器的文件一样

user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
      upstream myServer{      
   
   server 192.168.153.160:8080;      
      server 192.168.153.161:8080;     

    }     
     server {    
        listen       80;    
      
  server_name 192.168.153.222; 
    
        #charset koi8-r;    
    
        #access_log  logs/host.access.log  main;    
    
        location / {     
          proxy_pass  http://myServer;      
        }


    
    }

    include /etc/nginx/conf.d/*.conf;
}


 


这里面配置较多,其中比较有用的已经标红了,可以直接将此部分配置在默认的nginx的配置文件里面即可




三.安装及配置keepalived

1.安装keepalived

在两台nginx服务器安装keepalived:

 

 

通过yum –y install keepalived 来代替,不同安装方式而已,不是重点

二台Nginx上keepalived.conf配置文件如下配置完成后分别service keepalived start启动检验keepalived配置是否成功

两台keepalived的配置如下:可以看出两者之间的区别仅仅是主备的权重不同,主为100备为66,其余一些有作用的配置已经用红色标注

主:

 


global_defs {

   notification_email {

     test@163.com

   }

   notification_email_from keepalived@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_MASTER

}

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh"

interval 2                           #(检测脚本执行的间隔)

weight 2

}

vrrp_instance VI_1 {

   #state MASTER

    state BACKUP

    nopreempt                      

    #设置非抢占模式时,修改“state MASTER”为“state BACKUP”,添加“nopreempt“

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

}

track_script {

chk_http_port            #(调用检测脚本)

}

    virtual_ipaddress {

        192.168.153.222

    }

}

备: 

 


global_defs {

   notification_email {

     test@163.com

   }

   notification_email_from keepalived@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_BACKUP

}

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh"

interval 2                           #(检测脚本执行的间隔)

weight 2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 66

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

}

track_script {

chk_http_port            #(调用检测脚本)

}

    virtual_ipaddress {

        192.168.153.222

    }

}

以下是针对nginx状态进行检测的脚本,第一次nginx服务死掉时,会重新启动,如果Nginx服务无法正常启动,则杀掉keepalived进程

vim  /usr/local/src/check_nginx_pid.sh

 


#!/bin/bash

A=`ps -C nginx --no-header |wc -l`       

if [ $A -eq 0 ];then                           

      /usr/local/nginx/sbin/nginx       

      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then 

              killall keepalived                   

      fi

fi

 

Ok,开始nginx负载均衡测试,停掉其中一台的任何服务,不影响整个系统的运作

添加系开机启

chkconfig --add keepalived

chkconfig  --level 23456 keepalived on

  92  chkconfig keepalived on
   93  chkconfig nginx  on

四.测试

依次启动两个tomcat=》启动两个nginx=》启动两个keepalived,查看主机上是否有虚拟ip192.168.15.135

通过虚拟ip访问nignx,看页面是不是轮询两个tomcat

将主机的nginx进程kill掉,看看vip是不是切换到备机器上了

访问虚拟ip是不是还能轮询访问tomcat

 

 

service nginx restart

 

service keepalived stop

 

tail -f /var/log/messages

 

 

keepalived 配置的网卡名称不对

 

chkconfig --add keepalived

chkconfig --level 23456 keepalived on

-level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关闭。

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

错误:[alert] 3790#3790: setrlimit(RLIMIT_NOFILE, 51200) failed (13: Permission denied)

 

vi /etc/security/limits.conf 底部加上 
* soft nofile 51200 
* hard nofile 51200 
scp /etc/security/limits.conf 192.168.153.111:/etc/security/
vi /etc/sysctl.conf 
底部添加 
fs.file-max=51200

scp /etc/ sysctl.conf 192.168.153.111: /etc/

 

错误:failed (13: Permission denied) while reading upstream(巨坑)

 

1、/usr/sbin/sestatus -v     ##如果SELinux status参数为enabled即为开启状态

SELinux status:                 enabled

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件  

将SELINUX=enforcing改为SELINUX=disabled  

重启机器即可。  

 

 

配置状态监控:

在nginx.conf中配置如下:

location /nginx_status {

           stub_status on;

           auth_basic "NginxStatus";

           auth_basic_user_file /usr/local/nginx/htpasswd;

           #allow 127.0.0.1;

           #deny all;

       }

 

然后运行下面的命令:

printf "admin:$(openssl passwd -crypt 123456)\n" >>/usr/local/nginx/htpasswd

 

最后在浏览器地址栏中输入:

http://192.168.153.111/nginx_status

 

输入用户名和密码:

效果如下图:

 

 

在192.168.153.111上面安装memcached

yum -y install memcached

 

启动memcached服务

services memcached start

检查服务是否正常启动

[root@server1 etc]# ps -ef | grep memcached

494      11771      1  0 11:49 ?        00:00:00 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

root     11789   4401  0 11:49 pts/1    00:00:00 grep memcached

[root@server1 etc]# netstat -anp | grep mem

tcp       0      0 0.0.0.0:11211              0.0.0.0:*                  LISTEN      11771/memcached   

tcp       0      0 :::11211                   :::*                       LISTEN      11771/memcached   

udp       0      0 0.0.0.0:11211              0.0.0.0:*                              11771/memcached   

udp       0      0 :::11211                   :::*                                   11771/memcached   

 

 

C:\Users\teacher>telnet 192.168.153.111 11211

 

stats

 

 

配置tomcat的配置文件。

context.xml

server.xml

 

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

       memcachedNodes="n1:192.168.153.111:11211"

   sticky="false"

   lockingMode="auto"

   sessionBackupAsync="false"

       requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

   sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

 

 

======================server.xml===================

<Engine name="Catalina" defaultHost="localhost">

     jvmRoute="tomcatRoute1"

 

导入jar包。推荐使用maven自动下载

   <groupId>de.javakaffee.msm</groupId>

    <artifactId>memcached-session-manager</artifactId>

    <version>2.1.1</version>

    </dependency>

    <dependency>

    <groupId>de.javakaffee.msm</groupId>

    <artifactId>memcached-session-manager-tc7</artifactId>

    <version>2.1.1</version>

 

</dependency>

<dependency>

    <groupId>de.javakaffee.msm</groupId>

    <artifactId>msm-kryo-serializer</artifactId>

    <version>2.1.1</version>

</dependency>

重新启动tomcatsessionID不变

 

 

 =========================================================================

使用redis实现session一致性

yum install epel-release -y

yum install redis -y

[root@server2 ~]# service redis status

redis-server is stopped

[root@server2 ~]# service redis start

Starting redis-server:                                    [  OK  ]

[root@server2 ~]#

 

 

[root@server2 ~]# netstat -anp | grep redis

tcp       0      0 127.0.0.1:6379             0.0.0.0:*                  LISTEN      47886/redis-server

[root@server2 ~]#

 

修改配置文件/etc/redis.conf

 

将127.0.0.1修改为192.168.153.115

重启服务

[root@server2 ~]# service redis restart

Stopping redis-server:                                    [  OK  ]

Starting redis-server:                                    [  OK  ]

 

 

配置tomcat配置文件

 

/usr/local/tomcat7/conf/context.xml

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

        host="192.168.153.115"

        port="6379"

        database="0"

        maxInactiveInterval="60" />

 

上传jar包

 

重启tomcat

 

 

 

重启nginx服务

[root@server1 ~]# service nginx restart

Stopping nginx:                                           [  OK  ]

Starting nginx:                                           [ OK  ]

备份机同样

 

 

 ==========================

设置redis主备切换

在备机192.168.153.116的redis.conf中加下面配置


slaveof 192.168.153.115 6379



我的笔记博客版权我的笔记博客版权