Using> Server version: Apache Tomcat/7.0.54
Server built: May 19 2014 10:26:15
Server number: 7.0.54.0
OS Name: Linux
OS Version: 3.10.0-327.el7.x86_64
Architecture: amd64
JVM Version: 1.7.0_65-b17
JVM Vendor: Oracle Corporation
启动tomcat
[root@tomcat-1 ~]# /usr/local/tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java
增加文档目录与测试文件
[root@tomcat-1 ~]# mkdir -p /web/webapp1
[root@tomcat-1 ~]# cd /web/webapp1/
[root@ tomcat-1 webapp1]# vi index.jsp
index.jsp内容如下:
tomcat-1
Session serviced by tomcat
Session>
Created on
停止tomcat运行,检查配置文件并启动tomcat
[root@tomcat-1 ~]# shutdown.sh
[root@tomcat-1 ~]# netstat -anpt | grep java
[root@tomcat-1 ~]# catalina.shconfigtest
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java
Using> Nov 16, 2016 1:04:05 AM org.apache.catalina.core.AprLifecycleListenerinit
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Nov 16, 2016 1:04:05 AM org.apache.coyote.AbstractProtocolinit
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Nov 16, 2016 1:04:05 AM org.apache.coyote.AbstractProtocolinit
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Nov 16, 2016 1:04:05 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 534 ms
[root@tomcat-1 ~]# startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java
Using> Tomcat started.
[root@tomcat-1 ~]# netstat -anpt | grep java
tcp6 0 0 :::8009 ::: LISTEN 8180/java
tcp6 0 0 :::8080 :::* LISTEN 8180/java
Tomcat-2节点与tomcat-1节点配置基本类似,只是jvmRoute不同,另外为了区分由哪个节点提供访问,测试页标题也不同(生产环境两个tomcat服务器提供的网页内容是相同的)。其他的配置都相同。
用浏览器访问nginx主机,验证负载均衡
第一次访问的结果
第二次访问的结果
验证健康检查的方法可以关掉一台tomcat主机,用客户端浏览器测试访问。
从上面的结果能看出两次访问,nginx把访问请求分别分发给了后端的tomcat-1和tomcat-2,客户端的访问请求实现了负载均衡,但sessionid并一样。所以,到这里我们准备工作就全部完成了,下面我们来配置tomcat通过redis实现会话保持。
5、安装redis
下载redis源码,并进行相关操作,如下:
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
解压安装redis
[root@redis ~]# tar zxf redis-3.2.3.tar.gz
解压完毕后,现在开始安装,如下:
[root@redis ~]# cd redis-3.2.3/
[root@redis redis-3.2.3]# make&& make install
通过上图,我们可以很容易的看出,redis安装到/usr/local,/usr/local/bin,/usr/local/share,/usr/local/include,/usr/local/lib,/usr/local/share/man目录下。
然后再切换到utils目录下,执行redis初始化脚本install_server.sh,如下:
[root@redis redis-3.2.3]# cdutils/
[root@redisutils]# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redisconfig file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
CliExecutable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
通过上面的安装过程,我们可以看出redis初始化后redis配置文件为/etc/redis/6379.conf,日志文件为/var/log/redis_6379.log,数据文件dump.rdb存放到/var/lib/redis/6379目录下,启动脚本为/etc/init.d/redis_6379。
现在我们要使用systemd,所以在 /etc/systems/system 下创建一个单位文件名字为 redis_6379.service。
[root@redisutils]# vi /etc/systemd/system/redis_6379.service
内容如下:
[Unit]
Description=Redis on port 6379
[Service]
Type=forking
ExecStart=/etc/init.d/redis_6379 start
ExecStop=/etc/init.d/redis_6379 stop
[Install]
WantedBy=multi-user.target
注:这里Type=forking是后台运行的形式
启动redis
[root@redisutils]# systemctl daemon-reload
[root@redisutils]# systemctl enable redis_6379.service
[root@redisutils]# systemctl start redis_6379.service
[root@redisutils]# systemctl status redis_6379.service
● redis_6379.service - Redis on port 6379
Loaded: loaded (/etc/systemd/system/redis_6379.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2016-11-16 21:07:26 CST; 4min 25s ago
Process: 7732 ExecStart=/etc/init.d/redis_6379 start (code=exited, status=0/SUCCESS)
Main PID: 7734 (redis-server)
CGroup: /system.slice/redis_6379.service
└─7734 /usr/local/bin/redis-server 127.0.0.1:6379
Nov 16 21:07:26 redissystemd[1]: Starting Redis on port 6379...
Nov 16 21:07:26 redis redis_6379[7732]: Starting Redis server...
Nov 16 21:07:26 redissystemd[1]: Started Redis on port 6379.
[root@redisutils]# netstat -anpt | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0: LISTEN 7734/redis-server 1
从显示结果可以看到redis默认监听的是127.0.0.1的6379端口
防火墙规则设置
[root@redisutils]# firewall-cmd --permanent --add-port=6379/tcp
success
[root@redisutils]# firewall-cmd --reload
success
现在来查看redis版本使用redis-cli –version命令,如下
[root@redisutils]# redis-cli --version
redis-cli 3.2.3
通过显示结果,我们可以看到redis版本是3.2.3。
到此源码方式安装redis就介绍完毕。
redis安装完毕之后,我们再来配置redis
设置redis监听的地址,添加监听redis主机的ip
考虑到安全性,我们需要启用redis的密码验证功能requirepass参数
最终redis配置文件如下:
[root@redis ~]# grep -Ev '^#|^$' /etc/redis/6379.conf
bind 127.0.0.1 192.168.31.106
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis_6379.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilenamedump.rdb
dir /var/lib/redis/6379
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
requirepass pwd@123
appendonly no
appendfilename "appendonly.aof"
appendfsynceverysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limitpubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
重新启动redis服务
[root@redis ~]# systemctl restart redis_6379.service
[root@redis ~]# netstat -anpt | grep redis
tcp 0 0 192.168.31.106:6379 0.0.0.0: LISTEN 8418/redis-server 1
redis配置文件配置完毕后,我们来启动redis并进行简单的操作。如下:
[root@redis ~]# redis-cli -h 192.168.31.106 -p 6379 -a pwd@123
192.168.31.106:6379> keys
(empty list or set)
192.168.31.106:6379> set name lisi
OK
192.168.31.106:6379> get name
"lisi"
192.168.31.106:6379>
说明:
关于redis-cli -h 192.168.31.106 -p 6379 -a pwd@123的参数解释%E8%BF%99%E6%9D%A1%E5%91%BD%E4%BB%A4%E6%98%AF%E8%AF%B4%E8%A6%81%E8%BF%9E%E6%8E%A5redis%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8CIP%E6%98%AF192.168.31.106%EF%BC%8C%E7%AB%AF%E5%8F%A3%E6%98%AF6379%EF%BC%8C%E5%AF%86%E7%A0%81%E6%98%AFpwd@123%E3%80%82通过浏览器访问http://192.168.31.141/test.jsp测试页注:以上配置可以参考tomcat docs