第二周-1:简单集群架构的设计和安装
CSDN学习小组–第二周-1
简单集群架构的设计
本次实验的集群架构设计,包含了Nginx进行网站的反向代理,配置MySql实现跨主机数据库的存储和访问,实现通过部署Tomcat到三个主机上进行网站的访问,其中我主要负责MySql的安装和配置,以及确保能够远程连接。
Nginx
简介
Nginx是一款高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,能够实现反向代理与负载均衡。
由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
安装方法
第一步:下载nginx压缩包,可以去Nginx官网下载压缩包
比如:
http://nginx.org/download/nginx-1.18.0.tar.gz
将Nginx压缩包解压到指定目录,比如 /usr/local/ 下
第二步:配置nginx安装所需的环境
- 安装gcc
Nginx的编译依赖 gcc 环境。安装指令如下:
sudo apt install gcc-c++
第三步:编译安装nginx
进入Nginx的目录,使用
make
命令进行Nginx的编译,然后通过
make install
用来安装Nginx
返回 /usr/local/nginx目录下,运行./nginx
重要参数配置
使用gedit打开/usr/local/nginx/conf下的nginx.conf,编辑和修改http部分代码,将网页请求导向至小组三台电脑上
http {
upstream luckDog{
#server 192.168.43.211 weight=1;
server 192.168.43.252:8080 weight=2;
server 192.168.43.185:8080 weight=3;
ip_hash;
}
server {
listen 80;
server_name 192.168.43.51;
location / {
proxy_pass http://luckDog;
index index.html index.html;
proxy_set_header Host $host;
}
}
}
}
Tomcat
简介
Tomcat 服务器是一个免费开源的轻量级Web应用服务器,属于轻量级应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它与Apache服务器是独立运行的,所以运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
安装方法
第一步:下载Tomcat压缩包,可以去Apache Tomcat官网下载压缩包
比如:apache-tomcat-8.5.37.tar.gz
将Nginx压缩包解压到指定目录,比如 /usr/local/ 下,使用
tar -zxvf apache-tomcat-8.5.37.tar.gz /usr/local/
第二步:启动Tomcat
进入Tomcat目录下
进入bin目录,运行./start.sh命令,在浏览器输入:http://localhost:8080/
,回车后,会弹出Tomcat服务页面:
至此,Tomcat配置完毕
MySQL
简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。作为最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件的授权分为社区版和商业版,其中社区版免费,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
安装方法
MySQL针对Linux系统提供了多种安装方式,但是apt仓库安装方式为官方推荐方法,首先使用终端运行
sudo apt-get install mysql-server
之后会有一系列问题,默认为yes选项,之后运行
sudo service mysql status
查看MySQL服务状态,如果状态为
Active:active(running),则表明MySQL服务正常启动
这样一路Next下来,root用户的密码默认为空,需要运行mysql_secure_installation
进行根密码设置,设置好后运行
sudo mysql -u root -p
填写密码,进入MySQL终端
MySQL常用命令
#显示mysql版本
SELECT VERSION();
#显示所有数据库
SHOW DATABASES;
#使用某一个特定数据库
USE student;
#显示所有表
SHOW TABLES;
#显示表结构
DESC stu;
#显示表数据
SELECT * FROM stu;
#插入表数据
INSERT INTO stu(id,NAME) VALUES(1,'john');
#更新表数据
UPDATE stu SET NAME='lilei' WHERE id=100;
#删除表数据
DELETE FROM stu WHERE id=1;
简单集群网页设计和运行
一切准备就绪后,下载eclipse的安装包,将eclipse安装好,新建项目中选中Web->Dynamic Web Project,整体项目如下:
展示数据库简单页面index.jsp代码如下:
<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@page import="java.sql.*"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<pre>
<%
// 声明Connection对象
Connection con;
// 驱动程序名,新版本的mysql connect注意看包名,不是mysql.jdbc,而是mysql.cj.jdbc
String driver = "com.mysql.cj.jdbc.Driver";
// 数据库名
String database="school";
// 表名
String table="student";
// URL指向要访问的数据库名mysql
//serverTimezone=UTC表示服务使用标准时间,即北京时间UTC,
//使用SSL安全连接
String url = "jdbc:mysql://192.168.43.60:3306/"+database+"?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
// MySQL配置时的用户名
String user = "csdn";
// MySQL配置时的密码
String password = "csdn1234";
// 遍历查询结果集
try {
// 加载驱动程序
Class.forName(driver);
//其作用与
// DriverManager.registerDriver(new Driver(driver));;
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed())
out.println("Succeeded connecting to the Database!");
// 2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
// 要执行的SQL语句
String sql = "select * from "+table;
// 3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
out.println("执行结果如下所示:");
// 4.获取元数据,也就是获取其表单的列头信息
ResultSetMetaData metaData=rs.getMetaData();
out.println("-----------------");
for(int i=1;i<=metaData.getColumnCount();i++) {
out.print(metaData.getColumnName(i)+"\t");
}
out.println();
out.println("-----------------");
String col1 = null;
String col2=null ;
while (rs.next()) {
// 获取第一列数据
col1 =rs.getString(1);
// 获取第二列数据
col2 = rs.getString(2);
// 输出结果
out.println(col1 + "\t" + col2 );
}
//6.结果集必须关闭,否则会引发问题
rs.close();
// //删除数据
// String sql1="delete from first where age=16";
// int del=statement.executeUpdate(sql1);
// System.out.println("删除了 id=12 的记录"+del+" 条数据");
//
// //添加数据
// String sql2="insert into first values(null,18,'使用jdbc')";
// int ins=statement.executeUpdate(sql2);
// System.out.println("添加了 "+ins+" 条数据!");
//7.与数据库的连接必须在最后关闭,否则可能会引发无法访问数据库的错误
con.close();
} catch (ClassNotFoundException e) {
// 数据库驱动类异常处理
out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
out.println("数据库数据成功获取!!");
}
%>
</pre>
</body>
</html>
运行结果如下: