文章目录
介绍
二进制安装
jdk安装
[root@tomcat ~]#tar xf jdk-8u291-linux-x64.tar.gz -C /usr/local/
[root@tomcat ~]#cd /usr/local/
[root@tomcat local]#ln -s jdk1.8.0_291/ jdk
tomcat安装
# 下载
[root@tomcat ~]#wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
# 解压
[root@tomcat ~]#tar -xf apache-tomcat-8.5.50.tar.gz -C /usr/local/
# 创建软连接
[root@tomcat local]#ln -s apache-tomcat-8.5.50/ tomcat
添加jdk变量和tomcat变量至环境变量
[root@tomcat ~]#cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
[root@tomcat ~]#cat /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/usr/local/jdk
集成至系统服务中
编写系统服务文件
[root@tomcat ~]#cat /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=mulit-user.target
[root@tomcat ~]#useradd -r -s /sbin/nologin tomcat
[root@tomcat ~]#chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat ~]#systemctl daemon-reload
[root@tomcat ~]#systemctl restart tomcat
查看状态
[root@tomcat ~]#systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2022-06-20 14:42:38 CST; 5s ago
Process: 2120 ExecStop=/usr/local/tomcat/bin/shutdown.sh (code=exited, status=0/SUCCESS)
Process: 2171 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 2179 (java)
CGroup: /system.slice/tomcat.service
└─2179 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.Cl...
Jun 20 14:42:38 tomcat systemd[1]: tomcat.service failed.
Jun 20 14:42:38 tomcat systemd[1]: Starting Tomcat...
Jun 20 14:42:38 tomcat systemd[1]: Started Tomcat.
查看进程
[root@tomcat ~]#ps -aux|grep tomcat
tomcat 2179 11.6 6.9 6463092 128564 ? Sl 14:42 0:02 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 2249 0.0 0.0 112808 968 pts/2 R+ 14:43 0:00 grep --color=auto tomcat
tomcat状态页面
配置文件
[root@www ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>
设置tomcat的gui manager访问权限/白名单
[root@www ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" /> # 仿照前面的127.0.0.1
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
重启服务
[root@www ~]#systemctl restart tomcat.service
实例
JPress
env:
jpress-v3.2.1.war
CentOS Linux release 7.9.2009 (Core)
mysql_version: 5.7.38
jpress官网:jpress.io
从官网下载jpress
[root@tomcat ~]#cd /usr/local/tomcat/webapps/
# 开启了自动解压和自动部署
[root@tomcat webapps]#cp /root/jpress-v3.2.1.war .
[root@tomcat webapps]#ln -s jpress-v3.2.1 jpress
数据库配置
mysql> create database jpress;
Query OK, 1 row affected (0.00 sec)
mysql> create user jpress@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on jpress.* to jpress@'10.0.0.%';
Query OK, 0 rows affected (0.01 sec)
访问web端
在jpress中配置数据库信息
jpress管理后台
多虚拟主机
主机名
[root@kktb ~]#hostnamectl set-hostname www.kktb.org
server配置
[root@www ~]#tail /usr/local/tomcat/conf/server.xml
</Host>
<Host name="web1.kktb.org" appBase="/data/webapps/" unpackWARs="True" autoDeploy="false">
<Value className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="web1_access_log" suffix=".txt" pattern="%h %l %u %t "%r%quot; %s %" />
</Host>
<Host name="web2.kktb.org" appBase="/data/webapps1" unpackWARs="True">
</Host>
</Engine>
</Service>
</Server>
创建虚拟主机数据目录
[root@tomcat conf]#mkdir -pv /data/webapps/ROOT
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/webapps’
mkdir: created directory ‘/data/webapps/ROOT’
[root@tomcat conf]#chown -R tomcat.tomcat /data/webapps
[root@tomcat conf]#echo "web1.kktb.org" > /data/webapps/ROOT/index.html
[root@www ~]#mkdir /data/webapps1/ROOT -pv
mkdir: created directory ‘/data/webapps1/ROOT’
[root@www ~]#chown -R tomcat.tomcat /data/webapps1/
重启服务
[root@www ROOT]#systemctl restart tomcat
测试
hosts配置
[root@ka1 ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.17 www.kktb.org web1.kktb.org web2.kktb.org
[root@ka1 ~]#curl web1.kktb.org:8080/index.htm^C
[root@ka1 ~]#vim /etc/hosts
[root@ka1 ~]#curl web1.kktb.org:8080/index.html
web1.kktb.org
[root@ka1 ~]#curl web2.kktb.org:8080
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<br>
http://web2.kktb.org:8080/
</body>
</html>
nginx实现动静分离代理
动态资源配置至tomcat;静态资源由nginx响应
tomcat配置
部署tomcat的动态资源和静态资源
[root@www ROOT]#echo /usr/local/tomcat/webapps/ROOT/test.html > /usr/local/tomcat/webapps/ROOT/test.html
[root@www ROOT]#echo /usr/local/tomcat/webapps/ROOT/test.jsp > /usr/local/tomcat/webapps/ROOT/test.jsp
[root@www conf.d]#systemctl restart tomcat.service
nginx配置location匹配规则
[root@www conf.d]#cat /etc/nginx/conf.d/static.conf
server {
listen 80;
server_name www.kktb.org;
root /usr/share/nginx/html;
location ~* \.jsp$ {
proxy_pass http://127.0.0.1:8080;
}
}
语法检测&启动
[root@www conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@www conf.d]#systemctl restart nginx
测试
[root@ka1 conf]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.17 www.kktb.org web1.kktb.org web2.kktb.org
[root@ka1 conf]#curl www.kktb.org/test.html
/usr/share/nginx/html/test.html
[root@ka1 conf]#curl www.kktb.org/test.jsp
/usr/local/tomcat/webapps/ROOT/test.jsp
httpd实现AJP协议反向代理
配置主机名
[root@localhost ~]# hostnamectl set-hostname www.kktb.org
查看httpd的模块中是否启用了proxy
[root@www conf.d]#httpd -M|grep proxy
proxy_module (shared)
proxy_ajp_module (shared) #ajp协议
proxy_balancer_module (shared)
proxy_connect_module (shared)
proxy_express_module (shared)
proxy_fcgi_module (shared)
proxy_fdpass_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared) #http代理模块
proxy_scgi_module (shared)
proxy_wstunnel_module (shared)
httpd配置
[root@www data]# cat /etc/httpd/conf.d/http-tomcat.conf
<VirtualHost *:80>
ServerName web1.kktb.org
ProxyRequests Off
ProxyVia On
ProxyPreserveHost Off
# ProxyPass / http://127.0.0.1:8080/
ProxyPass / ajp://127.0.0.1:8009/
# PorxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
重启服务
[root@www conf.d]# systemctl restart httpd
tomcat开启ajp
tomcat5.5.50版本默认开启ajp协议
[root@www ~]# vim /usr/local/tomcat/conf/server.xml
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
端口
[root@www ~]# ss -ntl|grep 8009
LISTEN 0 100 [::]:8009 [::]:*
tomcat虚拟主机配置
[root@www ~]# tail /usr/local/tomcat/conf/server.xml
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="web1.kktb.org" appBase="/data/webapps1/">
</Host>
<Host name="web2.kktb.org" appBase="/data/webapps2/">
</Host>
</Engine>
</Service>
</Server>
虚拟主机数据准备
[root@www ~]# mkdir /data/webapps{1,2}/ROOT -pv
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/webapps1’
mkdir: created directory ‘/data/webapps1/ROOT’
mkdir: created directory ‘/data/webapps2’
mkdir: created directory ‘/data/webapps2/ROOT’
[root@www ~]# echo /usr/local/tomcat/webapps/ROOT/test.html > /usr/local/tomcat/webapps/ROOT/test.html
[root@www ~]# echo /data/webapps1/ROOT/test.html > /data/webapps1/ROOT/test.html
[root@www ~]# echo /data/webapps2/ROOT/test.html > /data/webapps2/ROOT/test.html
# 更改权限
[root@www ~]# chown -R tomcat.tomcat /data/webapps1
[root@www ~]# chown -R tomcat.tomcat /data/webapps2
重启服务
[root@www ~]# systemctl restart tomcat.service
查看状态页
测试
[root@backup ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.47 www.kktb.org web1.kktb.org web2.kktb.org
[root@backup ~]#curl web2.kktb.org/test.html
/data/webapps2/ROOT/test.html
[root@backup ~]#curl web1.kktb.org/test.html
/data/webapps1/ROOT/test.html
[root@backup ~]#curl www.kktb.org/test.html
/usr/local/tomcat/webapps/ROOT/test.html
nginx实现tomcat负载均衡调度
proxy: 10.0.0.7
tomcat1: 10.0.0.17
tomcat2: 10.0.0.47
proxy代理配置
主机名
[root@localhost ~]#hostnamectl set-hostname proxy.kktb.org
nginx配置
[root@proxy ~]#cat /etc/nginx/conf.d/proxy-tomcat.conf
upstream tomcat-server {
server t1.kktb.org:8080;
server t2.kktb.org:8080;
}
server {
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat-server;
}
}
hosts配置
[root@proxy ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7 proxy.kkrb.org proxy
10.0.0.17 t1.kktb.org t1
10.0.0.47 t2.kktb.org t2
[root@proxy ~]#systemctl restart nginx && systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-02 10:18:35 CST; 6ms ago
tomcat1
配置tomcat地址访问
[root@t1 ROOT]#vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<Engine name="Catalina" defaultHost="t1.kktb.org">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="t1.kktb.org" appBase="/data/webapps/"
unpackWARs="true" autoDeploy="true">
网站数据
[root@t1 ROOT]#cat /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + "." + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
数据目录权限
[root@t1 ~]# chown -R tomcat.tomcat /data/webapps
[root@t1 ROOT]#systemctl restart tomcat.service && systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-02 10:14:10 CST; 5ms ago
tomcat2
配置tomcat地址访问
[root@t2 ~]# vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="t2.kktb.org">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="t2.kktb.org" appBase="/data/webapps"
unpackWARs="true" autoDeploy="true">
[root@t2 ~]# systemctl restart tomcat.service && systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-02 10:14:03 CST; 3ms ago
网站数据
[root@t2 ~]# cat /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + "." + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
数据目录权限
[root@t2 ~]# chown -R tomcat.tomcat /data/webapps
[root@t2 ~]# systemctl restart tomcat.service && systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-02 10:14:03 CST; 3ms ago
测试
tomcat session集群
后续补上
session共享服务器
t1
[root@t1 tomcat]#cat /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.37:11211,n2:10.0.0.57:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
[root@t1 tomcat]#vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="t1.kktb.org" jvmRoute="Tomcat1">
<Host name="t1.kktb.org" appBase="/data/webapps/"
unpackWARs="true" autoDeploy="true">
上传包
[root@t1 ~]#ll
total 1276
-rw-r--r-- 1 root root 53259 Jul 2 14:12 asm-5.2.jar
-rw-r--r-- 1 root root 285211 Jul 2 14:12 kryo-3.0.3.jar
-rw-r--r-- 1 root root 126366 Jul 2 14:12 kryo-serializers-0.45.jar
-rw-r--r-- 1 root root 167294 Jul 2 14:12 memcached-session-manager-2.3.2.jar
-rw-r--r-- 1 root root 10826 Jul 2 14:12 memcached-session-manager-tc8-2.3.2.jar
-rw-r--r-- 1 root root 5923 Jul 2 14:12 minlog-1.3.1.jar
-rw-r--r-- 1 root root 38372 Jul 2 14:12 msm-kryo-serializer-2.3.2.jar
-rw-r--r-- 1 root root 55684 Jul 2 14:12 objenesis-2.6.jar
-rw-r--r-- 1 root root 72265 Jul 2 14:12 reflectasm-1.11.9.jar
-rw-r--r-- 1 root root 473774 Jul 2 14:12 spymemcached-2.12.3.jar
启动
[root@t1 ~]#systemctl restart tomcat.service
t2
tomcat配置
上传包
[root@t2 ~]# ls /usr/local/tomcat/lib/
annotations-api.jar catalina-tribes.jar jsp-api.jar msm-kryo-serializer-2.3.2.jar tomcat-coyote.jar tomcat-i18n-ko.jar tomcat-util-scan.jar
asm-5.2.jar ecj-4.6.3.jar kryo-3.0.3.jar objenesis-2.6.jar tomcat-dbcp.jar tomcat-i18n-ru.jar tomcat-websocket.jar
catalina-ant.jar el-api.jar kryo-serializers-0.45.jar reflectasm-1.11.9.jar tomcat-i18n-de.jar tomcat-i18n-zh-CN.jar websocket-api.jar
catalina-ha.jar jasper-el.jar memcached-session-manager-2.3.2.jar servlet-api.jar tomcat-i18n-es.jar tomcat-jdbc.jar
catalina.jar jasper.jar memcached-session-manager-tc8-2.3.2.jar spymemcached-2.12.3.jar tomcat-i18n-fr.jar tomcat-jni.jar
catalina-storeconfig.jar jaspic-api.jar minlog-1.3.1.jar tomcat-api.jar tomcat-i18n-ja.jar tomcat-util.jar
[root@t2 ~]# vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="t2.kktb.org" jvmRoute="Tomcat2">
<Host name="t2.kktb.org" appBase="/data/webapps"
unpackWARs="true" autoDeploy="true">
[root@t2 ~]# vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.37:11211,n2:10.0.0.57:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
启动日志
02-Jul-2022 13:22:01.286 INFO [t2.kktb.org-startStop-1] de.javakaffee.web.msm.serializer.kryo.KryoTranscoder.<init> Starting with initialBufferSize 102400, maxBufferSize 2048000 and defaultSerializerFactory de.javakaffee.web.msm.serializer.kryo.DefaultFieldSerializerFactory
02-Jul-2022 13:22:01.286 INFO [t2.kktb.org-startStop-1] de.javakaffee.web.msm.MemcachedSessionService.startInternal --------
- finished initialization:
- sticky: true
- operation timeout: 1000
- node ids: [n1]
- failover node ids: [n2]
- storage key prefix: null
- locking mode: null (expiration: 5s)
--------
02-Jul-2022 13:22:01.287 INFO [t2.kktb.org-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/data/webapps/ROOT] has finished in [71] ms
02-Jul-2022 13:22:01.288 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
02-Jul-2022 13:22:01.295 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
02-Jul-2022 13:22:01.300 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 472 ms
02-Jul-2022 13:34:29.247 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
02-Jul-2022 13:34:29.248 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
02-Jul-2022 13:34:29.266 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
02-Jul-2022 13:34:29.280 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
m1
时间
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost ~]# chronyc sources -v
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com 3 6 377 29 +1666us[+1666us] +/- 103ms
^- pingless.com 2 6 377 29 -21ms[ -21ms] +/- 131ms
^- ntp1.flashdance.cx 2 6 277 30 +828us[ +828us] +/- 159ms
^* 111.230.189.174 2 6 357 31 -1857us[-2419us] +/- 15ms
memcache
[root@localhost ~]# yum install memcached -y
[root@localhost ~]# yum install libmemcached -y
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl start memcached
[root@localhost ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:11211 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:11211
测试memcache
[root@localhost ~]# memping --server=127.0.0.1
[root@localhost ~]# echo $?
0
m2
同m1配置相同
测试
访问17 tomcat1时候session存储在第二个mem
[root@proxy ~]#./showmemcached.py
------------------------------
(b'10.0.0.37:11211 (1)', {})
(b'10.0.0.57:11211 (1)', {b'21C1C5DCE29818A100AB5FAD0246BA14-n2.Tomcat1': b'[97 b; 1656741336 s]'})
访问47 tomcat2的时候session存储在第一个mem
[root@proxy ~]#./showmemcached.py
------------------------------
(b'10.0.0.37:11211 (1)', {b'21C1C5DCE29818A100AB5FAD0246BA14-n1.Tomcat2': b'[97 b; 1656741120 s]'})
(b'10.0.0.57:11211 (1)', {b'21C1C5DCE29818A100AB5FAD0246BA14-n2.Tomcat1': b'[97 b; 1656741681 s]'})
模拟故障
[root@t2 ~]# systemctl stop tomcat
sessionid不会更改