(第二十周作业)
1、搭建Tomcat集群,并通过nginx反向代理访问
需要两台虚拟机
A机:安装tomcat(端口:8080),nginx(端口80) IP地址:192.168.183.164
B机:安装tomcat(端口:8080), IP地址:192.168.183.163
1)A机安装nginx
安装openssl库
# yum install -y openssl openssl-devel
安装gcc:
# yum install gcc-c++
安装 PCRE
# yum install -y pcre pcre-devel
安装zlib库
# yum install -y zlib zlib-devel
下载nginx: nginx-1.14.2.tar.gz
解压,编译安装
# tar -zxvf nginx-1.14.2.tar.gz
# cd nginx-1.14.2
# make && make install
启动nginx
# cd /usr/local/nginx/sbin
# ./nginx
2)A机和B机都要安装tomcat
上传apache-tomcat-8.0.47.0.tar到/root
# cd /root
# tar -xf apache-tomcat-8.0.47.0.tar
# mv apache-tomcat-8.0.47.0 tomcat
启动tomcat服务
# /root/tomcat/bin/startup.sh
查看日志
# tail -f /root/tomcat/logs/catlina.out
等出现Started UP表示启动完成
关闭防火墙
# service firewalld stop
从宿主机打开浏览器来访问http://
修改首页内容让AB机有区别。
3)配置nginx.conf做反向代理
#后端tomcat服务器
upstream apachetomcat {
#这里可以配置多台服务器和端口号
server 192.168.184.163:8080;
server 192.168.184.164:8080;
}
server {
listen 80;
server_name 192.168.184.164;
#定义日志位置
access_log logs/tomcat.access.log main;
error_log logs/tomcat.error.log;
#配置站点根目录会根据完整的URI请求来映射
root html;
#默认页面
index index.html index.htm index.jsp;
#url映射
location / {
root html;
index index.html index.htm;
proxy_pass http://apachetomcat; #proxy_pass配置为:http:// + upstream名称
}
}
访问http://192.168.184.164,观察两次的tomcat页面不一样,说明一会是访问A机,一会是访问B机。
2、搭建Tomcat集群, 配置Session Replication实现Session共享
需要两台虚拟机
A机:安装tomcat(端口:8080),apache(端口80) IP地址:192.168.183.151
B机:安装tomcat(端口:8080), IP地址:192.168.183.150
1)A机安装apache
# yum install httpd -y
# vi /etc/httpd/conf/httpd.conf
#加载以下三个模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#在配置文件末端加入以下代码
ProxyPass / balancer://tomcatcluster/
ProxyPassReverse / balancer://tomcatcluster/
BalancerMember ajp://192.168.183.151:8009 route=a
BalancerMember ajp://192.168.183.151:8009 route=b
2)A机B机安装tomcat
(安装步骤参考第1题的第(2)步)
3)A机B机配置tomcat
先开启网卡的组播地址
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
修改tomcat安装目录下的conf/server.xml
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.183.151"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
上文中tcpListenAddress的值,A机就写A机的IP,B机就写B机的IP。
在tomcat安装目录下webapps子目录中的应用程序里的WEB-INF目录下的web.xml
……
3、搭建mysql服务器,并实现主从复制
需要两台虚拟机
A机:安装mysql(主机),IP:192.168.183.201
B机:安装mysql(从机),IP:192.168.183.202
1)A机B机安装mysql
#yum -y install MariaDB-server MariaDB-client
2)主机A机配置
修改my.cnf配置文件
# vi /etc/my.cnf
[mysqld]
……
log-bin = master-bin
log-bin-index = master-bin.index
server-id = 1
其中log-bin表示二进制日志文件的基本名,log-bin-index 二进制索引文件的文件名,它保存了所有binlog文件的列表,server-id要唯一,master
机与slave从机ID不能相同。
保存配置文件,重启mariadb使配置生效
# systemctl restart mariadb
在主机上创建一个复制用户
# mysql -u root
mysql>CREATE USER repl_user;
mysql>GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'copycopy';
3)从机B机配置
修改my.cnf配置文件
# vi /etc/my.cnf
[mysqld]
……
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
server-id = 2
relay-log和relay-log-index是中继日志文件和中继索引文件的设置
保存配置文件,重启mariadb使配置生效
# systemctl restart mariadb
在从机上创建和运行复制
# mysql -u root
mysql> CHANGE MASTER TO
-> MASTER_HOST = '192.168.183.201',
-> MASTER_PORT = '3306',
-> MASTER_USER = 'repl_user',
-> MASTER_PASSWORD = 'copycopy';
mysql> START SLAVE;
查看复制状态
在A机上
# mysql -u root
mysql>SHOW MASTER STATUS\G
4、搭建mysql服务器,实现数据库的备份和还原
需要一台虚拟机,在上面安装mysql
# yum -y install MariaDB-server MariaDB-client
登录数据库
# mysql -u root
创建数据库
mysql> create databases abc;
mysql> use abc;
mysql>create table `student`(
> `student_id` INT UNSIGNED AUTO_INCREMENT,
> `name` varchar(40) not null,
> `birthday` DATE not null,
> `sport` varchar(255),
> PRIMARY KEY ( `student_id` )
> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入数据
mysql>INSERT INTO `student` ( name,birthday,sport )
> values
> ("zs","2000-08-07","football");
mysql>INSERT INTO `student` ( name,birthday,sport )
> values
> ("ls","2000-09-07","swimming");
mysql>quit;
然后做数据库备份
# mysqldump -uroot --default-character-set=UTF8 abc > /root/abc.sql
备份好后,把数据库删除
# mysql -u root
mysql> drop database abc;
查看是否删除掉
mysql > show databases;
mysql>quit;
然后使用命令进行恢复
# mysql -uroot --default-character-set=UTF8 abc < /root/abc.sql
然后登录数据库查看是否恢复成功
# mysql -u root
mysql> show databases;
mysql>use abc;
mysql>select * from student;