一、搭建Tomcat,并基于memcached实现会话共享
1.实验的拓扑图
2. 搭建Tomcat1服务器(192.168.30.100)
- 安装Java JDK
yum install java-1.8.0-openjdk-devel
- 安装Tomcat
yum install tomcat
- 安装示例页面
yum install tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp
-
配置服务
简单测试不做配置 -
准备测试页面
mkdir /var/lib/tomcat/webapps/test/{lib,classed,META-INF,WEB-INF}
vim /var/lib/tomcat/webapps/test/index.jsp
---------------------------------------------------------------------
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
---------------------------------------------------------------------
- 启动服务
systemctl start tomcat
3.搭建Tomcat2服务器(192.168.30.104)
- 安装Java JDK
yum install java-1.8.0-openjdk-devel
- 安装Tomcat
yum install tomcat
- 安装示例页面
yum install tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp
- 准备测试页面
mkdir /var/lib/tomcat/webapps/test/{lib,classed,META-INF,WEB-INF}
vim /var/lib/tomcat/webapps/test/index.jsp
---------------------------------------------------------------------
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="red">TomcatB.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
---------------------------------------------------------------------
- 启动服务
systemctl start tomcat
4.搭建反代服务器(192.168.30.102)
- 安装软件包
yum -y install httpd
- 配置服务
vim /etc/httd/conf.d/tomcat.conf
--------------------------------------------------------------
<Proxy balancer://tomcat>
BalancerMember http://192.168.30.100:8080 loadfactor=1
BalancerMember http://192.168.30.104:8080 loadfactor=1
ProxySet lbmethod=byrequests
</Proxy>
ProxyVia off
ProxyRequests Off
ProxyPass / balancer://tomcat/
ProxyPassReverse / balancer://tomcat/
<Proxy *>
Order Allow,Deny
Allow From All
</Proxy>
<Location />
Order Allow,Deny
Allow From All
</Location>
--------------------------------------------------------------
- 启动服务
systemctl start httpd
- 测试
firefox 192.16.30.102/test/
5.安装和配置Memcached
- 安装软件包
yum -y install memcached
- 查看软件包构成
~]# rpm -ql memcached
/etc/sysconfig/memcached
/usr/bin/memcached
/usr/bin/memcached-tool
/usr/lib/systemd/system/memcached.service
/usr/share/doc/memcached-1.4.15
/usr/share/doc/memcached-1.4.15/AUTHORS
/usr/share/doc/memcached-1.4.15/CONTRIBUTORS
/usr/share/doc/memcached-1.4.15/COPYING
/usr/share/doc/memcached-1.4.15/ChangeLog
/usr/share/doc/memcached-1.4.15/NEWS
/usr/share/doc/memcached-1.4.15/README.md
/usr/share/doc/memcached-1.4.15/protocol.txt
/usr/share/doc/memcached-1.4.15/readme.txt
/usr/share/doc/memcached-1.4.15/threads.txt
/usr/share/man/man1/memcached-tool.1.gz
/usr/share/man/man1/memcached.1.gz
- 配置服务
基本上不用做任何配置
vim /etc/sysconfig/memcached
- 启动服务
systemctl start memcached
- 查看服务端口
它监听的端口:11211/tcp, 11211/udp
~]# ss -tunl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:11211 *:*
udp UNCONN 0 0 *:68 *:*
udp UNCONN 0 0 *:111 *:*
udp UNCONN 0 0 *:835 *:*
udp UNCONN 0 0 :::11211 :::*
udp UNCONN 0 0 :::111 :::*
udp UNCONN 0 0 :::835 :::*
tcp LISTEN 0 128 *:11211 *:*
tcp LISTEN 0 128 *:111 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 :::11211 :::*
tcp LISTEN 0 128 :::111 :::*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 100 ::1:25 :::*
6.msm配置(实验没有成功)
- 下载需要的jar包
参考这个文档下载对应的jar包:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#add-memcached-session-manager-jars-to-tomcat
wget memcached-session-manager-2.3.2
wget memcached-session-manager-tc7-2.3.2
wget spymemcached-2.12.3
- 配置Tomcat
The configuration of tomcat requires two things: you need to drop some jars in your $CATALINA_HOME/lib/ and WEB-INF/lib/ directories and you have to configure the memcached session manager in the related element (e.g. in META-INF/context.xml inside the application files).
cp ~/*.jar /usr/share/tomcat/lib/
cp ~/*.jar /var/lib/tomcat/webapps/test/WEB-INF/lib/
cp /etc/tomcat/context.xml /var/lib/tomcat/webapps/test/WEB-INF/
vim /var/lib/tomcat/webapps/test/WEB-INF/context.xml
------------------------------------------------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<Context path="/test" docBase="/var/lib/tomcat/webapps/test" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.30.103:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
</Context>
------------------------------------------------------------------------------------------------------------
二、搭建mysql服务器,并实现主从复制
- 修改配置文件
vim /etc/my.cnf
[mysqld]
log_bin=log-bin
server_id=1
innodb_file_per_table
skip_name_resolve=on
- 数据备份
mysqldump -A -F --single-transaction --master-data=1 --flush-privileges > /backups/full_backup.sql
- 创建主从复制的帐号和权限
mysql> grant replication slave on *.* to rpl_user@'192.168.30.%' identified by 'test';
- 修改配置文件
vim /etc/my.cnf
[mysqld]
innodb_file_per_table=on
skip_name_resolve=on
server_id=11
relay_log=relay-log
read_only=on
- 使用主服务器的备份数据还原数据库
mysql < /backups/full_backup.sql
- 设置从服务器复制帐号
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.30.103',
MASTER_USER='rpl_user',
MASTER_PASSWORD='test',
MASTER_PORT=3306,
MASTER_LOG_FILE='log-bin.000002',
MASTER_LOG_POS=245;
- 开启从服务器复制
mysql> start slave;
- 查看从服务器状态
mysql> show slave status \G
三、搭建mysql服务器,实现数据库的备份和还原
使用Mysqldump 进行备份和还原
它是一种逻辑备份工具
- 备份
mysqldump -A -F --single-transaction --master-data=1 --flush-privileges > /backups/full_backup.sql
- 还原
mysql < /backups/full_backup.sql
使用xtrabackup 进行备份和还原
它是一种物理备份工具
- 安装工具
yum install ./percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
- 查看软件包构成
~]# rpm -ql percona-xtrabackup-24
-------------------------------------------------------------
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-24-2.4.9
/usr/share/doc/percona-xtrabackup-24-2.4.9/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz
-------------------------------------------------------------
- 完全备份
innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
# 示例
innobackupex --user=root /data/backups/base
ll 2019-08-08_09-16-19/
----------------------------------------------------------------
total 18460
-rw-r----- 1 root root 417 Aug 8 09:16 backup-my.cnf
drwxr-x--- 2 root root 20 Aug 8 09:16 helldb
-rw-r----- 1 root root 18874368 Aug 8 09:16 ibdata1
drwxr-x--- 2 root root 4096 Aug 8 09:16 mysql
drwxr-x--- 2 root root 4096 Aug 8 09:16 performance_schema
-rw-r----- 1 root root 20 Aug 8 09:16 xtrabackup_binlog_info
-rw-r----- 1 root root 113 Aug 8 09:16 xtrabackup_checkpoints
-rw-r----- 1 root root 462 Aug 8 09:16 xtrabackup_info
-rw-r----- 1 root root 2560 Aug 8 09:16 xtrabackup_logfile
----------------------------------------------------------------
- 准备还原数据
如果还有增量备份,那这一阶段。需要加上 –redo-only 选项。但是最后一个增量备份不需要加这个选项,都完成后在应用了所有增量数据的完全备份目录,在运行下面的命令。
innobackupex --apply-log /path/to/BACKUP-DIR
# 示例
innobackupex --apply-log 2019-08-08_09-16-19/
ll 2019-08-08_09-16-19/
----------------------------------------------------------------
total 49176
-rw-r----- 1 root root 417 Aug 8 09:16 backup-my.cnf
drwxr-x--- 2 root root 20 Aug 8 09:16 helldb
-rw-r----- 1 root root 18874368 Aug 8 09:21 ibdata1
-rw-r----- 1 root root 5242880 Aug 8 09:21 ib_logfile0
-rw-r----- 1 root root 5242880 Aug 8 09:21 ib_logfile1
-rw-r----- 1 root root 12582912 Aug 8 09:21 ibtmp1
drwxr-x--- 2 root root 4096 Aug 8 09:16 mysql
drwxr-x--- 2 root root 4096 Aug 8 09:16 performance_schema
-rw-r----- 1 root root 20 Aug 8 09:16 xtrabackup_binlog_info
-rw-r----- 1 root root 113 Aug 8 09:21 xtrabackup_checkpoints
-rw-r----- 1 root root 462 Aug 8 09:16 xtrabackup_info
-rw-r----- 1 root root 8388608 Aug 8 09:21 xtrabackup_logfile
----------------------------------------------------------------
- 还原
还原的目标根据 mysql 配置文件 my.cnf 中 datadir=/var/lib/mysql 决定
innobackupex --copy-back /path/to/BACKUP-DIR
# 示例
innobackupex --copy-back /data/backups/base/2019-08-08_09-16-19/
- 修改所有者和所数组
chown -R mysql:mysql /var/lib/mysql